From f9bd5b96596e01574e6349cf9b6cdd02e669f1a4 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Wed, 6 Jan 2021 09:42:14 +0100 Subject: [PATCH 01/63] use robotframework-mocklibrary 0.0.7 and remove patch --- extensions/mockserverlibrary.patch | 59 ------------------------------ requirements.txt | 1 + scripts/docker/Dockerfile | 6 +-- 3 files changed, 2 insertions(+), 64 deletions(-) delete mode 100644 extensions/mockserverlibrary.patch diff --git a/extensions/mockserverlibrary.patch b/extensions/mockserverlibrary.patch deleted file mode 100644 index 8097a9d..0000000 --- a/extensions/mockserverlibrary.patch +++ /dev/null @@ -1,59 +0,0 @@ -diff --git a/src/MockServerLibrary/library.py b/src/MockServerLibrary/library.py -index a9e6227..7ba1eed 100644 ---- a/src/MockServerLibrary/library.py -+++ b/src/MockServerLibrary/library.py -@@ -66,6 +66,9 @@ class MockServerLibrary(object): - match_type = 'STRICT' if exact else 'ONLY_MATCHING_FIELDS' - req['body'] = {'type': body_type, 'json': json.dumps(body), 'matchType': match_type} - -+ if body_type is 'JSON_SCHEMA' and body: -+ req['body'] = {'type': body_type, 'json': json.dumps(body)} -+ - return req - - def create_mock_response(self, status_code, headers=None, body_type='JSON', body=None): -@@ -97,6 +100,42 @@ class MockServerLibrary(object): - - return rsp - -+ def create_mock_http_forward(self, path, delay=1, unit='SECONDS'): -+ """Creates a mock http override forward to be used by mockserver. -+ -+ Returns the http forward in a dictionary format. -+ -+ `path` is the new url where to forward the request -+ -+ `delay` is the delay of the forward action -+ -+ `unit` is the unit of the delay time (default "SECONDS") -+ """ -+ fwd = {} -+ fwd['httpRequest'] = {'path': path} -+ fwd['delay'] = {'timeUnit': unit, 'value': delay} -+ -+ return fwd -+ -+ def create_mock_expectation_with_http_forward(self, request, forward, count=1, unlimited=True): -+ """Creates a mock expectation with request and forward action to be used by mockserver. -+ -+ `request` is a mock request matcher in a dictionary format. -+ -+ `forward` is a mock forward in a dictionary format. -+ -+ `count` is the number of expected requests -+ -+ `unlimited` is a boolean value which, if enabled, allows unspecified number of -+ requests to reply to -+ """ -+ data = {} -+ data['httpRequest'] = request -+ data['httpOverrideForwardedRequest'] = forward -+ data['times'] = {'remainingTimes': int(count), 'unlimited': unlimited} -+ -+ self.create_mock_expectation_with_data(data) -+ - def create_mock_expectation(self, request, response, count=1, unlimited=True): - """Creates a mock expectation to be used by mockserver. - - - diff --git a/requirements.txt b/requirements.txt index 2c8b44f..089875d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ robotframework-dependencylibrary==1.0.0.post1 robotframework-jsonlibrary==0.3 robotframework-jsonschemalibrary==1.0 robotframework-requests==0.5.0 +robotframework-mockserver>=0.0.7 diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile index 6b9bf39..f09948e 100644 --- a/scripts/docker/Dockerfile +++ b/scripts/docker/Dockerfile @@ -42,11 +42,7 @@ RUN pip3 install robotframework RUN DEBIAN_FRONTEND=noninteractive \ && cd /home/etsi/dev/robot \ && pip3 install -r requirements.txt \ - && chmod +x /home/etsi/dev/robot/scripts/* \ - && git clone https://github.com/etsi-cti-admin/robotframework-mockserver \ - && cd robotframework-mockserver \ - && patch -p1 < ../extensions/mockserverlibrary.patch \ - && python3 -m pip install -e . + && chmod +x /home/etsi/dev/robot/scripts/* CMD tail -f /dev/null -- GitLab From 212024a46549a546b735febc13724a6e7771d315 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 15 Jan 2021 19:12:21 +0100 Subject: [PATCH 02/63] fixes RnisQuery_BV --- SRV/RNIS/RnisQuery_BV.robot | 6 +++--- SRV/RNIS/resources/RadioNetworkInformationAPI.robot | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/SRV/RNIS/RnisQuery_BV.robot b/SRV/RNIS/RnisQuery_BV.robot index 2ba3f34..6b0e4cc 100644 --- a/SRV/RNIS/RnisQuery_BV.robot +++ b/SRV/RNIS/RnisQuery_BV.robot @@ -18,7 +18,7 @@ Request RabInfo info ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo Get RabInfo info Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is RabInfos + Check HTTP Response Body Json Schema Is RabInfo Check RabInfo ${response['body']} @@ -30,7 +30,7 @@ Request Plmn info Get PLMN info Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PlmnInfos - Check PlmnInfo ${response['body']} + Check PlmnInfo ${response['body'][0]} Request S1Bearer info @@ -43,7 +43,7 @@ Request S1Bearer info Check HTTP Response Body Json Schema Is S1BearerInfos #log ${response['body']} Check S1BearerInfo ${response['body']} - + Request L2Meas info [Documentation] TC_MEC_SRV_RNIS_019_OK ... Check that the RNIS service returns the L2 measurements information diff --git a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot b/SRV/RNIS/resources/RadioNetworkInformationAPI.robot index 05edc8f..eaa00f0 100644 --- a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot +++ b/SRV/RNIS/resources/RadioNetworkInformationAPI.robot @@ -27,8 +27,7 @@ Check RabInfo log ${received_value} Should Be Equal As Strings ${received_value['appInstanceId']} ${APP_INS_ID} Should Not Be Empty ${received_value['requestId']} - Should Be Equal As Strings ${received_value['cellUserInfo'][0]['ecgi']['cellId']} ${CELL_ID} - + Run Keyword If 'cellUserInfo' in ${received_value} Should Be Equal As Strings ${received_value['cellUserInfo'][0]['ecgi']['cellId']} ${CELL_ID} Check PlmnInfo [Arguments] ${received_value} -- GitLab From 21dc733f1d1655a5e4713a9a892b8b636a10120b Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 22 Jan 2021 13:34:49 +0100 Subject: [PATCH 03/63] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 089875d..a17d6be 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,5 +7,5 @@ RESTinstance==1.0.0rc4 robotframework-dependencylibrary==1.0.0.post1 robotframework-jsonlibrary==0.3 robotframework-jsonschemalibrary==1.0 -robotframework-requests==0.5.0 +robotframework-requests==0.8.0 robotframework-mockserver>=0.0.7 -- GitLab From 88f790e238146066e3a6f1d937d459fe77feb470 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 22 Jan 2021 18:32:48 +0100 Subject: [PATCH 04/63] fix enum on numeric values --- SRV/RNIS/schemas/RabInfo.schema.json | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/SRV/RNIS/schemas/RabInfo.schema.json b/SRV/RNIS/schemas/RabInfo.schema.json index c3be426..bb3c808 100644 --- a/SRV/RNIS/schemas/RabInfo.schema.json +++ b/SRV/RNIS/schemas/RabInfo.schema.json @@ -57,10 +57,7 @@ "properties": { "type": { "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", - "enum": [ - "SEE_DESCRIPTION" - ], - "type": "string", + "type": "number", "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "Enum" }, @@ -152,4 +149,4 @@ "x-etsi-ref": "6.5.3" } } -} \ No newline at end of file +} -- GitLab From adefbacfcdb29079a47046f6ce4df96669df798e Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 22 Jan 2021 18:48:19 +0100 Subject: [PATCH 05/63] make problem details optional on 404 --- SRV/RNIS/RnisQuery_BI_BO.robot | 10 ++++------ SRV/RNIS/environment/variables.txt | 28 ++++++++++++++-------------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/SRV/RNIS/RnisQuery_BI_BO.robot b/SRV/RNIS/RnisQuery_BI_BO.robot index efd22f1..9b0ede3 100644 --- a/SRV/RNIS/RnisQuery_BI_BO.robot +++ b/SRV/RNIS/RnisQuery_BI_BO.robot @@ -28,8 +28,7 @@ Request RabInfo info using non existing cell id ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo Get RabInfo info using non existing cell id Check HTTP Response Status Code Is 404 - Check ProblemDetails 404 - + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_404} == 1 Check ProblemDetails 404 Request Plmn info using wrong parameters [Documentation] TC_MEC_SRV_RNIS_017_BR @@ -48,7 +47,7 @@ Request Plmn info using non existing application id ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo Get PLMN info using non existing application id Check HTTP Response Status Code Is 404 - Check ProblemDetails 404 + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_404} == 1 Check ProblemDetails 404 Request S1Bearer info using wrong parameters @@ -68,7 +67,7 @@ Request S1Bearer info using non existing cell id ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get S1Bearer info using non existing cell id Check HTTP Response Status Code Is 404 - Check ProblemDetails 404 + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_404} == 1 Check ProblemDetails 404 Request L2Meas info using wrong parameters @@ -88,8 +87,7 @@ Request L2Meas info using non existing cell id ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get L2Meas info using non existing cell id Check HTTP Response Status Code Is 404 - Check ProblemDetails 404 - + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_404} == 1 Check ProblemDetails 404 *** Keywords *** Get RabInfo info using wrong parameters diff --git a/SRV/RNIS/environment/variables.txt b/SRV/RNIS/environment/variables.txt index d66fb53..16ec084 100644 --- a/SRV/RNIS/environment/variables.txt +++ b/SRV/RNIS/environment/variables.txt @@ -1,36 +1,36 @@ *** Variables *** -${MEC-APP_SCHEMA} http -#${MEC-APP_HOST} 172.28.4.87 -#${MEC-APP_HOST} 127.0.0.1 -${MEC-APP_HOST} 192.168.56.1 -${MEC-APP_PORT} 8081 +${MEC-APP_SCHEMA} https +#${MEC-APP_HOST} 172.28.4.87 +${MEC-APP_HOST} try-mec.etsi.org +${MEC-APP_PORT} 443 ${SUBSCRIPTION_ID} 7777 ${NON_EXISTENT_SUBSCRIPTION_ID} 6666 ${LINKS_SELF} http://example.com/exampleAPI/rni/v2/subscriptions ${SUBSCRIPTION_HREF_VALUE} cell_changed ${SUBSCRIPTION_TYPE} CELL_CHANGE -${HREF} http://meAppClient.example.com/rni/v1/notifications/cell_change/77777 -${SUBSCRIPTION_VALUE} {'href': '${HREF}', 'subscriptionType': '${SUBSCRIPTION_TYPE}'} -${CELL_ID} 0x800000A -${C_ID} 0xFFFFFFF +${HREF} http://tapqa.plugtests.net:8111/michele/endpoint +${SUBSCRIPTION_VALUE} {'href': 'http://tapqa.plugtests.net:8111/michele/endpoint', 'subscriptionType': 'CELL_CHANGE'} +${CELL_ID} 6060606 +${C_ID} 6060606 ${NOT_EXISTENT_CELL_ID} 0x8000099 -${APP_INS_ID} 01 +${APP_INS_ID} ${APP_ID} 10 ${NOT_EXISTENT_APP_INS_ID} 99 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l -${apiRoot} +${apiRoot} /sbx3l3thqw ${apiVersion} v2 +${PIC_PROBLEM_DETAILS_ON_404} 0 # Notifications variables ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${callback_port} 9091 -${callback_uri} http://192.168.56.103:${callback_port} -${callback_endpoint} /subscriptions +${callback_port} 8111 +${callback_uri} http://tapqa.plugtests.net:8111 +${callback_endpoint} /michele/endpoint ${callback_endpoint_error} /subs_404 ${total_polling_time} 2 min ${polling_interval} 10 sec -- GitLab From 5a6b17d3866b8a525ac0315e3e3cb179e5426d46 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 22 Jan 2021 23:13:25 +0100 Subject: [PATCH 06/63] fix generation of json payloads for subscription creation and update --- SRV/RNIS/RnisSubscriptions_BV.robot | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/SRV/RNIS/RnisSubscriptions_BV.robot b/SRV/RNIS/RnisSubscriptions_BV.robot index f351d34..043685d 100644 --- a/SRV/RNIS/RnisSubscriptions_BV.robot +++ b/SRV/RNIS/RnisSubscriptions_BV.robot @@ -8,7 +8,7 @@ Resource ../../pics.txt Resource ../../GenericKeywords.robot Resource resources/RadioNetworkInformationAPI.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false - +Library String *** Test Cases *** @@ -79,7 +79,10 @@ Post RNIS subscription request Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - ${body} Get File jsons/CellChangeSubscriptionRequest.json + ${body}= Get File jsons/CellChangeSubscriptionRequest.json + ${body}= Replace String ${body} \${HREF} ${HREF} + ${body}= Replace String ${body} \${LINKS_SELF} ${LINKS_SELF} + Log ${body} Post ${apiRoot}/rni/${apiVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -94,7 +97,7 @@ Get Individual RNIS Subscription Get ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} ${output}= Output response Set Suite Variable ${response} ${output} - + Update Individual RNIS Subscription Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 @@ -102,10 +105,13 @@ Update Individual RNIS Subscription Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} ${body} Get File jsons/UpdateCellChangeSubscriptionRequest.json + ${body}= Replace String ${body} \${HREF} ${HREF} + ${body}= Replace String ${body} \${LINKS_SELF} ${LINKS_SELF} + Log ${body} Put ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} ${body} ${output}= Output response Set Suite Variable ${response} ${output} - + Delete Individual RNIS Subscription Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 -- GitLab From 231715dd3d59162959bbfb34313d83214da8f47d Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 22 Jan 2021 23:20:18 +0100 Subject: [PATCH 07/63] fix Mock server headers arguments --- SRV/RNIS/RnisNotifications.robot | 33 +++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/SRV/RNIS/RnisNotifications.robot b/SRV/RNIS/RnisNotifications.robot index 1e1ea97..9a43119 100644 --- a/SRV/RNIS/RnisNotifications.robot +++ b/SRV/RNIS/RnisNotifications.robot @@ -21,8 +21,10 @@ Cell change notification Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 ${json}= Get File schemas/CellChangeNotification.schema.json Log Creating mock request and response to handle Cell change notification - &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/cell_change body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + Create Mock Session ${callback_uri}${callback_port} + &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} + &{appjson_hdrs}= Create Dictionary Content-type=application/json + &{rsp}= Create Mock Response headers=&{appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} Log Verifying results @@ -40,7 +42,8 @@ RAB Establishment notification ${json}= Get File schemas/RabEstNotification.schema.json Log Creating mock request and response to handle RAB establishment notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/rab_est body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{appjson_hdrs}= Create Dictionary Content-type=application/json + &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} Log Verifying results @@ -58,7 +61,8 @@ RAB modification notification ${json}= Get File schemas/RabModNotification.schema.json Log Creating mock request and response to handle RAB modification notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/rab_mod body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{appjson_hdrs}= Create Dictionary Content-type=application/json + &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} Log Verifying results @@ -76,7 +80,8 @@ RAB release notification ${json}= Get File schemas/RabRelNotification.schema.json Log Creating mock request and response to handle RAB release notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/rab_rel body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{appjson_hdrs}= Create Dictionary Content-type=application/json + &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} Log Verifying results @@ -94,7 +99,8 @@ UE measurement notification ${json}= Get File schemas/MeasRepUeNotification.schema.json Log Creating mock request and response to handle UE measurement notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/MeasRepUeNotification body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{appjson_hdrs}= Create Dictionary Content-type=application/json + &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} Log Verifying results @@ -112,7 +118,8 @@ UE timing advance notification ${json}= Get File schemas/MeasTaSubscription.schema.json Log Creating mock request and response to handle UE timing advance notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/MeasTaNotification body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{appjson_hdrs}= Create Dictionary Content-type=application/json + &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} Log Verifying results @@ -130,7 +137,8 @@ UE carrier aggregation reconfiguration notification ${json}= Get File schemas/CaReconfSubscription.schema.json Log Creating mock request and response to handle UE carrier aggregation reconfiguration notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/CaReconfSubscription body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{appjson_hdrs}= Create Dictionary Content-type=application/json + &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} Log Verifying results @@ -148,7 +156,8 @@ S1-U bearer notification ${json}= Get File schemas/S1BearerSubscription.schema.json Log Creating mock request and response to handle S1-U bearer notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/S1BearerSubscription body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{appjson_hdrs}= Create Dictionary Content-type=application/json + &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} Log Verifying results @@ -166,7 +175,8 @@ TC_MEC_SRV_RNIS_009_OK ${json}= Get File schemas/NrMeasRepUeSubscription.schema.json Log Creating mock request and response to handle UE Measurement notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/meas_rep_ue body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + &{appjson_hdrs}= Create Dictionary Content-type=application/json + &{rsp}= Create Mock Response &{appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} Log Verifying results @@ -184,7 +194,8 @@ TC_MEC_SRV_RNIS_009_OK # ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json # Log Creating mock request and response to handle UE Measurement notification # &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint} body_type="JSON_SCHEMA" body=${json} - # &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + #&{appjson_hdrs}= Create Dictionary Content-type=application/json + # &{rsp}= Create Mock Response &{appjson_hdrs} status_code=204 # Create Mock Expectation ${req} ${rsp} # Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} # Log Verifying results -- GitLab From fed4828146681e7646428330e99ea40e60c14e8d Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 29 Jan 2021 17:01:37 +0100 Subject: [PATCH 08/63] fix in mockserver usage --- SRV/RNIS/RnisNotifications.robot | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/SRV/RNIS/RnisNotifications.robot b/SRV/RNIS/RnisNotifications.robot index 9a43119..e1b0f77 100644 --- a/SRV/RNIS/RnisNotifications.robot +++ b/SRV/RNIS/RnisNotifications.robot @@ -10,7 +10,8 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v Library BuiltIn Library OperatingSystem Library MockServerLibrary - +Suite Setup Create Mock Session ${callback_uri}:${callback_port} +Test Teardown Reset All Requests *** Test Cases *** Cell change notification @@ -21,7 +22,6 @@ Cell change notification Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 ${json}= Get File schemas/CellChangeNotification.schema.json Log Creating mock request and response to handle Cell change notification - Create Mock Session ${callback_uri}${callback_port} &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} &{appjson_hdrs}= Create Dictionary Content-type=application/json &{rsp}= Create Mock Response headers=&{appjson_hdrs} status_code=204 @@ -41,7 +41,7 @@ RAB Establishment notification Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 ${json}= Get File schemas/RabEstNotification.schema.json Log Creating mock request and response to handle RAB establishment notification - &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/rab_est body_type="JSON_SCHEMA" body=${json} + &{req}= Create Mock Request Matcher POST ${callback_endpoint}/rab_est body_type="JSON_SCHEMA" body=${json} &{appjson_hdrs}= Create Dictionary Content-type=application/json &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} @@ -60,7 +60,7 @@ RAB modification notification Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 ${json}= Get File schemas/RabModNotification.schema.json Log Creating mock request and response to handle RAB modification notification - &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/rab_mod body_type="JSON_SCHEMA" body=${json} + &{req}= Create Mock Request Matcher POST ${callback_endpoint}/rab_mod body_type="JSON_SCHEMA" body=${json} &{appjson_hdrs}= Create Dictionary Content-type=application/json &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} @@ -79,7 +79,7 @@ RAB release notification Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 ${json}= Get File schemas/RabRelNotification.schema.json Log Creating mock request and response to handle RAB release notification - &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/rab_rel body_type="JSON_SCHEMA" body=${json} + &{req}= Create Mock Request Matcher POST ${callback_endpoint}/rab_rel body_type="JSON_SCHEMA" body=${json} &{appjson_hdrs}= Create Dictionary Content-type=application/json &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} @@ -98,7 +98,7 @@ UE measurement notification Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 ${json}= Get File schemas/MeasRepUeNotification.schema.json Log Creating mock request and response to handle UE measurement notification - &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/MeasRepUeNotification body_type="JSON_SCHEMA" body=${json} + &{req}= Create Mock Request Matcher POST ${callback_endpoint}/MeasRepUeNotification body_type="JSON_SCHEMA" body=${json} &{appjson_hdrs}= Create Dictionary Content-type=application/json &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} @@ -117,7 +117,7 @@ UE timing advance notification Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 ${json}= Get File schemas/MeasTaSubscription.schema.json Log Creating mock request and response to handle UE timing advance notification - &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/MeasTaNotification body_type="JSON_SCHEMA" body=${json} + &{req}= Create Mock Request Matcher POST ${callback_endpoint}/MeasTaNotification body_type="JSON_SCHEMA" body=${json} &{appjson_hdrs}= Create Dictionary Content-type=application/json &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} @@ -136,7 +136,7 @@ UE carrier aggregation reconfiguration notification Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 ${json}= Get File schemas/CaReconfSubscription.schema.json Log Creating mock request and response to handle UE carrier aggregation reconfiguration notification - &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/CaReconfSubscription body_type="JSON_SCHEMA" body=${json} + &{req}= Create Mock Request Matcher POST ${callback_endpoint}/CaReconfSubscription body_type="JSON_SCHEMA" body=${json} &{appjson_hdrs}= Create Dictionary Content-type=application/json &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} @@ -155,7 +155,7 @@ S1-U bearer notification Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 ${json}= Get File schemas/S1BearerSubscription.schema.json Log Creating mock request and response to handle S1-U bearer notification - &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/S1BearerSubscription body_type="JSON_SCHEMA" body=${json} + &{req}= Create Mock Request Matcher POST ${callback_endpoint}/S1BearerSubscription body_type="JSON_SCHEMA" body=${json} &{appjson_hdrs}= Create Dictionary Content-type=application/json &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} @@ -174,9 +174,9 @@ TC_MEC_SRV_RNIS_009_OK Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 ${json}= Get File schemas/NrMeasRepUeSubscription.schema.json Log Creating mock request and response to handle UE Measurement notification - &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/meas_rep_ue body_type="JSON_SCHEMA" body=${json} + &{req}= Create Mock Request Matcher POST ${callback_endpoint}/meas_rep_ue body_type="JSON_SCHEMA" body=${json} &{appjson_hdrs}= Create Dictionary Content-type=application/json - &{rsp}= Create Mock Response &{appjson_hdrs} status_code=204 + &{rsp}= Create Mock Response headers=&{appjson_hdrs} status_code=204 Create Mock Expectation ${req} ${rsp} Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} Log Verifying results -- GitLab From e8e8a7c0dc86f2ee4c1becb2840e9a1417f81d7f Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Wed, 3 Feb 2021 10:28:10 +0100 Subject: [PATCH 09/63] Fix TC_MEC_SRV_RNIS_012_BR schema for _self link --- SRV/RNIS/RnisSubscriptions_BI_BO.robot | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/SRV/RNIS/RnisSubscriptions_BI_BO.robot b/SRV/RNIS/RnisSubscriptions_BI_BO.robot index f513c71..c47a5bf 100644 --- a/SRV/RNIS/RnisSubscriptions_BI_BO.robot +++ b/SRV/RNIS/RnisSubscriptions_BI_BO.robot @@ -8,8 +8,6 @@ Resource ../../GenericKeywords.robot Resource resources/RadioNetworkInformationAPI.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false - - *** Test Cases *** Request RNIS subscription list using bad parameters [Documentation] TC_MEC_SRV_RNIS_011_BR @@ -25,10 +23,9 @@ Create RNIS subscription using bad parameters ... Check that the RNIS service responds with an error when it receives a request to create a new RNIS subscription with a wrong format ... ETSI GS MEC 012 2.1.1, clause 7.6.3.4 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml - Post RNIS subscription request {"CellChangeSubscription": {"subscriptionType": "CelCangeSubscription", "callbackReference": "${HREF}", "_links": {"self": "${LINKS_SELF}"}, "filterCriteria": {"appInsId": "01", "associateId": [{"type": "UE_IPV4_ADDRESS", "value": 1}], "plmn": {"mcc": "01", "mnc": "001"}, "cellId": ["800000"], "hoStatus": "COMPLETED"}, "expiryDeadline": {"seconds": 1577836800, "nanoSeconds": 0}}} + Post RNIS subscription request {"CellChangeSubscription": {"subscriptionType": "CelCangeSubscription", "callbackReference": "${HREF}", "_links": {"self": { "href": "${LINKS_SELF}" } }, "filterCriteria": {"appInsId": "01", "associateId": [{"type": "UE_IPV4_ADDRESS", "value": 1}], "plmn": {"mcc": "01", "mnc": "001"}, "cellId": ["800000"], "hoStatus": "COMPLETED"}, "expiryDeadline": {"seconds": 1577836800, "nanoSeconds": 0}}} Check HTTP Response Status Code Is 400 - *** Keywords *** Get RNIS subscription list with wrong parameter Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 -- GitLab From a6952dbd6b218a5c1f31d406d4b32048eeb0fc43 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Wed, 3 Feb 2021 10:41:19 +0100 Subject: [PATCH 10/63] reverting default configuration override --- SRV/RNIS/environment/variables.txt | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/SRV/RNIS/environment/variables.txt b/SRV/RNIS/environment/variables.txt index 16ec084..da96f99 100644 --- a/SRV/RNIS/environment/variables.txt +++ b/SRV/RNIS/environment/variables.txt @@ -1,15 +1,14 @@ *** Variables *** -${MEC-APP_SCHEMA} https -#${MEC-APP_HOST} 172.28.4.87 -${MEC-APP_HOST} try-mec.etsi.org -${MEC-APP_PORT} 443 +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} my-rnis-example.com +${MEC-APP_PORT} 8080 ${SUBSCRIPTION_ID} 7777 ${NON_EXISTENT_SUBSCRIPTION_ID} 6666 ${LINKS_SELF} http://example.com/exampleAPI/rni/v2/subscriptions ${SUBSCRIPTION_HREF_VALUE} cell_changed ${SUBSCRIPTION_TYPE} CELL_CHANGE -${HREF} http://tapqa.plugtests.net:8111/michele/endpoint -${SUBSCRIPTION_VALUE} {'href': 'http://tapqa.plugtests.net:8111/michele/endpoint', 'subscriptionType': 'CELL_CHANGE'} +${HREF} http://notify-me.com:80/notify +${SUBSCRIPTION_VALUE} {'href': 'http://notify-me.com:80/notify', 'subscriptionType': 'CELL_CHANGE'} ${CELL_ID} 6060606 ${C_ID} 6060606 ${NOT_EXISTENT_CELL_ID} 0x8000099 @@ -20,7 +19,7 @@ ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l -${apiRoot} /sbx3l3thqw +${apiRoot} /example ${apiVersion} v2 ${PIC_PROBLEM_DETAILS_ON_404} 0 @@ -28,9 +27,9 @@ ${PIC_PROBLEM_DETAILS_ON_404} 0 # Notifications variables ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${callback_port} 8111 -${callback_uri} http://tapqa.plugtests.net:8111 -${callback_endpoint} /michele/endpoint +${callback_port} 80 +${callback_uri} http://notify-me.com +${callback_endpoint} /notify ${callback_endpoint_error} /subs_404 ${total_polling_time} 2 min ${polling_interval} 10 sec -- GitLab From a28c0a04cb90716f8fc18c097b0504919d409ca3 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Wed, 3 Feb 2021 11:29:21 +0100 Subject: [PATCH 11/63] fix RnisSubscriptions_BV --- SRV/RNIS/RnisSubscriptions_BV.robot | 11 +++++++---- SRV/RNIS/resources/RadioNetworkInformationAPI.robot | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/SRV/RNIS/RnisSubscriptions_BV.robot b/SRV/RNIS/RnisSubscriptions_BV.robot index 043685d..9f59522 100644 --- a/SRV/RNIS/RnisSubscriptions_BV.robot +++ b/SRV/RNIS/RnisSubscriptions_BV.robot @@ -20,7 +20,9 @@ Request RNIS subscription list Get RNIS subscription list Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is SubscriptionLinkList - Check Subscription ${response['body']} ${SUBSCRIPTION_VALUE} + # The following step is faulty in the design, thus it is commented. It is kept since + # it is required by the Test Purpose TP_MEC_SRV_RNIS_011_OK + # Check Subscription ${response['body']} ${SUBSCRIPTION_VALUE} Create RNIS subscription @@ -28,9 +30,9 @@ Create RNIS subscription ... Check that the RNIS service creates a new RNIS subscription ... ETSI GS MEC 012 2.1.1, clause 7.6.3.4 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml - Post RNIS subscription request CellChangeSubscription + Post RNIS subscription request CellChangeSubscriptionRequest Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is CellChangeSubscriptionRequest + Check HTTP Response Body Json Schema Is CellChangeSubscription Check CellChangeSubscription ${response['body']} @@ -79,7 +81,8 @@ Post RNIS subscription request Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - ${body}= Get File jsons/CellChangeSubscriptionRequest.json + ${json_file} = Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${json_file} ${body}= Replace String ${body} \${HREF} ${HREF} ${body}= Replace String ${body} \${LINKS_SELF} ${LINKS_SELF} Log ${body} diff --git a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot b/SRV/RNIS/resources/RadioNetworkInformationAPI.robot index eaa00f0..f1012b3 100644 --- a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot +++ b/SRV/RNIS/resources/RadioNetworkInformationAPI.robot @@ -19,7 +19,7 @@ Check Subscription Check CellChangeSubscription [Arguments] ${received_value} - Should Be Equal ${received_value['_links']['self']} ${LINKS_SELF} + Should Be Equal ${received_value['_links']['self']['href']} ${LINKS_SELF} Check RabInfo -- GitLab From 064402e86b721d8607857d09eb4fba662f7e116d Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Wed, 3 Feb 2021 11:33:38 +0100 Subject: [PATCH 12/63] fix typo in TC_MEC_SRV_RNIS_019_OK (#29) --- SRV/RNIS/RnisQuery_BV.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SRV/RNIS/RnisQuery_BV.robot b/SRV/RNIS/RnisQuery_BV.robot index 6b0e4cc..10ac929 100644 --- a/SRV/RNIS/RnisQuery_BV.robot +++ b/SRV/RNIS/RnisQuery_BV.robot @@ -51,7 +51,7 @@ Request L2Meas info ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/L2Meas Get Layer2Meas Info Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Layer2MeasInfos + Check HTTP Response Body Json Schema Is L2MeasInfos Check L2MeasInfo ${response['body']} -- GitLab From 1f443de2a7692d747bcc65d48f0c1d6e5ffd7f1f Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Sun, 7 Feb 2021 12:50:03 +0100 Subject: [PATCH 13/63] Updated datamodel for MEC013 --- SRV/RLOCLOOK/PlatRadioNodeLocation.robot | 4 +- .../schemas/AccessPointInfo.schema.json | 245 ++++++ .../schemas/AccessPointList.schema.json | 279 ++++++- .../jsons/CircleNotificationSubscription.json | 28 +- .../CircleNotificationSubscriptionError.json | 28 +- ...CircleNotificationSubscription.schema.json | 184 ++++- .../NotificationSubscriptionList.schema.json | 715 ++++++++++++++++++ .../schemas/TerminalDistance.schema.json | 57 +- ...stanceNotificationSubscription.schema.json | 181 ++++- .../NotificationSubscriptionList.schema.json | 715 ++++++++++++++++++ SRV/UEINFOLOOK/PlatUeInformationLookup.robot | 2 +- .../NotificationSubscriptionList.schema.json | 715 ++++++++++++++++++ .../ZonalTrafficSubscription.schema.json | 99 ++- SRV/UELOCLOOK/schemas/UserInfo.schema.json | 395 ++++++---- SRV/UELOCLOOK/schemas/UserList.schema.json | 395 ++++++---- .../NotificationSubscriptionList.schema.json | 715 ++++++++++++++++++ .../UserTrackingSubscription.schema.json | 81 +- .../NotificationSubscriptionList.schema.json | 715 ++++++++++++++++++ ...riodicNotificationSubscription.schema.json | 121 ++- SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot | 62 ++ SRV/ZOINFOLOOK/README.md | 0 SRV/ZOINFOLOOK/environment/variables.txt | 14 + SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json | 48 ++ SRV/ZOINFOLOOK/schemas/ZoneList.schema.json | 48 ++ 24 files changed, 5463 insertions(+), 383 deletions(-) create mode 100644 SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json create mode 100644 SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json create mode 100644 SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json create mode 100644 SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json create mode 100644 SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json create mode 100644 SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json create mode 100644 SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot create mode 100644 SRV/ZOINFOLOOK/README.md create mode 100644 SRV/ZOINFOLOOK/environment/variables.txt create mode 100644 SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json create mode 100644 SRV/ZOINFOLOOK/schemas/ZoneList.schema.json diff --git a/SRV/RLOCLOOK/PlatRadioNodeLocation.robot b/SRV/RLOCLOOK/PlatRadioNodeLocation.robot index aaa807f..33979d3 100644 --- a/SRV/RLOCLOOK/PlatRadioNodeLocation.robot +++ b/SRV/RLOCLOOK/PlatRadioNodeLocation.robot @@ -25,7 +25,7 @@ TC_MEC_SRV_RLOCLOOK_001_OK Get the access points list ${ZONE_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is AccessPointList - Should Be Equal As Strings ${response['body']['accessPointList']['zoneId']} ${ZONE_ID} + Should Be Equal As Strings ${response['body']['accessPointList']['zoneId']} ${ZONE_ID} TC_MEC_SRV_RLOCLOOK_001_NF @@ -45,7 +45,7 @@ Get the access points list [Arguments] ${zoneId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/zones/${zoneId}/accessPoints + Get ${apiRoot}/${apiName}/${apiVersion}/queries/zones/${zoneId}/accessPoints ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json b/SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json new file mode 100644 index 0000000..9f7ddf5 --- /dev/null +++ b/SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json @@ -0,0 +1,245 @@ +{ + "type": "object", + "properties": { + "accessPointInfo": { + "description": "A type containing access point information.", + "properties": { + "accessPointId": { + "description": "Identifier of access point.", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + }, + "connectionType": { + "description": "The connection type for the access point", + "enum": [ + "Femto", + "LTE-femto", + "Smallcell", + "LTE-smallcell", + "Wifi", + "Pico", + "Micro", + "Macro", + "Wimax", + "Unknown" + ], + "type": "string" + }, + "interestRealm": { + "description": "Interest realm of access point.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "locationInfo": { + "properties": { + "accuracy": { + "description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "accuracyAltitude": { + "description": "Altitude accuracy / uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "accuracySemiMinor": { + "description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "altitude": { + "description": "Location altitude relative to the WGS84 ellipsoid surface.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Float" + }, + "confidence": { + "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "includedAngle": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "innerRadius": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "latitude": { + "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "items": { + "format": "float", + "type": "number" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", + "items": { + "format": "float", + "type": "number" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Float" + }, + "offsetAngle": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "orientationMajorAxis": { + "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "shape": { + "description": "Shape information, as detailed in [14], associated with the reported location coordinate:

1 = ELLIPSOID_ARC

2 = ELLIPSOID_POINT

3 = ELLIPSOID_POINT_ALTITUDE

4 = ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID

5 = ELLIPSOID_POINT_UNCERT_CIRCLE

6 = ELLIPSOID_POINT_UNCERT_ELLIPSE

7 = POLYGON", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "timestamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "uncertaintyRadius": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "velocity": { + "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", + "properties": { + "bearing": { + "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "horizontalSpeed": { + "description": "Horizontal speed, expressed in km/h and defined in [14].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "uncertainty": { + "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "velocityType": { + "description": "Velocity information, as detailed in [14], associated with the reported location coordinate:

1 = HORIZONTAL

2 = HORIZONTAL_VERTICAL

3 = HORIZONTAL_UNCERT

4 = HORIZONTAL_VERTICAL_UNCERT", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "verticalSpeed": { + "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Int" + }, + "verticalUncertainty": { + "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + } + }, + "required": [ + "velocityType", + "bearing", + "horizontalSpeed" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "latitude", + "longitude", + "shape" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "numberOfUsers": { + "description": "Number of users currently on the access point.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "integer" + }, + "operationStatus": { + "enum": [ + "Serviceable", + "Unserviceable", + "Unknown" + ], + "type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "timezone": { + "description": "Time zone of access point.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "dateTimeStamp" + } + }, + "required": [ + "accessPointId", + "connectionType", + "operationStatus", + "numberOfUsers", + "resourceURL" + ], + "type": "object" + } + } +} \ No newline at end of file diff --git a/SRV/RLOCLOOK/schemas/AccessPointList.schema.json b/SRV/RLOCLOOK/schemas/AccessPointList.schema.json index 2f0fb04..18b0a8c 100644 --- a/SRV/RLOCLOOK/schemas/AccessPointList.schema.json +++ b/SRV/RLOCLOOK/schemas/AccessPointList.schema.json @@ -1,11 +1,270 @@ { - "properties": { - "undefinedJsonSchema": { - "type": "string", - "description": "Json Schema for the given object is not yet defined" - } - }, - "required": [ - "undefinedJsonSchema" - ] -} + "accessPointList": { + "description": "A type containing list of access points.", + "properties": { + "accessPoint": { + "description": "Collection of the access point information list.", + "items": { + "description": "A type containing access point information.", + "properties": { + "accessPointId": { + "description": "Identifier of access point.", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + }, + "connectionType": { + "description": "The connection type for the access point", + "enum": [ + "Femto", + "LTE-femto", + "Smallcell", + "LTE-smallcell", + "Wifi", + "Pico", + "Micro", + "Macro", + "Wimax", + "Unknown" + ], + "type": "string" + }, + "interestRealm": { + "description": "Interest realm of access point.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "locationInfo": { + "properties": { + "accuracy": { + "description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "accuracyAltitude": { + "description": "Altitude accuracy / uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "accuracySemiMinor": { + "description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "altitude": { + "description": "Location altitude relative to the WGS84 ellipsoid surface.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Float" + }, + "confidence": { + "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "includedAngle": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "innerRadius": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "latitude": { + "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "items": { + "format": "float", + "type": "number" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", + "items": { + "format": "float", + "type": "number" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Float" + }, + "offsetAngle": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "orientationMajorAxis": { + "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "shape": { + "description": "Shape information, as detailed in [14], associated with the reported location coordinate:

1 = ELLIPSOID_ARC

2 = ELLIPSOID_POINT

3 = ELLIPSOID_POINT_ALTITUDE

4 = ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID

5 = ELLIPSOID_POINT_UNCERT_CIRCLE

6 = ELLIPSOID_POINT_UNCERT_ELLIPSE

7 = POLYGON", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "timestamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "uncertaintyRadius": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "velocity": { + "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", + "properties": { + "bearing": { + "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "horizontalSpeed": { + "description": "Horizontal speed, expressed in km/h and defined in [14].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "uncertainty": { + "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "velocityType": { + "description": "Velocity information, as detailed in [14], associated with the reported location coordinate:

1 = HORIZONTAL

2 = HORIZONTAL_VERTICAL

3 = HORIZONTAL_UNCERT

4 = HORIZONTAL_VERTICAL_UNCERT", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "verticalSpeed": { + "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Int" + }, + "verticalUncertainty": { + "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + } + }, + "required": [ + "velocityType", + "bearing", + "horizontalSpeed" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "latitude", + "longitude", + "shape" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "numberOfUsers": { + "description": "Number of users currently on the access point.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "integer" + }, + "operationStatus": { + "enum": [ + "Serviceable", + "Unserviceable", + "Unknown" + ], + "type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "timezone": { + "description": "Time zone of access point.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "dateTimeStamp" + } + }, + "required": [ + "accessPointId", + "connectionType", + "operationStatus", + "numberOfUsers", + "resourceURL" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AccessPointInfo" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "zoneId", + "resourceURL" + ], + "type": "object" + } +} \ No newline at end of file diff --git a/SRV/UEAREASUB/jsons/CircleNotificationSubscription.json b/SRV/UEAREASUB/jsons/CircleNotificationSubscription.json index 2780574..17b185b 100644 --- a/SRV/UEAREASUB/jsons/CircleNotificationSubscription.json +++ b/SRV/UEAREASUB/jsons/CircleNotificationSubscription.json @@ -1,15 +1,17 @@ { - "address": "acr:10.0.0.1", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://application.example.com/notifications/distance_notifications/123456" - }, - "checkImmediate": "true", - "clientCorrelator": "0123", - "enteringLeavingCriteria": "Entering", - "frequency": "10", - "latitude": "-80.86302", - "longitude": "41.277306", - "radius": "500", - "trackingAccuracy": "10" + "circleNotificationSubscription": { + "clientCorrelator": "0123", + "callbackReference": { + "callbackData": "1234", + "notifyURL": "http://clientApp.example.com/location_notifications/123456" + }, + "address": "acr:10.0.0.1", + "checkImmediate": true, + "enteringLeavingCriteria": "Entering", + "frequency": 10, + "latitude": -80.88, + "longitude": 41.277, + "radius": 500, + "trackingAccuracy": 10 + } } \ No newline at end of file diff --git a/SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json b/SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json index 3f9f6e8..3378803 100644 --- a/SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json +++ b/SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json @@ -1,15 +1,17 @@ { - "address": "acr:10.0.0.1", - "callback": { - "callbackData": "1234", - "notifyURL": "http://application.example.com/notifications/distance_notifications/123456" - }, - "checkImmediate": "true", - "clientCorrelator": "0123", - "enteringLeavingCriteria": "Entering", - "frequency": "10", - "latitude": "-80.86302", - "longitude": "41.277306", - "radius": "500", - "trackingAccuracy": "10" + "circleNotificationSubscription": { + "clientCorrelator": "0123", + "callback": { + "callbackData": "1234", + "notifyURL": "http://clientApp.example.com/location_notifications/123456" + }, + "address": "acr:10.0.0.1", + "checkImmediate": true, + "enteringLeavingCriteria": "Entering", + "frequency": 10, + "latitude": -80.88, + "longitude": 41.277, + "radius": 500, + "trackingAccuracy": 10 + } } \ No newline at end of file diff --git a/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json b/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json index f8b20f2..0791f2d 100644 --- a/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json +++ b/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json @@ -1,11 +1,177 @@ { - "properties": { - "undefinedJsonSchema": { - "type": "string", - "description": "Json Schema for the given object is not yet defined" - } - }, - "required": [ - "undefinedJsonSchema" - ] + "type": "object", + "properties": { + "circleNotificationSubscription": { + "description": "A type containing data for notifications, when the area is defined as a circle.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "enteringLeavingCriteria": { + "enum": [ + "Entering", + "Leaving" + ], + "type": "string" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "latitude": { + "description": "Latitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "longitude": { + "description": "Longitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "radius": { + "description": "Radius circle around center point in meters.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "address", + "latitude", + "longitude", + "radius", + "trackingAccuracy", + "enteringLeavingCriteria", + "checkImmediate", + "frequency" + ], + "type": "object" + } + }, + "example": { + "circleNotificationSubscription": { + "clientCorrelator": "0123", + "callbackReference": { + "callbackData": "1234", + "notifyURL": "http://clientApp.example.com/location_notifications/123456" + }, + "address": "acr:10.0.0.1", + "checkImmediate": true, + "enteringLeavingCriteria": "Entering", + "frequency": 10, + "latitude": -80.88, + "longitude": 41.277, + "radius": 500, + "trackingAccuracy": 10 + } + } } \ No newline at end of file diff --git a/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json b/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json new file mode 100644 index 0000000..efa7244 --- /dev/null +++ b/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json @@ -0,0 +1,715 @@ +{ + "type": "object", + "required": [ + "notificationSubscriptionList" + ], + "properties": { + "notificationSubscriptionList": { + "properties": { + "circleNotificationSubscription": { + "description": "Collection of CircleNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for notifications, when the area is defined as a circle.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "enteringLeavingCriteria": { + "enum": [ + "Entering", + "Leaving" + ], + "type": "string" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "latitude": { + "description": "Latitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "longitude": { + "description": "Longitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "radius": { + "description": "Radius circle around center point in meters.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "address", + "latitude", + "longitude", + "radius", + "trackingAccuracy", + "enteringLeavingCriteria", + "checkImmediate", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "CircleNotificationSubscription" + }, + "distanceNotificationSubscription": { + "description": "Collection of DistanceNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for distance subscription, with reference to other devices.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "criteria": { + "enum": [ + "AllWithinDistance", + "AnyWithinDistance", + "AllBeyondDistance", + "AnyBeyondDistance" + ], + "type": "string" + }, + "distance": { + "description": "Distance between devices that shall be monitored.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "monitoredAddress": { + "description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "referenceAddress": { + "description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "monitoredAddress", + "distance", + "trackingAccuracy", + "criteria", + "checkImmediate", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "DistanceNotificationSubscription" + }, + "periodicNotificationSubscription": { + "description": "Collection of PeriodicNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for periodic subscription.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "requestedAccuracy": { + "description": "Accuracy of the provided distance in meters.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "callbackReference", + "address", + "requestedAccuracy", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "PeriodicNotificationSubscription" + }, + "resourceURL": { + "description": "Self-referring URL, see note 1.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "AnyURI" + }, + "userTrackingSubscription": { + "description": "Collection of UserTrackingSubscription elements, see note 1.", + "items": { + "description": "A type containing user tracking subscription.", + "properties": { + "address": { + "description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + } + }, + "required": [ + "callbackReference", + "address" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "UserTrackingSubscription" + }, + "zonalTrafficSubscription": { + "description": "Collection of ZonalTrafficSubscription elements, see note 1.", + "items": { + "description": "A type containing zonal traffic subscription", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period (in seconds) of time notifications are provided for. If set to \"0\" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the period of time for which the subscription will still be valid.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "interestRealm": { + "description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "ZonalTrafficSubscription" + }, + "zoneStatusSubscription": { + "description": "Collection of ZoneStatusSubscription elements, see note 1.", + "items": { + "description": "A type containing zone status subscription.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "numberOfUsersAPThreshold": { + "description": "Threshold number of users in an access point which if crossed shall cause a notification", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "numberOfUsersZoneThreshold": { + "description": "Threshold number of users in a zone which if crossed shall cause a notification", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "operationStatus": { + "description": "List of operation status values to generate notifications for (these apply to all access points within a zone).", + "items": { + "enum": [ + "Serviceable", + "Unserviceable", + "Unknown" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "OperationStatus" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "ZoneStatusSubscription" + } + }, + "required": [ + "resourceURL" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.8.\nNOTE 2: \tAs specified in [6], clause 5.2.2.7.", + "x-etsi-ref": "6.3.3" + } + } +} \ No newline at end of file diff --git a/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json b/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json index f8b20f2..ccee80a 100644 --- a/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json +++ b/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json @@ -1,11 +1,50 @@ { - "properties": { - "undefinedJsonSchema": { - "type": "string", - "description": "Json Schema for the given object is not yet defined" - } - }, - "required": [ - "undefinedJsonSchema" - ] + "type": "object", + "properties": { + "terminalDistance": { + "description": "A type containing information about the distance from a terminal to a location or between two terminals, in addition the accuracy and a timestamp of the information are provided.", + "properties": { + "accuracy": { + "description": "Accuracy of the provided distance in meters", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "integer" + }, + "distance": { + "description": "Distance from terminal to a location or between two terminals specified in meters", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "integer" + }, + "timestamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + }, + "required": [ + "distance" + ], + "type": "object" + } + } } \ No newline at end of file diff --git a/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json b/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json index f8b20f2..aaac2e4 100644 --- a/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json +++ b/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json @@ -1,11 +1,174 @@ { - "properties": { - "undefinedJsonSchema": { - "type": "string", - "description": "Json Schema for the given object is not yet defined" - } - }, - "required": [ - "undefinedJsonSchema" - ] + "type": "object", + "properties": { + "distanceNotificationSubscription": { + "description": "A type containing data for distance subscription, with reference to other devices.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "criteria": { + "enum": [ + "AllWithinDistance", + "AnyWithinDistance", + "AllBeyondDistance", + "AnyBeyondDistance" + ], + "type": "string" + }, + "distance": { + "description": "Distance between devices that shall be monitored.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "monitoredAddress": { + "description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "referenceAddress": { + "description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "monitoredAddress", + "distance", + "trackingAccuracy", + "criteria", + "checkImmediate", + "frequency" + ], + "type": "object" + } + }, + "example": { + "distanceNotificationSubscription": { + "clientCorrelator": "0123", + "callbackReference": { + "callbackData": "1234", + "notifyURL": "http://clientApp.example.com/location_notifications/123456" + }, + "monitoredAddress": [ + "acr:10.0.0.1", + "acr:10.0.0.2" + ], + "checkImmediate": true, + "criteria": "AllWithinDistance", + "distance": 100, + "frequency": 10, + "referenceAddress": "acr:10.0.0.3", + "trackingAccuracy": 10 + } + } } \ No newline at end of file diff --git a/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json b/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json new file mode 100644 index 0000000..efa7244 --- /dev/null +++ b/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json @@ -0,0 +1,715 @@ +{ + "type": "object", + "required": [ + "notificationSubscriptionList" + ], + "properties": { + "notificationSubscriptionList": { + "properties": { + "circleNotificationSubscription": { + "description": "Collection of CircleNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for notifications, when the area is defined as a circle.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "enteringLeavingCriteria": { + "enum": [ + "Entering", + "Leaving" + ], + "type": "string" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "latitude": { + "description": "Latitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "longitude": { + "description": "Longitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "radius": { + "description": "Radius circle around center point in meters.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "address", + "latitude", + "longitude", + "radius", + "trackingAccuracy", + "enteringLeavingCriteria", + "checkImmediate", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "CircleNotificationSubscription" + }, + "distanceNotificationSubscription": { + "description": "Collection of DistanceNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for distance subscription, with reference to other devices.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "criteria": { + "enum": [ + "AllWithinDistance", + "AnyWithinDistance", + "AllBeyondDistance", + "AnyBeyondDistance" + ], + "type": "string" + }, + "distance": { + "description": "Distance between devices that shall be monitored.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "monitoredAddress": { + "description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "referenceAddress": { + "description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "monitoredAddress", + "distance", + "trackingAccuracy", + "criteria", + "checkImmediate", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "DistanceNotificationSubscription" + }, + "periodicNotificationSubscription": { + "description": "Collection of PeriodicNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for periodic subscription.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "requestedAccuracy": { + "description": "Accuracy of the provided distance in meters.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "callbackReference", + "address", + "requestedAccuracy", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "PeriodicNotificationSubscription" + }, + "resourceURL": { + "description": "Self-referring URL, see note 1.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "AnyURI" + }, + "userTrackingSubscription": { + "description": "Collection of UserTrackingSubscription elements, see note 1.", + "items": { + "description": "A type containing user tracking subscription.", + "properties": { + "address": { + "description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + } + }, + "required": [ + "callbackReference", + "address" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "UserTrackingSubscription" + }, + "zonalTrafficSubscription": { + "description": "Collection of ZonalTrafficSubscription elements, see note 1.", + "items": { + "description": "A type containing zonal traffic subscription", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period (in seconds) of time notifications are provided for. If set to \"0\" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the period of time for which the subscription will still be valid.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "interestRealm": { + "description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "ZonalTrafficSubscription" + }, + "zoneStatusSubscription": { + "description": "Collection of ZoneStatusSubscription elements, see note 1.", + "items": { + "description": "A type containing zone status subscription.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "numberOfUsersAPThreshold": { + "description": "Threshold number of users in an access point which if crossed shall cause a notification", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "numberOfUsersZoneThreshold": { + "description": "Threshold number of users in a zone which if crossed shall cause a notification", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "operationStatus": { + "description": "List of operation status values to generate notifications for (these apply to all access points within a zone).", + "items": { + "enum": [ + "Serviceable", + "Unserviceable", + "Unknown" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "OperationStatus" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "ZoneStatusSubscription" + } + }, + "required": [ + "resourceURL" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.8.\nNOTE 2: \tAs specified in [6], clause 5.2.2.7.", + "x-etsi-ref": "6.3.3" + } + } +} \ No newline at end of file diff --git a/SRV/UEINFOLOOK/PlatUeInformationLookup.robot b/SRV/UEINFOLOOK/PlatUeInformationLookup.robot index 8a5ba3f..1dffa6f 100644 --- a/SRV/UEINFOLOOK/PlatUeInformationLookup.robot +++ b/SRV/UEINFOLOOK/PlatUeInformationLookup.robot @@ -56,6 +56,6 @@ Get list of users with filter [Arguments] ${key} ${value} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/users?${key}=${value} + Get ${apiRoot}/${apiName}/${apiVersion}/queries/users?${key}=${value} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json b/SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json new file mode 100644 index 0000000..efa7244 --- /dev/null +++ b/SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json @@ -0,0 +1,715 @@ +{ + "type": "object", + "required": [ + "notificationSubscriptionList" + ], + "properties": { + "notificationSubscriptionList": { + "properties": { + "circleNotificationSubscription": { + "description": "Collection of CircleNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for notifications, when the area is defined as a circle.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "enteringLeavingCriteria": { + "enum": [ + "Entering", + "Leaving" + ], + "type": "string" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "latitude": { + "description": "Latitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "longitude": { + "description": "Longitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "radius": { + "description": "Radius circle around center point in meters.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "address", + "latitude", + "longitude", + "radius", + "trackingAccuracy", + "enteringLeavingCriteria", + "checkImmediate", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "CircleNotificationSubscription" + }, + "distanceNotificationSubscription": { + "description": "Collection of DistanceNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for distance subscription, with reference to other devices.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "criteria": { + "enum": [ + "AllWithinDistance", + "AnyWithinDistance", + "AllBeyondDistance", + "AnyBeyondDistance" + ], + "type": "string" + }, + "distance": { + "description": "Distance between devices that shall be monitored.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "monitoredAddress": { + "description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "referenceAddress": { + "description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "monitoredAddress", + "distance", + "trackingAccuracy", + "criteria", + "checkImmediate", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "DistanceNotificationSubscription" + }, + "periodicNotificationSubscription": { + "description": "Collection of PeriodicNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for periodic subscription.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "requestedAccuracy": { + "description": "Accuracy of the provided distance in meters.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "callbackReference", + "address", + "requestedAccuracy", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "PeriodicNotificationSubscription" + }, + "resourceURL": { + "description": "Self-referring URL, see note 1.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "AnyURI" + }, + "userTrackingSubscription": { + "description": "Collection of UserTrackingSubscription elements, see note 1.", + "items": { + "description": "A type containing user tracking subscription.", + "properties": { + "address": { + "description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + } + }, + "required": [ + "callbackReference", + "address" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "UserTrackingSubscription" + }, + "zonalTrafficSubscription": { + "description": "Collection of ZonalTrafficSubscription elements, see note 1.", + "items": { + "description": "A type containing zonal traffic subscription", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period (in seconds) of time notifications are provided for. If set to \"0\" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the period of time for which the subscription will still be valid.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "interestRealm": { + "description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "ZonalTrafficSubscription" + }, + "zoneStatusSubscription": { + "description": "Collection of ZoneStatusSubscription elements, see note 1.", + "items": { + "description": "A type containing zone status subscription.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "numberOfUsersAPThreshold": { + "description": "Threshold number of users in an access point which if crossed shall cause a notification", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "numberOfUsersZoneThreshold": { + "description": "Threshold number of users in a zone which if crossed shall cause a notification", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "operationStatus": { + "description": "List of operation status values to generate notifications for (these apply to all access points within a zone).", + "items": { + "enum": [ + "Serviceable", + "Unserviceable", + "Unknown" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "OperationStatus" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "ZoneStatusSubscription" + } + }, + "required": [ + "resourceURL" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.8.\nNOTE 2: \tAs specified in [6], clause 5.2.2.7.", + "x-etsi-ref": "6.3.3" + } + } +} \ No newline at end of file diff --git a/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.json b/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.json index 0a27ccb..e0d6fb6 100644 --- a/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.json +++ b/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.json @@ -1,12 +1,89 @@ { - "properties": { - "undefinedJsonSchema": { - "type": "string", - "description": "Json Schema for the given object is not yet defined" - } - }, - "required": [ - "undefinedJsonSchema" - ] -} - + "type": "object", + "properties": { + "zonalTrafficSubscription": { + "description": "A type containing zonal traffic subscription", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period (in seconds) of time notifications are provided for. If set to \"0\" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the period of time for which the subscription will still be valid.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "interestRealm": { + "description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + } + } +} \ No newline at end of file diff --git a/SRV/UELOCLOOK/schemas/UserInfo.schema.json b/SRV/UELOCLOOK/schemas/UserInfo.schema.json index 6b78189..1739826 100644 --- a/SRV/UELOCLOOK/schemas/UserInfo.schema.json +++ b/SRV/UELOCLOOK/schemas/UserInfo.schema.json @@ -1,144 +1,253 @@ { - "type": "object", - "properties": { - "accessPointId": { - "description": "The identity of the access point the user is currently on, see note 1.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "address": { - "description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1.", - "format": "uri", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "AnyURI" - }, - "ancillaryInfo": { - "description": "Reserved for future use.", - "type": "string", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "String" - }, - "contextLocationInfo": { - "description": "Contextual information of a user location (e.g. aisle, floor, room number, etc.).", - "type": "string", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "String" - }, - "locationInfo": { - "properties": { - "accuracy": { - "type": "number" - }, - "accuracyAltitude": { - "type": "number" - }, - "accuracySemiMinor": { - "type": "number" - }, - "altitude": { - "description": "Location altitude relative to the WGS84 ellipsoid surface.", - "type": "number", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Float" - }, - "confidence": { - "type": "number" - }, - "includedAngle": { - "type": "number" - }, - "innerRadius": { - "type": "number" - }, - "latitude": { - "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", - "items": { - "type": "number" - }, - "minItems": 1, - "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Float" - }, - "longitude": { - "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", - "items": { - "type": "number" - }, - "minItems": 1, - "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Float" - }, - "offsetAngle": { - "type": "number" - }, - "orientationMajorAxis": { - "type": "number" - }, - "shape": { - "description": "Shape information, as detailed in [14], associated with the reported location coordinate:\n1 = Ellipsoid_Arc\n2 = ellipsoid_Point\n3 = ellipsoid_Point_Altitude\n4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid\n5 = ellipsoid_Point_Uncert_Circle\n6 = ellipsoid_Point_Uncert_Ellipse\n7 = polygon", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Enum_inlined" - }, - "uncertaintyRadius": { - "type": "number" - }, - "velocity": { - "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", - "type": "object", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Structure (inlined)" - } - }, - "required": [ - "latitude", - "longitude", - "shape" - ], - "type": "object", - "x-etsi-ref": "6.5.3" - }, - "resourceURL": { - "description": "Self-referring URL, see note 1.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "timeStamp": { - "properties": { - "nanoSeconds": { - "type": "number" - }, - "seconds": { - "type": "number" - } - }, - "required": [ - "seconds", - "nanoSeconds" - ], - "type": "object", - "x-etsi-ref": "6.5.2" - }, - "zoneId": { - "description": "The identity of the zone the user is currently within, see note 1.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - } - }, - "required": [ - "address", - "accessPointId", - "zoneId", - "resourceURL", - "timeStamp" - ], - "description": "Represents the information related to a user attached to an access point associated to the MEC host, such access point is in scope of the Location Service instance.\n", - "x-etsi-notes": ":\tAs specified in [5], clause 5.2.2.7.\nNOTE 2: \tAs specified in [5], clause 5.2.2.5.", - "x-etsi-ref": "6.2.2" -} + "type": "object", + "properties": { + "userInfo": { + "properties": { + "accessPointId": { + "description": "The identity of the access point the user is currently on, see note 1.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "address": { + "description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "AnyURI" + }, + "ancillaryInfo": { + "description": "Reserved for future use.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "contextLocationInfo": { + "description": "Contextual information of a user location (e.g. aisle, floor, room number, etc.).", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "locationInfo": { + "properties": { + "accuracy": { + "description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "accuracyAltitude": { + "description": "Altitude accuracy / uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "accuracySemiMinor": { + "description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "altitude": { + "description": "Location altitude relative to the WGS84 ellipsoid surface.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Float" + }, + "confidence": { + "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "includedAngle": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "innerRadius": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "latitude": { + "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "items": { + "format": "float", + "type": "number" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", + "items": { + "format": "float", + "type": "number" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Float" + }, + "offsetAngle": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "orientationMajorAxis": { + "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "shape": { + "description": "Shape information, as detailed in [14], associated with the reported location coordinate:

1 = ELLIPSOID_ARC

2 = ELLIPSOID_POINT

3 = ELLIPSOID_POINT_ALTITUDE

4 = ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID

5 = ELLIPSOID_POINT_UNCERT_CIRCLE

6 = ELLIPSOID_POINT_UNCERT_ELLIPSE

7 = POLYGON", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "timestamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "uncertaintyRadius": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "velocity": { + "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", + "properties": { + "bearing": { + "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "horizontalSpeed": { + "description": "Horizontal speed, expressed in km/h and defined in [14].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "uncertainty": { + "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "velocityType": { + "description": "Velocity information, as detailed in [14], associated with the reported location coordinate:

1 = HORIZONTAL

2 = HORIZONTAL_VERTICAL

3 = HORIZONTAL_UNCERT

4 = HORIZONTAL_VERTICAL_UNCERT", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "verticalSpeed": { + "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Int" + }, + "verticalUncertainty": { + "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + } + }, + "required": [ + "velocityType", + "bearing", + "horizontalSpeed" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "latitude", + "longitude", + "shape" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "resourceURL": { + "description": "Self-referring URL, see note 1.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "timestamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "zoneId": { + "description": "The identity of the zone the user is currently within, see note 1.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "address", + "accessPointId", + "zoneId", + "resourceURL", + "timestamp" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.7.\nNOTE 2: \tAs specified in [5], clause 5.2.2.5.", + "x-etsi-ref": "6.2.2" + } + } +} \ No newline at end of file diff --git a/SRV/UELOCLOOK/schemas/UserList.schema.json b/SRV/UELOCLOOK/schemas/UserList.schema.json index 32b692b..eafe70b 100644 --- a/SRV/UELOCLOOK/schemas/UserList.schema.json +++ b/SRV/UELOCLOOK/schemas/UserList.schema.json @@ -1,169 +1,274 @@ { - "description": "A type containing list of users.", "type": "object", - "required": [ - "resourceURL" - ], "properties": { - "user": { - "description": "Collection of the zone information list.", - "type": "array", - "items": { - "properties": { - "accessPointId": { - "description": "The identity of the access point the user is currently on, see note 1.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "address": { - "description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1.", - "format": "uri", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "AnyURI" - }, - "ancillaryInfo": { - "description": "Reserved for future use.", - "type": "string", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "String" - }, - "contextLocationInfo": { - "description": "Contextual information of a user location (e.g. aisle, floor, room number, etc.).", - "type": "string", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "String" - }, - "locationInfo": { + "userList": { + "description": "A type containing list of users.", + "properties": { + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "user": { + "description": "Collection of the zone information list.", + "items": { "properties": { - "accuracy": { - "type": "number" - }, - "accuracyAltitude": { - "type": "number" + "accessPointId": { + "description": "The identity of the access point the user is currently on, see note 1.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" }, - "accuracySemiMinor": { - "type": "number" + "address": { + "description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "AnyURI" }, - "altitude": { - "description": "Location altitude relative to the WGS84 ellipsoid surface.", - "type": "number", + "ancillaryInfo": { + "description": "Reserved for future use.", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Float" - }, - "confidence": { - "type": "number" - }, - "includedAngle": { - "type": "number" + "x-etsi-mec-origin-type": "String" }, - "innerRadius": { - "type": "number" - }, - "latitude": { - "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", - "items": { - "type": "number" - }, - "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Float" + "contextLocationInfo": { + "description": "Contextual information of a user location (e.g. aisle, floor, room number, etc.).", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "longitude": { - "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", - "items": { - "type": "number" + "locationInfo": { + "properties": { + "accuracy": { + "description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "accuracyAltitude": { + "description": "Altitude accuracy / uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "accuracySemiMinor": { + "description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "altitude": { + "description": "Location altitude relative to the WGS84 ellipsoid surface.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Float" + }, + "confidence": { + "description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "includedAngle": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "innerRadius": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "latitude": { + "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "items": { + "format": "float", + "type": "number" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", + "items": { + "format": "float", + "type": "number" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Float" + }, + "offsetAngle": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "orientationMajorAxis": { + "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "shape": { + "description": "Shape information, as detailed in [14], associated with the reported location coordinate:

1 = ELLIPSOID_ARC

2 = ELLIPSOID_POINT

3 = ELLIPSOID_POINT_ALTITUDE

4 = ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID

5 = ELLIPSOID_POINT_UNCERT_CIRCLE

6 = ELLIPSOID_POINT_UNCERT_ELLIPSE

7 = POLYGON", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "timestamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "uncertaintyRadius": { + "description": "Present only if \"shape\" equals 6", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "velocity": { + "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", + "properties": { + "bearing": { + "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "horizontalSpeed": { + "description": "Horizontal speed, expressed in km/h and defined in [14].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "uncertainty": { + "description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "velocityType": { + "description": "Velocity information, as detailed in [14], associated with the reported location coordinate:

1 = HORIZONTAL

2 = HORIZONTAL_VERTICAL

3 = HORIZONTAL_UNCERT

4 = HORIZONTAL_VERTICAL_UNCERT", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "verticalSpeed": { + "description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Int" + }, + "verticalUncertainty": { + "description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + } + }, + "required": [ + "velocityType", + "bearing", + "horizontalSpeed" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } }, - "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Float" - }, - "offsetAngle": { - "type": "number" - }, - "orientationMajorAxis": { - "type": "number" - }, - "shape": { - "description": "Shape information, as detailed in [14], associated with the reported location coordinate:\n1 = Ellipsoid_Arc\n2 = ellipsoid_Point\n3 = ellipsoid_Point_Altitude\n4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid\n5 = ellipsoid_Point_Uncert_Circle\n6 = ellipsoid_Point_Uncert_Ellipse\n7 = polygon", - "enum": [ - "ELLIPSOID_ARC", - "ELLIPSOID_POINT", - "ELLIPSOID_POINT_ALTITUDE", - "ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID", - "ELLIPSOID_POINT_UNCERT_CIRCLE", - "ELLIPSOID_POINT_UNCERT_ELLIPSE", - "POLYGON" + "required": [ + "latitude", + "longitude", + "shape" ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "resourceURL": { + "description": "Self-referring URL, see note 1.", "type": "string", "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Enum (inlined)" + "x-etsi-mec-origin-type": "String" }, - "uncertaintyRadius": { - "type": "number" - }, - "velocity": { - "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", + "timestamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], "type": "object", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Structure (inlined)" - } - }, - "required": [ - "latitude", - "longitude", - "shape" - ], - "type": "object", - "x-etsi-ref": "6.5.3" - }, - "resourceURL": { - "description": "Self-referring URL, see note 1.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "timeStamp": { - "properties": { - "nanoSeconds": { - "type": "number" + "x-etsi-ref": "6.5.2" }, - "seconds": { - "type": "number" + "zoneId": { + "description": "The identity of the zone the user is currently within, see note 1.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" } }, "required": [ - "seconds", - "nanoSeconds" + "address", + "accessPointId", + "zoneId", + "resourceURL", + "timestamp" ], "type": "object", - "x-etsi-ref": "6.5.2" + "x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.7.\nNOTE 2: \tAs specified in [5], clause 5.2.2.5.", + "x-etsi-ref": "6.2.2" }, - "zoneId": { - "description": "The identity of the zone the user is currently within, see note 1.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - } - }, - "required": [ - "address", - "accessPointId", - "zoneId", - "resourceURL", - "timeStamp" - ], - "type": "object", - "x-etsi-notes": ":\tAs specified in [5], clause 5.2.2.7.\nNOTE 2: \tAs specified in [5], clause 5.2.2.5.", - "x-etsi-ref": "6.2.2" - } - }, - "resourceURL": { - "description": "Self referring URL.", - "type": "string", - "format": "uri", - "example": "http://example.com/exampleAPI/location/v1/subscriptions/userTracking/subscription123" + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserInfo" + } + }, + "required": [ + "resourceURL" + ], + "type": "object" } } -} +} \ No newline at end of file diff --git a/SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json b/SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json new file mode 100644 index 0000000..efa7244 --- /dev/null +++ b/SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json @@ -0,0 +1,715 @@ +{ + "type": "object", + "required": [ + "notificationSubscriptionList" + ], + "properties": { + "notificationSubscriptionList": { + "properties": { + "circleNotificationSubscription": { + "description": "Collection of CircleNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for notifications, when the area is defined as a circle.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "enteringLeavingCriteria": { + "enum": [ + "Entering", + "Leaving" + ], + "type": "string" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "latitude": { + "description": "Latitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "longitude": { + "description": "Longitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "radius": { + "description": "Radius circle around center point in meters.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "address", + "latitude", + "longitude", + "radius", + "trackingAccuracy", + "enteringLeavingCriteria", + "checkImmediate", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "CircleNotificationSubscription" + }, + "distanceNotificationSubscription": { + "description": "Collection of DistanceNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for distance subscription, with reference to other devices.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "criteria": { + "enum": [ + "AllWithinDistance", + "AnyWithinDistance", + "AllBeyondDistance", + "AnyBeyondDistance" + ], + "type": "string" + }, + "distance": { + "description": "Distance between devices that shall be monitored.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "monitoredAddress": { + "description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "referenceAddress": { + "description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "monitoredAddress", + "distance", + "trackingAccuracy", + "criteria", + "checkImmediate", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "DistanceNotificationSubscription" + }, + "periodicNotificationSubscription": { + "description": "Collection of PeriodicNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for periodic subscription.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "requestedAccuracy": { + "description": "Accuracy of the provided distance in meters.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "callbackReference", + "address", + "requestedAccuracy", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "PeriodicNotificationSubscription" + }, + "resourceURL": { + "description": "Self-referring URL, see note 1.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "AnyURI" + }, + "userTrackingSubscription": { + "description": "Collection of UserTrackingSubscription elements, see note 1.", + "items": { + "description": "A type containing user tracking subscription.", + "properties": { + "address": { + "description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + } + }, + "required": [ + "callbackReference", + "address" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "UserTrackingSubscription" + }, + "zonalTrafficSubscription": { + "description": "Collection of ZonalTrafficSubscription elements, see note 1.", + "items": { + "description": "A type containing zonal traffic subscription", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period (in seconds) of time notifications are provided for. If set to \"0\" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the period of time for which the subscription will still be valid.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "interestRealm": { + "description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "ZonalTrafficSubscription" + }, + "zoneStatusSubscription": { + "description": "Collection of ZoneStatusSubscription elements, see note 1.", + "items": { + "description": "A type containing zone status subscription.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "numberOfUsersAPThreshold": { + "description": "Threshold number of users in an access point which if crossed shall cause a notification", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "numberOfUsersZoneThreshold": { + "description": "Threshold number of users in a zone which if crossed shall cause a notification", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "operationStatus": { + "description": "List of operation status values to generate notifications for (these apply to all access points within a zone).", + "items": { + "enum": [ + "Serviceable", + "Unserviceable", + "Unknown" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "OperationStatus" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "ZoneStatusSubscription" + } + }, + "required": [ + "resourceURL" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.8.\nNOTE 2: \tAs specified in [6], clause 5.2.2.7.", + "x-etsi-ref": "6.3.3" + } + } +} \ No newline at end of file diff --git a/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json b/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json index f8b20f2..6e2231a 100644 --- a/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json +++ b/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json @@ -1,11 +1,74 @@ { - "properties": { - "undefinedJsonSchema": { - "type": "string", - "description": "Json Schema for the given object is not yet defined" - } - }, - "required": [ - "undefinedJsonSchema" - ] + "type": "object", + "properties": { + "userTrackingSubscription": { + "description": "A type containing user tracking subscription.", + "properties": { + "address": { + "description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + } + }, + "required": [ + "callbackReference", + "address" + ], + "type": "object" + } + } } \ No newline at end of file diff --git a/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json b/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json new file mode 100644 index 0000000..efa7244 --- /dev/null +++ b/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json @@ -0,0 +1,715 @@ +{ + "type": "object", + "required": [ + "notificationSubscriptionList" + ], + "properties": { + "notificationSubscriptionList": { + "properties": { + "circleNotificationSubscription": { + "description": "Collection of CircleNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for notifications, when the area is defined as a circle.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "enteringLeavingCriteria": { + "enum": [ + "Entering", + "Leaving" + ], + "type": "string" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "latitude": { + "description": "Latitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "longitude": { + "description": "Longitude of center point.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "radius": { + "description": "Radius circle around center point in meters.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "address", + "latitude", + "longitude", + "radius", + "trackingAccuracy", + "enteringLeavingCriteria", + "checkImmediate", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "CircleNotificationSubscription" + }, + "distanceNotificationSubscription": { + "description": "Collection of DistanceNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for distance subscription, with reference to other devices.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "checkImmediate": { + "description": "Check location immediately after establishing notification.", + "type": "boolean", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "boolean" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "count": { + "description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "criteria": { + "enum": [ + "AllWithinDistance", + "AnyWithinDistance", + "AllBeyondDistance", + "AnyBeyondDistance" + ], + "type": "string" + }, + "distance": { + "description": "Distance between devices that shall be monitored.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "monitoredAddress": { + "description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "referenceAddress": { + "description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "float" + } + }, + "required": [ + "callbackReference", + "monitoredAddress", + "distance", + "trackingAccuracy", + "criteria", + "checkImmediate", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "DistanceNotificationSubscription" + }, + "periodicNotificationSubscription": { + "description": "Collection of PeriodicNotificationSubscription elements, see note 2.", + "items": { + "description": "A type containing data for periodic subscription.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "requestedAccuracy": { + "description": "Accuracy of the provided distance in meters.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "callbackReference", + "address", + "requestedAccuracy", + "frequency" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "PeriodicNotificationSubscription" + }, + "resourceURL": { + "description": "Self-referring URL, see note 1.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "AnyURI" + }, + "userTrackingSubscription": { + "description": "Collection of UserTrackingSubscription elements, see note 1.", + "items": { + "description": "A type containing user tracking subscription.", + "properties": { + "address": { + "description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + } + }, + "required": [ + "callbackReference", + "address" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "UserTrackingSubscription" + }, + "zonalTrafficSubscription": { + "description": "Collection of ZonalTrafficSubscription elements, see note 1.", + "items": { + "description": "A type containing zonal traffic subscription", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period (in seconds) of time notifications are provided for. If set to \"0\" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the period of time for which the subscription will still be valid.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "interestRealm": { + "description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "string" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "items": { + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UserEventType" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "ZonalTrafficSubscription" + }, + "zoneStatusSubscription": { + "description": "Collection of ZoneStatusSubscription elements, see note 1.", + "items": { + "description": "A type containing zone status subscription.", + "properties": { + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "numberOfUsersAPThreshold": { + "description": "Threshold number of users in an access point which if crossed shall cause a notification", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "numberOfUsersZoneThreshold": { + "description": "Threshold number of users in a zone which if crossed shall cause a notification", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "unsignedInt" + }, + "operationStatus": { + "description": "List of operation status values to generate notifications for (these apply to all access points within a zone).", + "items": { + "enum": [ + "Serviceable", + "Unserviceable", + "Unknown" + ], + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "OperationStatus" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "callbackReference", + "zoneId" + ], + "type": "object" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0.. N", + "x-etsi-mec-origin-type": "ZoneStatusSubscription" + } + }, + "required": [ + "resourceURL" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.8.\nNOTE 2: \tAs specified in [6], clause 5.2.2.7.", + "x-etsi-ref": "6.3.3" + } + } +} \ No newline at end of file diff --git a/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json b/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json index f8b20f2..f364afb 100644 --- a/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json +++ b/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json @@ -1,11 +1,114 @@ { - "properties": { - "undefinedJsonSchema": { - "type": "string", - "description": "Json Schema for the given object is not yet defined" - } - }, - "required": [ - "undefinedJsonSchema" - ] + "type": "object", + "properties": { + "periodicNotificationSubscription": { + "description": "A type containing data for periodic subscription.", + "properties": { + "address": { + "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "anyURI" + }, + "callbackReference": { + "properties": { + "callbackData": { + "description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "notificationFormat": { + "enum": [ + "XML", + "JSON" + ], + "type": "string" + }, + "notifyURL": { + "description": "Notify Callback URL", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "notifyURL" + ], + "type": "object" + }, + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "duration": { + "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "int" + }, + "frequency": { + "description": "Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "link": { + "description": "Link to other resources that are in relationship with the resource.", + "items": { + "description": "Link to other resources", + "properties": { + "href": { + "description": "URI", + "format": "anyURI", + "type": "string" + }, + "rel": { + "description": "Describes the relationship between the URI and the resource.", + "type": "string" + } + }, + "required": [ + "rel", + "href" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Link" + }, + "requestedAccuracy": { + "description": "Accuracy of the provided distance in meters.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "int" + }, + "requester": { + "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "anyURI" + } + }, + "required": [ + "callbackReference", + "address", + "requestedAccuracy", + "frequency" + ], + "type": "object" + } + } } \ No newline at end of file diff --git a/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot b/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot new file mode 100644 index 0000000..13f2080 --- /dev/null +++ b/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot @@ -0,0 +1,62 @@ +*** Settings *** + +Documentation +... A test suite for validating Radio Node Location Lookup (RLOCLOOK) operations. + +Resource ../../GenericKeywords.robot +Resource environment/variables.txt +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem + +Default Tags TC_MEC_SRV_RLOCLOOK + + +*** Test Cases *** + +TC_MEC_SRV_ZOINFOLOOK_001_OK + [Documentation] + ... TO BE COMPLETED + + [Tags] PIC_MEC_PLAT PIC_SERVICES INCLUDE_UNDEFINED_SCHEMAS + Get the zones info location list + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ZoneList + + +TC_MEC_SRV_ZOINFOLOOK_002_OK + [Documentation] + ... TO BE CMPLETED + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get the zone info location ${ZONE_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ZoneInfo + Should Be Equal As Strings ${response['body']['zoneInfo']['zoneId']} ${ZONE_ID} + +TC_MEC_SRV_ZOINFOLOOK_002_NF + [Documentation] + ... TO BE CMPLETED + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get the zone info location ${NON_EXISTENT_ZONE_ID} + Check HTTP Response Status Code Is 404 + +*** Keywords *** +Get the zone info location + [Arguments] ${zoneId} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/queries/zones/${zoneId} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get the zones info location list + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/queries/zones + ${output}= Output response + Set Suite Variable ${response} ${output} + + + diff --git a/SRV/ZOINFOLOOK/README.md b/SRV/ZOINFOLOOK/README.md new file mode 100644 index 0000000..e69de29 diff --git a/SRV/ZOINFOLOOK/environment/variables.txt b/SRV/ZOINFOLOOK/environment/variables.txt new file mode 100644 index 0000000..a9bf262 --- /dev/null +++ b/SRV/ZOINFOLOOK/environment/variables.txt @@ -0,0 +1,14 @@ +*** Variables *** +# Generic variables +${SCHEMA} http +${HOST} 10.192.2.172 +${PORT} 8081 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} location +${apiVersion} v2 + +# Specific variables +${ZONE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f +${NON_EXISTENT_ZONE_ID} NON_EXISTENT_ZONE_ID diff --git a/SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json b/SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json new file mode 100644 index 0000000..b39dd2d --- /dev/null +++ b/SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json @@ -0,0 +1,48 @@ +{ + "type": "object", + "properties": { + "zoneInfo": { + "description": "A type containing zone information.", + "properties": { + "numberOfAccessPoints": { + "description": "The number of access points within the zone", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "unsignedInt" + }, + "numberOfUnserviceableAccessPoints": { + "description": "Number of inoperable access points within the zone.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "unsignedInt" + }, + "numberOfUsers": { + "description": "The number of users currently on the access point.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "unsignedInt" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "zoneId", + "numberOfAccessPoints", + "numberOfUnserviceableAccessPoints", + "numberOfUsers", + "resourceURL" + ], + "type": "object" + } + } +} \ No newline at end of file diff --git a/SRV/ZOINFOLOOK/schemas/ZoneList.schema.json b/SRV/ZOINFOLOOK/schemas/ZoneList.schema.json new file mode 100644 index 0000000..b39dd2d --- /dev/null +++ b/SRV/ZOINFOLOOK/schemas/ZoneList.schema.json @@ -0,0 +1,48 @@ +{ + "type": "object", + "properties": { + "zoneInfo": { + "description": "A type containing zone information.", + "properties": { + "numberOfAccessPoints": { + "description": "The number of access points within the zone", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "unsignedInt" + }, + "numberOfUnserviceableAccessPoints": { + "description": "Number of inoperable access points within the zone.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "unsignedInt" + }, + "numberOfUsers": { + "description": "The number of users currently on the access point.", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "unsignedInt" + }, + "resourceURL": { + "description": "Self referring URL", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "anyURI" + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "string" + } + }, + "required": [ + "zoneId", + "numberOfAccessPoints", + "numberOfUnserviceableAccessPoints", + "numberOfUsers", + "resourceURL" + ], + "type": "object" + } + } +} \ No newline at end of file -- GitLab From c0329da19c8510ec9bc192275d9886c50713522c Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Mon, 15 Feb 2021 16:01:09 +0100 Subject: [PATCH 14/63] Align TC_MEC_SRV_RNIS_016_OK with related TP (fix #28) --- SRV/RNIS/resources/RadioNetworkInformationAPI.robot | 1 - 1 file changed, 1 deletion(-) diff --git a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot b/SRV/RNIS/resources/RadioNetworkInformationAPI.robot index f1012b3..7604428 100644 --- a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot +++ b/SRV/RNIS/resources/RadioNetworkInformationAPI.robot @@ -25,7 +25,6 @@ Check CellChangeSubscription Check RabInfo [Arguments] ${received_value} log ${received_value} - Should Be Equal As Strings ${received_value['appInstanceId']} ${APP_INS_ID} Should Not Be Empty ${received_value['requestId']} Run Keyword If 'cellUserInfo' in ${received_value} Should Be Equal As Strings ${received_value['cellUserInfo'][0]['ecgi']['cellId']} ${CELL_ID} -- GitLab From 4864e6bd4338c2ec886e24e0f331c461f92db88e Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Mon, 15 Feb 2021 16:26:16 +0100 Subject: [PATCH 15/63] Remove non UTF-8 chars (fix #32) --- SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json | 10 +++++----- SRV/RLOCLOOK/schemas/AccessPointList.schema.json | 10 +++++----- .../schemas/CircleNotificationSubscription.schema.json | 2 +- .../schemas/NotificationSubscriptionList.schema.json | 8 ++++---- .../DistanceNotificationSubscription.schema.json | 2 +- .../schemas/NotificationSubscriptionList.schema.json | 6 +++--- SRV/UEINFOLOOK/schemas/UserList.schema.json | 4 ++-- .../schemas/NotificationSubscriptionList.schema.json | 6 +++--- SRV/UELOCLOOK/schemas/UserInfo.schema.json | 10 +++++----- SRV/UELOCLOOK/schemas/UserList.schema.json | 10 +++++----- .../schemas/NotificationSubscriptionList.schema.json | 6 +++--- .../schemas/NotificationSubscriptionList.schema.json | 6 +++--- .../PeriodicNotificationSubscription.schema.json | 2 +- 13 files changed, 41 insertions(+), 41 deletions(-) diff --git a/SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json b/SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json index 9f7ddf5..5bf6106 100644 --- a/SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json +++ b/SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json @@ -78,7 +78,7 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "latitude": { - "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "description": "Location latitude, expressed in the range -90 deg to +90 deg. Cardinality greater than one only if \"shape\" equals 7.", "items": { "format": "float", "type": "number" @@ -89,7 +89,7 @@ "x-etsi-mec-origin-type": "Float" }, "longitude": { - "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", + "description": "Location longitude, expressed in the range -180 deg to +180 deg. Cardinality greater than one only if \"shape\" equals 7.", "items": { "format": "float", "type": "number" @@ -106,7 +106,7 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "orientationMajorAxis": { - "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6", + "description": "Angle of orientation of the major axis, expressed in the range 0 deg to 180 deg, as defined in [14]. Present only if \"shape\" equals 4 or 6", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "UnsignedInt" @@ -148,10 +148,10 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "velocity": { - "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", + "description": "Structure with attributes relating to the target's velocity, as defined in [14].", "properties": { "bearing": { - "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].", + "description": "Bearing, expressed in the range 0 deg to 360 deg, as defined in [14].", "type": "integer", "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "UnsignedInt" diff --git a/SRV/RLOCLOOK/schemas/AccessPointList.schema.json b/SRV/RLOCLOOK/schemas/AccessPointList.schema.json index 18b0a8c..2a37408 100644 --- a/SRV/RLOCLOOK/schemas/AccessPointList.schema.json +++ b/SRV/RLOCLOOK/schemas/AccessPointList.schema.json @@ -81,7 +81,7 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "latitude": { - "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "description": "Location latitude, expressed in the range -90� to +90�. Cardinality greater than one only if \"shape\" equals 7.", "items": { "format": "float", "type": "number" @@ -92,7 +92,7 @@ "x-etsi-mec-origin-type": "Float" }, "longitude": { - "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", + "description": "Location longitude, expressed in the range -180� to +180�. Cardinality greater than one only if \"shape\" equals 7.", "items": { "format": "float", "type": "number" @@ -109,7 +109,7 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "orientationMajorAxis": { - "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6", + "description": "Angle of orientation of the major axis, expressed in the range 0� to 180�, as defined in [14]. Present only if \"shape\" equals 4 or 6", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "UnsignedInt" @@ -151,10 +151,10 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "velocity": { - "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", + "description": "Structure with attributes relating to the target entity's velocity, as defined in [14].", "properties": { "bearing": { - "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].", + "description": "Bearing, expressed in the range 0 deg to 360 deg, as defined in [14].", "type": "integer", "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "UnsignedInt" diff --git a/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json b/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json index 0791f2d..84f4a28 100644 --- a/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json +++ b/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json @@ -59,7 +59,7 @@ "x-etsi-mec-origin-type": "int" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" diff --git a/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json b/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json index efa7244..c7c8284 100644 --- a/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json +++ b/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json @@ -66,7 +66,7 @@ "x-etsi-mec-origin-type": "int" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -235,7 +235,7 @@ "x-etsi-mec-origin-type": "float" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -373,7 +373,7 @@ "x-etsi-mec-origin-type": "string" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -563,7 +563,7 @@ "x-etsi-mec-origin-type": "string" }, "duration": { - "description": "Period (in seconds) of time notifications are provided for. If set to \"0\" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the period of time for which the subscription will still be valid.", + "description": "Period (in seconds) of time notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the period of time for which the subscription will still be valid.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "unsignedInt" diff --git a/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json b/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json index aaac2e4..cfa6963 100644 --- a/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json +++ b/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json @@ -66,7 +66,7 @@ "x-etsi-mec-origin-type": "float" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" diff --git a/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json b/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json index efa7244..3a495cd 100644 --- a/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json +++ b/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json @@ -66,7 +66,7 @@ "x-etsi-mec-origin-type": "int" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -235,7 +235,7 @@ "x-etsi-mec-origin-type": "float" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -373,7 +373,7 @@ "x-etsi-mec-origin-type": "string" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" diff --git a/SRV/UEINFOLOOK/schemas/UserList.schema.json b/SRV/UEINFOLOOK/schemas/UserList.schema.json index f32b4ed..65aefa0 100644 --- a/SRV/UEINFOLOOK/schemas/UserList.schema.json +++ b/SRV/UEINFOLOOK/schemas/UserList.schema.json @@ -65,7 +65,7 @@ "type": "number" }, "latitude": { - "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "description": "Location latitude, expressed in the range -90 deg to +90 deg. Cardinality greater than one only if \"shape\" equals 7.", "items": { "type": "number" }, @@ -74,7 +74,7 @@ "x-etsi-mec-origin-type": "Float" }, "longitude": { - "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", + "description": "Location longitude, expressed in the range -180 deg to +180 deg. Cardinality greater than one only if \"shape\" equals 7.", "items": { "type": "number" }, diff --git a/SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json b/SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json index efa7244..3a495cd 100644 --- a/SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json +++ b/SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json @@ -66,7 +66,7 @@ "x-etsi-mec-origin-type": "int" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -235,7 +235,7 @@ "x-etsi-mec-origin-type": "float" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -373,7 +373,7 @@ "x-etsi-mec-origin-type": "string" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" diff --git a/SRV/UELOCLOOK/schemas/UserInfo.schema.json b/SRV/UELOCLOOK/schemas/UserInfo.schema.json index 1739826..e479e0c 100644 --- a/SRV/UELOCLOOK/schemas/UserInfo.schema.json +++ b/SRV/UELOCLOOK/schemas/UserInfo.schema.json @@ -74,7 +74,7 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "latitude": { - "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "description": "Location latitude, expressed in the range -90 deg to +90 deg. Cardinality greater than one only if \"shape\" equals 7.", "items": { "format": "float", "type": "number" @@ -85,7 +85,7 @@ "x-etsi-mec-origin-type": "Float" }, "longitude": { - "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", + "description": "Location longitude, expressed in the range -180 deg to +180 deg. Cardinality greater than one only if \"shape\" equals 7.", "items": { "format": "float", "type": "number" @@ -102,7 +102,7 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "orientationMajorAxis": { - "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6", + "description": "Angle of orientation of the major axis, expressed in the range 0 deg to 180 deg, as defined in [14]. Present only if \"shape\" equals 4 or 6", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "UnsignedInt" @@ -144,10 +144,10 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "velocity": { - "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", + "description": "Structure with attributes relating to the target entity's velocity, as defined in [14].", "properties": { "bearing": { - "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].", + "description": "Bearing, expressed in the range 0 deg to 360 deg, as defined in [14].", "type": "integer", "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "UnsignedInt" diff --git a/SRV/UELOCLOOK/schemas/UserList.schema.json b/SRV/UELOCLOOK/schemas/UserList.schema.json index eafe70b..aab1bad 100644 --- a/SRV/UELOCLOOK/schemas/UserList.schema.json +++ b/SRV/UELOCLOOK/schemas/UserList.schema.json @@ -85,7 +85,7 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "latitude": { - "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "description": "Location latitude, expressed in the range -90 deg to +90 deg. Cardinality greater than one only if \"shape\" equals 7.", "items": { "format": "float", "type": "number" @@ -96,7 +96,7 @@ "x-etsi-mec-origin-type": "Float" }, "longitude": { - "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", + "description": "Location longitude, expressed in the range -180 deg to +180 deg. Cardinality greater than one only if \"shape\" equals 7.", "items": { "format": "float", "type": "number" @@ -113,7 +113,7 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "orientationMajorAxis": { - "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6", + "description": "Angle of orientation of the major axis, expressed in the range 0 deg to 180 deg, as defined in [14]. Present only if \"shape\" equals 4 or 6", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "UnsignedInt" @@ -155,10 +155,10 @@ "x-etsi-mec-origin-type": "UnsignedInt" }, "velocity": { - "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", + "description": "Structure with attributes relating to the target entity's velocity, as defined in [14].", "properties": { "bearing": { - "description": "Bearing, expressed in the range 0° to 360°, as defined in [14].", + "description": "Bearing, expressed in the range 0 deg to 360 deg, as defined in [14].", "type": "integer", "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "UnsignedInt" diff --git a/SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json b/SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json index efa7244..3a495cd 100644 --- a/SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json +++ b/SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json @@ -66,7 +66,7 @@ "x-etsi-mec-origin-type": "int" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -235,7 +235,7 @@ "x-etsi-mec-origin-type": "float" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -373,7 +373,7 @@ "x-etsi-mec-origin-type": "string" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" diff --git a/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json b/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json index efa7244..3a495cd 100644 --- a/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json +++ b/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json @@ -66,7 +66,7 @@ "x-etsi-mec-origin-type": "int" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -235,7 +235,7 @@ "x-etsi-mec-origin-type": "float" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" @@ -373,7 +373,7 @@ "x-etsi-mec-origin-type": "string" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" diff --git a/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json b/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json index f364afb..5161e70 100644 --- a/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json +++ b/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json @@ -47,7 +47,7 @@ "x-etsi-mec-origin-type": "string" }, "duration": { - "description": "Period of time (in seconds) notifications are provided for. If set to “0” (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", + "description": "Period of time (in seconds) notifications are provided for. If set to 0 (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications.", "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "int" -- GitLab From 955d904e9c1455c49f9685b38157910458d9450d Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Mon, 15 Feb 2021 17:15:20 +0100 Subject: [PATCH 16/63] Update MEC 013 users endpoint (fix #33) --- SRV/UELOCLOOK/PlatUeLocationLookup.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SRV/UELOCLOOK/PlatUeLocationLookup.robot b/SRV/UELOCLOOK/PlatUeLocationLookup.robot index e9923a6..0ab21d4 100644 --- a/SRV/UELOCLOOK/PlatUeLocationLookup.robot +++ b/SRV/UELOCLOOK/PlatUeLocationLookup.robot @@ -87,7 +87,7 @@ Get list of user equipments [Arguments] ${key} ${value} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/users?${key}=${value} + Get ${apiRoot}/${apiName}/${apiVersion}/queries/users?${key}=${value} ${output}= Output response Set Suite Variable ${response} ${output} @@ -96,6 +96,6 @@ Get specific user equipments [Arguments] ${userId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/users/${userId} + Get ${apiRoot}/${apiName}/${apiVersion}/queries/users/${userId} ${output}= Output response Set Suite Variable ${response} ${output} -- GitLab From 9de32d47755591cd2df17c2ad17e572f89e7bc97 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Mon, 15 Feb 2021 17:22:42 +0100 Subject: [PATCH 17/63] Schema used in TC_MEC_SRV_RNIS_019_OK (fix #36) --- SRV/RNIS/RnisQuery_BV.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SRV/RNIS/RnisQuery_BV.robot b/SRV/RNIS/RnisQuery_BV.robot index 10ac929..9737aed 100644 --- a/SRV/RNIS/RnisQuery_BV.robot +++ b/SRV/RNIS/RnisQuery_BV.robot @@ -51,7 +51,7 @@ Request L2Meas info ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/L2Meas Get Layer2Meas Info Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is L2MeasInfos + Check HTTP Response Body Json Schema Is L2Meas Check L2MeasInfo ${response['body']} -- GitLab From 6e4da34cb06e7dc5bdbb9cb6354c1a3a4748b5bc Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Mon, 15 Feb 2021 17:32:07 +0100 Subject: [PATCH 18/63] fix #30 --- SRV/RNIS/RnisSubscriptions_BV.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SRV/RNIS/RnisSubscriptions_BV.robot b/SRV/RNIS/RnisSubscriptions_BV.robot index 9f59522..70778bd 100644 --- a/SRV/RNIS/RnisSubscriptions_BV.robot +++ b/SRV/RNIS/RnisSubscriptions_BV.robot @@ -43,7 +43,7 @@ Get an Individual RNIS subscription ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Get Individual RNIS Subscription Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is CellChangeSubscriptionRequest + Check HTTP Response Body Json Schema Is CellChangeSubscription Update an Individual RNIS subscription @@ -53,7 +53,7 @@ Update an Individual RNIS subscription ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Update Individual RNIS Subscription Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is CellChangeSubscriptionRequest + Check HTTP Response Body Json Schema Is CellChangeSubscription Remove an Individual RNIS subscription [Documentation] TC_MEC_SRV_RNIS_015_OK -- GitLab From 915d18a3e8ca5bf014cb75c6aba65e8b42ad85fa Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Mon, 15 Feb 2021 17:48:59 +0100 Subject: [PATCH 19/63] ProblemDetails optional on 4xx (fix #39) --- SRV/RNIS/RnisQuery_BI_BO.robot | 16 ++++++++-------- SRV/RNIS/environment/variables.txt | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/SRV/RNIS/RnisQuery_BI_BO.robot b/SRV/RNIS/RnisQuery_BI_BO.robot index 9b0ede3..170bba2 100644 --- a/SRV/RNIS/RnisQuery_BI_BO.robot +++ b/SRV/RNIS/RnisQuery_BI_BO.robot @@ -18,7 +18,7 @@ Request RabInfo info using wrong parameters ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo Get RabInfo info using wrong parameters Check HTTP Response Status Code Is 400 - Check ProblemDetails 400 + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 400 Request RabInfo info using non existing cell id @@ -28,7 +28,7 @@ Request RabInfo info using non existing cell id ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo Get RabInfo info using non existing cell id Check HTTP Response Status Code Is 404 - Run Keyword If ${PIC_PROBLEM_DETAILS_ON_404} == 1 Check ProblemDetails 404 + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 Request Plmn info using wrong parameters [Documentation] TC_MEC_SRV_RNIS_017_BR @@ -37,7 +37,7 @@ Request Plmn info using wrong parameters ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo Get PLMN info using wrong parameters Check HTTP Response Status Code Is 400 - Check ProblemDetails 400 + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 400 Request Plmn info using non existing application id @@ -47,7 +47,7 @@ Request Plmn info using non existing application id ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo Get PLMN info using non existing application id Check HTTP Response Status Code Is 404 - Run Keyword If ${PIC_PROBLEM_DETAILS_ON_404} == 1 Check ProblemDetails 404 + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 Request S1Bearer info using wrong parameters @@ -57,7 +57,7 @@ Request S1Bearer info using wrong parameters ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get S1Bearer info using wrong parameters Check HTTP Response Status Code Is 400 - Check ProblemDetails 400 + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 400 Request S1Bearer info using non existing cell id @@ -67,7 +67,7 @@ Request S1Bearer info using non existing cell id ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get S1Bearer info using non existing cell id Check HTTP Response Status Code Is 404 - Run Keyword If ${PIC_PROBLEM_DETAILS_ON_404} == 1 Check ProblemDetails 404 + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 Request L2Meas info using wrong parameters @@ -77,7 +77,7 @@ Request L2Meas info using wrong parameters ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get L2Meas info using wrong parameters Check HTTP Response Status Code Is 400 - Check ProblemDetails 400 + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 400 Request L2Meas info using non existing cell id @@ -87,7 +87,7 @@ Request L2Meas info using non existing cell id ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get L2Meas info using non existing cell id Check HTTP Response Status Code Is 404 - Run Keyword If ${PIC_PROBLEM_DETAILS_ON_404} == 1 Check ProblemDetails 404 + Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 *** Keywords *** Get RabInfo info using wrong parameters diff --git a/SRV/RNIS/environment/variables.txt b/SRV/RNIS/environment/variables.txt index da96f99..8853f8d 100644 --- a/SRV/RNIS/environment/variables.txt +++ b/SRV/RNIS/environment/variables.txt @@ -22,7 +22,7 @@ ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} /example ${apiVersion} v2 -${PIC_PROBLEM_DETAILS_ON_404} 0 +${PIC_PROBLEM_DETAILS_ON_4xx} 0 # Notifications variables ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -- GitLab From e2bb313eab73e5222ce0491bf5fffceb4146b2be Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Thu, 18 Feb 2021 18:40:00 +0100 Subject: [PATCH 20/63] fix #33 and #34 --- GenericKeywords.robot | 3 ++- SRV/UELOCLOOK/PlatUeLocationLookup.robot | 17 ++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/GenericKeywords.robot b/GenericKeywords.robot index ee12e8d..79c2209 100644 --- a/GenericKeywords.robot +++ b/GenericKeywords.robot @@ -25,7 +25,8 @@ Should Be Present In Json List [Arguments] ${expr} ${json_field} ${json_value} Log Check if ${json_field} is present in ${expr} with the value ${json_value} :FOR ${item} IN @{expr} - \ Exit For Loop If ${item[${json_field}]} == ${json_value} + \ ${are_equal}= Should Be Equal As Strings ${item["${json_field}"]} ${json_value} + \ Exit For Loop If ${are_equal} Log Item found ${item} [return] ${item} diff --git a/SRV/UELOCLOOK/PlatUeLocationLookup.robot b/SRV/UELOCLOOK/PlatUeLocationLookup.robot index 0ab21d4..d9bcf03 100644 --- a/SRV/UELOCLOOK/PlatUeLocationLookup.robot +++ b/SRV/UELOCLOOK/PlatUeLocationLookup.robot @@ -3,7 +3,6 @@ Documentation ... A test suite for validating UE Location Lookup (UELOCLOOK) operations. - Resource ../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false @@ -30,7 +29,6 @@ TC_MEC_SRV_UELOCLOOK_001_OK Check HTTP Response Body Json Schema Is UserList Check Result Contains ${response['body']['userList']['user']} zoneId ${ZONE_ID} - TC_MEC_SRV_UELOCLOOK_001_BR [Documentation] ... Check that the IUT responds with an error when @@ -39,10 +37,9 @@ TC_MEC_SRV_UELOCLOOK_001_BR ... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.3 [Tags] PIC_MEC_PLAT PIC_SERVICES - Get list of user equipments zone ${ZONE_ID} + Get list of user equipments z0n3 ${ZONE_ID} Check HTTP Response Status Code Is 400 - TC_MEC_SRV_UELOCLOOK_001_NF [Documentation] ... Check that the IUT responds with an error when @@ -52,10 +49,7 @@ TC_MEC_SRV_UELOCLOOK_001_NF [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of user equipments zoneId ${NON_EXISTENT_ZONE_ID} - Check HTTP Response Status Code Is 404 - - - + Check HTTP Response Status Code Is 200 TC_MEC_SRV_UELOCLOOK_002_OK [Documentation] @@ -66,9 +60,10 @@ TC_MEC_SRV_UELOCLOOK_002_OK ... OpenAPI https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/UserInfo [Tags] PIC_MEC_PLAT PIC_SERVICES - Get specific user equipments ${USER_ID} - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is UserInfo + Log Deprecated + # Get specific user equipments ${USER_ID} + # Check HTTP Response Status Code Is 200 + # Check HTTP Response Body Json Schema Is UserInfo TC_MEC_SRV_UELOCLOOK_002_NF -- GitLab From d4822eacd7918ac2702be3aba307572edebb8802 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Thu, 18 Feb 2021 18:58:35 +0100 Subject: [PATCH 21/63] fix #36 --- SRV/RNIS/resources/RadioNetworkInformationAPI.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot b/SRV/RNIS/resources/RadioNetworkInformationAPI.robot index 7604428..fd1c4d0 100644 --- a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot +++ b/SRV/RNIS/resources/RadioNetworkInformationAPI.robot @@ -44,4 +44,4 @@ Check S1BearerInfo Check L2MeasInfo [Arguments] ${received_value} log ${received_value} - Should Be Equal As Strings ${received_value['cellInfo']['ecgi']['cellId']} ${CELL_ID} + Should Be Equal As Strings ${received_value['cellInfo'][0]['ecgi']['cellId']} ${CELL_ID} -- GitLab From e68a0d00b529e0bfba71e9aba951aac4c82f4a96 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 26 Feb 2021 11:43:17 +0100 Subject: [PATCH 22/63] fix #35 --- SRV/RNIS/RnisQuery_BI_BO.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SRV/RNIS/RnisQuery_BI_BO.robot b/SRV/RNIS/RnisQuery_BI_BO.robot index 170bba2..c65ad2e 100644 --- a/SRV/RNIS/RnisQuery_BI_BO.robot +++ b/SRV/RNIS/RnisQuery_BI_BO.robot @@ -86,8 +86,8 @@ Request L2Meas info using non existing cell id ... ETSI GS MEC 012 2.1.1, clause 7.5a.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get L2Meas info using non existing cell id - Check HTTP Response Status Code Is 404 - Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 + Check HTTP Response Status Code Is 200 + # TODO Check the returned list is empty *** Keywords *** Get RabInfo info using wrong parameters -- GitLab From a1a97a0551c4f617ec780ebf189606717f2c5c95 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 26 Feb 2021 11:58:04 +0100 Subject: [PATCH 23/63] fix #37 --- SRV/RNIS/RnisQuery_BI_BO.robot | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SRV/RNIS/RnisQuery_BI_BO.robot b/SRV/RNIS/RnisQuery_BI_BO.robot index c65ad2e..0f75c03 100644 --- a/SRV/RNIS/RnisQuery_BI_BO.robot +++ b/SRV/RNIS/RnisQuery_BI_BO.robot @@ -96,7 +96,7 @@ Get RabInfo info using wrong parameters Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/rab_info?c_id=${C_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/rab_info?c_id=${C_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -106,7 +106,7 @@ Get RabInfo info using non existing cell id Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/rab_info?cell_id=${NOT_EXISTENT_CELL_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/rab_info?cell_id=${NOT_EXISTENT_CELL_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -117,7 +117,7 @@ Get Plmn info using wrong parameters Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/plmn_info?app_id=${APP_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_id=${APP_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -128,7 +128,7 @@ Get Plmn info using non existing application id Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/plmn_info?app_ins_id=${NOT_EXISTENT_APP_INS_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_ins_id=${NOT_EXISTENT_APP_INS_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -139,7 +139,7 @@ Get S1Bearer info using wrong parameters Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/s1_bearer_info?c_id=${C_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?c_id=${C_ID} ${output}= Output response Set Suite Variable ${response} ${output} -- GitLab From 5035faeb9d2b381d45c94577bc725cb5ce963771 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 26 Feb 2021 12:10:13 +0100 Subject: [PATCH 24/63] fix #34 --- SRV/UELOCSUB/PlatUeLocationSubscription.robot | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/SRV/UELOCSUB/PlatUeLocationSubscription.robot b/SRV/UELOCSUB/PlatUeLocationSubscription.robot index 0b32cb9..cc65754 100644 --- a/SRV/UELOCSUB/PlatUeLocationSubscription.robot +++ b/SRV/UELOCSUB/PlatUeLocationSubscription.robot @@ -29,9 +29,10 @@ TC_MEC_SRV_UELOCSUB_001_OK Create new subscription UserTrackingSubscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is UserTrackingSubscription - Check Result Contains ${response['body']['userTrackingSubscription']} clientCorrelator ${USERTRACKSUB_CLIENT_ID} - Check Result Contains ${response['body']['userTrackingSubscription']} callbackReference ${USERTRACK_NOTIF_CALLBACK_URI} - Check Result Contains ${response['body']['userTrackingSubscription']} address ${USERTRACK_IP_ADDRESS} + # TODO fix related TP + # Check Result Contains ${response['body']['userTrackingSubscription']} clientCorrelator ${USERTRACKSUB_CLIENT_ID} + Should Be Equal As Strings ${response['body']['userTrackingSubscription']['callbackReference']} ${USERTRACK_NOTIF_CALLBACK_URI} + Should Be Equal As Strings ${response['body']['userTrackingSubscription']['address']} ${USERTRACK_IP_ADDRESS} # TODO how to send this? The TP has the IUT doing this immediately. Do we want this or will it be discarded as part of the test? # // MEC 013, clause 7.3.4.3 -- GitLab From 770b5aaf015e61b99772ea8712b8109ce407ab57 Mon Sep 17 00:00:00 2001 From: Michele Carignani Date: Fri, 26 Feb 2021 16:32:54 +0100 Subject: [PATCH 25/63] fix #35 and #37 --- SRV/RNIS/RnisQuery_BI_BO.robot | 15 +++++++++------ SRV/UEINFOLOOK/PlatUeInformationLookup.robot | 3 ++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/SRV/RNIS/RnisQuery_BI_BO.robot b/SRV/RNIS/RnisQuery_BI_BO.robot index 0f75c03..5729c48 100644 --- a/SRV/RNIS/RnisQuery_BI_BO.robot +++ b/SRV/RNIS/RnisQuery_BI_BO.robot @@ -27,8 +27,9 @@ Request RabInfo info using non existing cell id ... ETSI GS MEC 012 2.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo Get RabInfo info using non existing cell id - Check HTTP Response Status Code Is 404 - Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 + Check HTTP Response Status Code Is 200 + # TODO Check the returned list is empty + # Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 Request Plmn info using wrong parameters [Documentation] TC_MEC_SRV_RNIS_017_BR @@ -46,8 +47,9 @@ Request Plmn info using non existing application id ... ETSI GS MEC 012 2.1.1, clause 7.4.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo Get PLMN info using non existing application id - Check HTTP Response Status Code Is 404 - Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 + Check HTTP Response Status Code Is 200 + # TODO Check the returned list is empty + # Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 Request S1Bearer info using wrong parameters @@ -66,8 +68,9 @@ Request S1Bearer info using non existing cell id ... ETSI GS MEC 012 2.1.1, clause 7.5.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get S1Bearer info using non existing cell id - Check HTTP Response Status Code Is 404 - Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 + Check HTTP Response Status Code Is 200 + # TODO Check the returned list is empty + #Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 Request L2Meas info using wrong parameters diff --git a/SRV/UEINFOLOOK/PlatUeInformationLookup.robot b/SRV/UEINFOLOOK/PlatUeInformationLookup.robot index 1dffa6f..be0e30e 100644 --- a/SRV/UEINFOLOOK/PlatUeInformationLookup.robot +++ b/SRV/UEINFOLOOK/PlatUeInformationLookup.robot @@ -49,7 +49,8 @@ TC_MEC_SRV_UEINFOLOOK_001_NF [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of users with filter address ${ACR_UNKNOWN_IP} - Check HTTP Response Status Code Is 404 + Check HTTP Response Status Code Is 200 + # TODO add check that list is empty *** Keywords *** Get list of users with filter -- GitLab From a9131a60cdddf80a7c2d0b45716d6c63d7224bb1 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Thu, 29 Apr 2021 16:43:42 +0200 Subject: [PATCH 26/63] Updating MEC 016 to v2.2.1 --- {MEO => MEC016/MEO}/UEAPPCTX/README.md | 0 MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot | 173 +++++ MEC016/MEO/UEAPPCTX/environment/variables.txt | 13 + MEC016/MEO/UEAPPCTX/jsons/AppContext.json | 13 + MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json | 13 + .../MEO/UEAPPCTX/jsons/UpdateAppContext.json | 15 + .../UEAPPCTX/jsons/UpdateAppContext_BR.json | 15 + .../UEAPPCTX/schemas/AppContext.schema.json | 193 ++++++ {MEO/UEAPPS => MEC016/MEO/UEAPPLOC}/README.md | 0 .../UEAPPLOC/SysUeApplicationsLocation.robot | 72 ++ MEC016/MEO/UEAPPLOC/environment/variables.txt | 11 + .../jsons/AppLocationAvailability.json | 8 + .../jsons/AppLocationAvailability_BR.json | 8 + ...pplicationLocationAvailability.schema.json | 146 +++++ MEC016/MEO/UEAPPS/README.md | 0 MEC016/MEO/UEAPPS/SysUeApplications.robot | 103 +++ MEC016/MEO/UEAPPS/environment/variables.txt | 14 + .../schemas/ApplicationList.schema.json | 212 ++++++ MEO/UEAPPCTX/SysUeAppsContext.robot | 154 ----- MEO/UEAPPCTX/environment/variables.txt | 18 - MEO/UEAPPCTX/resources/UeAppsContextAPI.robot | 35 - .../schemas/UEAppInterfaceAPI.schema.json | 618 ------------------ MEO/UEAPPS/SysUeApplications.robot | 88 --- 23 files changed, 1009 insertions(+), 913 deletions(-) rename {MEO => MEC016/MEO}/UEAPPCTX/README.md (100%) create mode 100644 MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot create mode 100644 MEC016/MEO/UEAPPCTX/environment/variables.txt create mode 100644 MEC016/MEO/UEAPPCTX/jsons/AppContext.json create mode 100644 MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json create mode 100644 MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json create mode 100644 MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json create mode 100644 MEC016/MEO/UEAPPCTX/schemas/AppContext.schema.json rename {MEO/UEAPPS => MEC016/MEO/UEAPPLOC}/README.md (100%) create mode 100644 MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot create mode 100644 MEC016/MEO/UEAPPLOC/environment/variables.txt create mode 100644 MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability.json create mode 100644 MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability_BR.json create mode 100644 MEC016/MEO/UEAPPLOC/schemas/ApplicationLocationAvailability.schema.json create mode 100644 MEC016/MEO/UEAPPS/README.md create mode 100644 MEC016/MEO/UEAPPS/SysUeApplications.robot create mode 100644 MEC016/MEO/UEAPPS/environment/variables.txt create mode 100644 MEC016/MEO/UEAPPS/schemas/ApplicationList.schema.json delete mode 100644 MEO/UEAPPCTX/SysUeAppsContext.robot delete mode 100644 MEO/UEAPPCTX/environment/variables.txt delete mode 100644 MEO/UEAPPCTX/resources/UeAppsContextAPI.robot delete mode 100644 MEO/UEAPPCTX/schemas/UEAppInterfaceAPI.schema.json delete mode 100644 MEO/UEAPPS/SysUeApplications.robot diff --git a/MEO/UEAPPCTX/README.md b/MEC016/MEO/UEAPPCTX/README.md similarity index 100% rename from MEO/UEAPPCTX/README.md rename to MEC016/MEO/UEAPPCTX/README.md diff --git a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot new file mode 100644 index 0000000..da3b162 --- /dev/null +++ b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot @@ -0,0 +1,173 @@ +''[Documentation] robot --outputdir ../../outputs ./SysUeAppContext.robot +... Test Suite to validate Bandwidth Management API (APPCTX) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + + +*** Test Cases *** +TP_MEC_MEC016_MEO_UEAPPCTX_001_OK + [Documentation] + ... Check that the IUT acknowledges the creation of the application context when requested by an UE Application + ... Reference ETSI GS MEC 016 v2.2.1, clause 7.4.3.4 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Create application context AppContext.json + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is AppContext + Should Be Equal As Strings ${response['body']['appInfo']['appName']} MyNewWornderfulApp + Set Suite Variable ${contextId} ${response['body']['contextId']} + + +TP_MEC_MEC016_MEO_UEAPPCTX_001_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect URL is sent by a MEC Application + ... Reference ETSI GS MEC 016 v2.2.1, clause 7.4.3.4 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Create application context AppContext_BR.json + Check HTTP Response Status Code Is 400 + + +TP_MEC_MEC016_MEO_UEAPPCTX_001_NF + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect URL is sent by a MEC Application + ... Reference ETSI GS MEC 016 v2.2.1, clause 7.4.3.4 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Create application context using wrong endpoint AppContext.json + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC016_MEO_UEAPPCTX_002_OK + [Documentation] + ... Check that the IUT updates the application callback reference when commanded by an UE Application + ... Reference ETSI GS MEC 016 v2.2.1, clause 7.5.3.2 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + # Test Body + Update application context ${contextId} UpdateAppContext.json + Check HTTP Response Status Code Is 204 + Check HTTP Response Body Json Schema Is AppContext + Should Be Equal As Strings ${response['body']['callbackReference']} http://127.0.0.1/callbackuri + +TP_MEC_MEC016_MEO_UEAPPCTX_002_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... Reference ETSI GS MEC 016 v2.2.1, clause 7.5.3.2 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Update application context ${contextId} UpdateAppContext_BR.json + Check HTTP Response Status Code Is 400 + + +TP_MEC_MEC016_MEO_UEAPPCTX_002_NF + [Documentation] + ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application + ... Reference ETSI GS MEC 016 2.2.1, clause 7.5.3.2 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml + # Preamble + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Update application context using wrong endpoint ${contextId} UpdateAppContext.json + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC016_MEO_UEAPPCTX_003_OK + [Documentation] + ... Check that the IUT deletes the application context when commanded by an UE Application + ... Reference ETSI GS MEC 016 2.2.1, clause 7.5.3.5 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext + # Preamble + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Delete application context ${contextId} + Check HTTP Response Status Code Is 204 + + +TP_MEC_MEC016_MEO_UEAPPCTX_003_NF + [Documentation] + ... Check that the IUT deletes the application context when commanded by an UE Application + ... Reference ETSI GS MEC 016 2.2.1, clause 7.5.3.5 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext + # Preamble + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Delete application context ${NON_EXISTING_CONTEXT_ID} + Check HTTP Response Status Code Is 404 + Check ProblemDetails 404 + + +*** Keywords *** +Create application context + [Arguments] ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPATATOR= jsons/ ${content} + ${body} Get Binary File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/app_contexts ${content} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Create application context using wrong endpoint + [Arguments] ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPATATOR= jsons/ ${content} + ${body} Get Binary File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/app_contexts_error ${content} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Update application context + [Arguments] ${context_id} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Put ${apiRoot}/${apiName}/${apiVersion}/app_contexts/${context_id} ${content} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Update application context using wrong endpoint + [Arguments] ${context_id} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Put ${apiRoot}/${apiName}/${apiVersion}/app_contexts_error/${context_id} ${content} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Delete application context + [Arguments] ${context_id} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Delete ${apiRoot}/${apiName}/${apiVersion}/app_contexts/${context_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Delete application context using wrong endpoint + [Arguments] ${context_id} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Delete ${apiRoot}/${apiName}/${apiVersion}/app_contexts_error/${context_id} + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/MEC016/MEO/UEAPPCTX/environment/variables.txt b/MEC016/MEO/UEAPPCTX/environment/variables.txt new file mode 100644 index 0000000..ef478b9 --- /dev/null +++ b/MEC016/MEO/UEAPPCTX/environment/variables.txt @@ -0,0 +1,13 @@ +*** Variables *** +${apiRoot} +${apiName} dev_app +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 192.168.56.1 +${MEC-APP_PORT} 8081 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${contextId} +${NON_EXISTING_CONTEXT_ID} NON_EXISTING_CONTEXT_ID \ No newline at end of file diff --git a/MEC016/MEO/UEAPPCTX/jsons/AppContext.json b/MEC016/MEO/UEAPPCTX/jsons/AppContext.json new file mode 100644 index 0000000..6594d22 --- /dev/null +++ b/MEC016/MEO/UEAPPCTX/jsons/AppContext.json @@ -0,0 +1,13 @@ +{ + "associateDevAppId":"MyNewWornderfulDevAppId", + "appInfo":{ + "appName":"MyNewWornderfulApp", + "appProvider":"TF012", + "appDVersion":"v0.0.1", + "userAppInstanceInfo":[ + { + } + ] + } +} + diff --git a/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json b/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json new file mode 100644 index 0000000..c959895 --- /dev/null +++ b/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json @@ -0,0 +1,13 @@ +{ + "associateDevAppId":"MyNewWornderfulDevAppId", + "appInfo":{ + "app":"MyNewWornderfulApp", + "appProvider":"TF012", + "appDVersion":"v0.0.1", + "userAppInstanceInfo":[ + { + } + ] + } +} + diff --git a/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json new file mode 100644 index 0000000..8e3f5bf --- /dev/null +++ b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json @@ -0,0 +1,15 @@ +{ + "associateDevAppId":"MyNewWornderfulDevAppId", + "contextId": "MyNewWornderfulDevAppId", + "callbackReference": "http://127.0.0.1/callbackuri", + "appInfo":{ + "appName":"MyNewWornderfulApp", + "appProvider":"TF012", + "appDVersion":"v0.0.1", + "userAppInstanceInfo":[ + { + } + ] + } +} + diff --git a/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json new file mode 100644 index 0000000..19b16e8 --- /dev/null +++ b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json @@ -0,0 +1,15 @@ +{ + "associateUeAppId":"MyNewWornderfulDevAppId", + "contextId": "MyNewWornderfulDevAppId", + "callbackReference": "http://127.0.0.1/callbackuri", + "appInfo":{ + "appName":"MyNewWornderfulApp", + "appProvider":"TF012", + "appDVersion":"v0.0.1", + "userAppInstanceInfo":[ + { + } + ] + } +} + diff --git a/MEC016/MEO/UEAPPCTX/schemas/AppContext.schema.json b/MEC016/MEO/UEAPPCTX/schemas/AppContext.schema.json new file mode 100644 index 0000000..7fc3e32 --- /dev/null +++ b/MEC016/MEO/UEAPPCTX/schemas/AppContext.schema.json @@ -0,0 +1,193 @@ +{ + "properties": { + "appAutoInstantiation": { + "description": "Provides indication to the MEC system that instantiation of the requested application is desired should a requested appLocation become available that was not at the time of the request.", + "type": "boolean", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Boolean" + }, + "appInfo": { + "description": "", + "properties": { + "appDId": { + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique. It is equivalent to the appDId defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1]. It shall be present if the application is one in the ApplicationList.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "appDVersion": { + "description": "Identifies the version of the application descriptor. It is equivalent to the appDVersion defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appDescription": { + "description": "Human readable description of the MEC application. The length of the value shall not exceed 128 characters.", + "type": "string", + "maxLength": 128, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "appName": { + "description": "Name of the MEC application. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appProvider": { + "description": "Provider of the MEC application.\nThe length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appSoftVersion": { + "description": "Software version of the MEC application. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "appPackageSource": { + "description": "URI of the application package.\nIncluded in the request if the application is not one in the ApplicationList. appPackageSource enables on-boarding of the application package into the MEC system. The application package shall comply with the definitions in clause 6.2.1.2 of ETSI GS MEC 0102 [1].", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + }, + "userAppInstanceInfo": { + "description": "List of user application instance information.", + "items": { + "type": "object", + "properties": { + "appInstanceId": { + "description": "Identifier of the user application instance. It shall only be included in the response.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "appLocation": { + "properties": { + "area": { + "properties": { + "coordinates": { + "items": { + "items": { + "items": { + "type": "number", + "format": "float" + }, + "type": "array" + }, + "type": "array" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "array" + } + }, + "type": "object" + }, + "civicAddressElement": { + "description": "Zero or more elements comprising the civic address. Shall be absent if the \"area\" attribute is present.", + "items": { + "type": "object", + "properties": { + "caType": { + "description": "Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776 [6]. ", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "caValue": { + "description": "Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776 [6].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + } + }, + "minItems": 0, + "required": [ + "caType", + "caValue" + ], + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "array (Structure inlined)" + }, + "countryCode": { + "description": "The two-letter ISO 3166 [7] country code in capital letters. Shall be present in case the \"area\" attribute is absent. May be absent if the \"area\" attribute is present (see note).", + "type": "string", + "maxLength": 2, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tIf both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.", + "x-etsi-ref": "6.5.2" + }, + "referenceURI": { + "description": "Address of the user application instance. It shall only be included in the response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + } + } + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "array (Structure inlined)" + } + }, + "required": [ + "appName", + "appProvider", + "appDVersion", + "userAppInstanceInfo" + ], + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "appLocationUpdates": { + "description": "Used by the device application to request to receive notifications at the callbackReference URI relating to location availability for user application instantiation.", + "type": "boolean", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Boolean" + }, + "associateDevAppId": { + "description": "Uniquely identifies the device application. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "callbackReference": { + "description": "URI assigned by the device application to receive application lifecycle related notifications. Inclusion in the request implies the client supports the pub/sub mechanism and is capable of receiving notifications. This endpoint shall be maintained for the lifetime of the application context.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + }, + "contextId": { + "description": "Uniquely identifies the application context in the MEC system. Assigned by the MEC system and shall be present other than in a create request. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "associateDevAppId", + "appInfo" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tIf a value of the attribute is included in the request, the same value shall be included in the response.\nNOTE 2:\tThe design of the current operation with callback reference assumes no web proxy between the entity that originates the notification and the entity that receives it.\nNOTE 3:\tThe language support for the application description may be limited.\nNOTE 4:\tAttribute appLocationUpdates and appAutoInstantiation shall not both be set to TRUE.", + "x-etsi-ref": "6.2.3" + } \ No newline at end of file diff --git a/MEO/UEAPPS/README.md b/MEC016/MEO/UEAPPLOC/README.md similarity index 100% rename from MEO/UEAPPS/README.md rename to MEC016/MEO/UEAPPLOC/README.md diff --git a/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot b/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot new file mode 100644 index 0000000..1215753 --- /dev/null +++ b/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot @@ -0,0 +1,72 @@ +''[Documentation] robot --outputdir ../../outputs ./SysUeApplicationsLocation.robot + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + + + +*** Test Cases *** +TP_MEC_MEC016_MEO_UEAPPLOC_001_OK + [Documentation] + ... Check that the IUT sends the locations available for instantiation of a specific user application when requested by an UE Application + ... Reference ETSI GS MEC 016 2.2.1, clause 7.6.3.4 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Obtain Application Location Availability Task AppLocationAvailability.json + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApplicationLocationAvailability + Should Be Equal As Strings ${response['body']['appInfo']['appName']} MyNewWornderfulApp + + +TP_MEC_MEC016_MEO_UEAPPLOC_001_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... Reference ETSI GS MEC 016 2.2.1, clause 7.6.3.4 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Obtain Application Location Availability Task AppLocationAvailability_BR.json + Check HTTP Response Status Code Is 400 + + +TP_MEC_MEC016_MEO_UEAPPCTX_001_NF + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect URL is sent by a MEC Application + ... Reference ETSI GS MEC 016 2.2.1, clause 7.6.3.4 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Obtain Application Location Availability Task using wrong endpoint AppLocationAvailability.json + Check HTTP Response Status Code Is 404 + + + + +*** Keywords *** +Obtain Application Location Availability Task + [Arguments] ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPATATOR= jsons/ ${content} + ${body} Get Binary File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/obtain_app_loc_availability ${content} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Obtain Application Location Availability Task using wrong endpoint + [Arguments] ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPATATOR= jsons/ ${content} + ${body} Get Binary File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/obtain_app_loc_availability_error ${content} + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/MEC016/MEO/UEAPPLOC/environment/variables.txt b/MEC016/MEO/UEAPPLOC/environment/variables.txt new file mode 100644 index 0000000..fd69adc --- /dev/null +++ b/MEC016/MEO/UEAPPLOC/environment/variables.txt @@ -0,0 +1,11 @@ +*** Variables *** +${apiRoot} +${apiName} dev_app +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 192.168.56.1 +${MEC-APP_PORT} 8081 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + diff --git a/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability.json b/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability.json new file mode 100644 index 0000000..fdf8d3a --- /dev/null +++ b/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability.json @@ -0,0 +1,8 @@ +{ + "associateDevAppId":"MyNewWornderfulDevAppId", + "appInfo":{ + "appName":"MyNewWornderfulApp", + "appProvider":"TF012", + "appDVersion":"v0.0.1" + } +} \ No newline at end of file diff --git a/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability_BR.json b/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability_BR.json new file mode 100644 index 0000000..d907dd4 --- /dev/null +++ b/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability_BR.json @@ -0,0 +1,8 @@ +{ + "associateDevAppId":"MyNewWornderfulDevAppId", + "appInfo":{ + "app":"MyNewWornderfulApp", + "appProvider":"TF012", + "appDVersion":"v0.0.1" + } +} \ No newline at end of file diff --git a/MEC016/MEO/UEAPPLOC/schemas/ApplicationLocationAvailability.schema.json b/MEC016/MEO/UEAPPLOC/schemas/ApplicationLocationAvailability.schema.json new file mode 100644 index 0000000..7b1301f --- /dev/null +++ b/MEC016/MEO/UEAPPLOC/schemas/ApplicationLocationAvailability.schema.json @@ -0,0 +1,146 @@ +{ + "properties": { + "appInfo": { + "description": "", + "properties": { + "appDVersion": { + "description": "Identifies the version of the application descriptor. It is equivalent to the appDVersion defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appDescription": { + "description": "Human readable description of the MEC application. The length of the value shall not exceed 128 characters.", + "type": "string", + "maxLength": 128, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "appName": { + "description": "Name of the MEC application. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appPackageSource": { + "description": "URI of the application package. Shall be included in the request. The application package shall comply with the definitions in clause 6.2.1.2 of ETSI GS MEC 0102 [1].", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + }, + "appProvider": { + "description": "Provider of the MEC application. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appSoftVersion": { + "description": "Software version of the MEC application. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "availableLocations": { + "description": "MEC application location constraints. ", + "items": { + "type": "object", + "properties": { + "appLocation": { + "properties": { + "area": { + "properties": { + "coordinates": { + "items": { + "items": { + "items": { + "type": "number", + "format": "float" + }, + "type": "array" + }, + "type": "array" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "array" + } + }, + "type": "object" + }, + "civicAddressElement": { + "description": "Zero or more elements comprising the civic address. Shall be absent if the \"area\" attribute is present.", + "items": { + "type": "object", + "properties": { + "caType": { + "description": "Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776 [6]. ", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "caValue": { + "description": "Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776 [6].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + } + }, + "minItems": 0, + "required": [ + "caType", + "caValue" + ], + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "array (Structure inlined)" + }, + "countryCode": { + "description": "The two-letter ISO 3166 [7] country code in capital letters. Shall be present in case the \"area\" attribute is absent. May be absent if the \"area\" attribute is present (see note).", + "type": "string", + "maxLength": 2, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tIf both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.", + "x-etsi-ref": "6.5.2" + } + } + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "array (Structure (inline))" + } + }, + "required": [ + "appName", + "appProvider", + "appDVersion" + ], + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "associateDevAppId": { + "description": "Uniquely identifies the device application. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "associateDevAppId", + "appInfo" + ], + "type": "object", + "x-etsi-ref": "6.2.4" + } \ No newline at end of file diff --git a/MEC016/MEO/UEAPPS/README.md b/MEC016/MEO/UEAPPS/README.md new file mode 100644 index 0000000..e69de29 diff --git a/MEC016/MEO/UEAPPS/SysUeApplications.robot b/MEC016/MEO/UEAPPS/SysUeApplications.robot new file mode 100644 index 0000000..3c8545f --- /dev/null +++ b/MEC016/MEO/UEAPPS/SysUeApplications.robot @@ -0,0 +1,103 @@ +''[Documentation] robot --outputdir ../../outputs ./SysUeApplications.robot +... Test Suite to validate Bandwidth Management API (APPCTX) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot + +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + + + +*** Test Cases *** +TP_MEC_MEC016_MEO_UEAPPS_001_OK + [Documentation] + ... Check that the IUT responds with the list of user applications available when requested by an UE Application + ... Reference ETSI GS MEC 016 v2.2.1, clause 7.3.3.1 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the application contexts list + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApplicationList + FOR ${appInfo} IN @{response['body']['appInfo']['appInfo']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${appInfo} ${APP_NAME} + Exit For Loop If ${passed} + END + Should Be True ${passed} + +TP_MEC_MEC016_MEO_UEAPPS_001_NF + [Documentation] + ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application + ... Reference ETSI GS MEC 016 v2.2.1, clause 7.3.3.1 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the application contexts list using wrong endpoint + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC016_MEO_UEAPPS_002_OK + [Documentation] + ... Check that the IUT responds with the list of user applications available when requested by an UE Application + ... Reference ETSI GS MEC 016 2.2.1, clause 7.3.3.1 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the application contexts list using filters ${filter} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApplicationList + FOR ${appInfo} IN @{response['body']['appInfo']['appInfo']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${appInfo} ${APP_NAME} + Exit For Loop If ${passed} + END + Should Be True ${passed} + +TP_MEC_MEC016_MEO_UEAPPS_002_BR + [Documentation] + ... Check that the IUT responds with the list of user applications available when requested by an UE Application + ... Reference ETSI GS MEC 016 2.2.1, clause 7.3.3.1 + ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the application contexts list using filters ${bad_filter} + Check HTTP Response Status Code Is 400 + + + +*** Keywords *** +Retrieve the application contexts list + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + GET ${apiRoot}/${apiName}/${apiVersion}/app_list + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the application contexts list using wrong endpoint + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + GET ${apiRoot}/${apiName}/${apiVersion}/app_list_error + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the application contexts list using filters + [Arguments] ${filter} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + GET ${apiRoot}/${apiName}/${apiVersion}/app_list?${filter} + ${output}= Output response + Set Suite Variable ${response} ${output} + diff --git a/MEC016/MEO/UEAPPS/environment/variables.txt b/MEC016/MEO/UEAPPS/environment/variables.txt new file mode 100644 index 0000000..82ee14b --- /dev/null +++ b/MEC016/MEO/UEAPPS/environment/variables.txt @@ -0,0 +1,14 @@ +*** Variables *** +${apiRoot} +${apiName} dev_app +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 192.168.56.1 +${MEC-APP_PORT} 8081 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${APP_NAME} MyWornderfulApp +${filter} appName=${APP_NAME} +${bad_filter} app=${APP_NAME} diff --git a/MEC016/MEO/UEAPPS/schemas/ApplicationList.schema.json b/MEC016/MEO/UEAPPS/schemas/ApplicationList.schema.json new file mode 100644 index 0000000..453efad --- /dev/null +++ b/MEC016/MEO/UEAPPS/schemas/ApplicationList.schema.json @@ -0,0 +1,212 @@ +{ + "properties": { + "appList": { + "description": "List of user applications available to the device application. As defined below.", + "items": { + "type": "object", + "properties": { + "appInfo": { + "description": "", + "properties": { + "appCharcs": { + "description": "Characteristics of the application. As defined below. The application characteristics relate to the system resources consumed by the application. A device application can use this information e.g. for estimating the cost of use of the application or for the expected user experience.", + "properties": { + "bandwidth": { + "description": "The required connection bandwidth in kbit/s for the use of the MEC application instance. ", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "uint32" + }, + "latency": { + "description": "The target round trip time in milliseconds supported by the MEC system for the MEC application instance.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "uint32" + }, + "memory": { + "description": "The maximum size in Mbytes of the memory resource expected to be used by the MEC application instance in the MEC system.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "uint32" + }, + "serviceCont": { + "description": "Required service continuity mode for this application. Permitted values: 0 = SERVICE_CONTINUITY_NOT_REQUIRED. 1 = SERVICE_CONTINUITY_REQUIRED.", + "enum": [ + 0, + 1 + ], + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Enum" + }, + "storage": { + "description": "The maximum size in Mbytes of the storage resource expected to be used by the MEC application instance in the MEC system.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "uint32" + } + }, + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "appDId": { + "description": "Identifier of this MEC application descriptor. It is equivalent to the appDId defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1]. This attribute shall be globally unique.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appDVersion": { + "description": "Identifies the version of the application descriptor. It is equivalent to the appDVersion defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appDescription": { + "description": "Human readable description of the MEC application (see note 2).", + "type": "string", + "maxLength": 128, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appLocation": { + "description": "Identifies the locations of the MEC application.", + "items": { + "properties": { + "area": { + "properties": { + "coordinates": { + "items": { + "items": { + "items": { + "type": "number", + "format": "float" + }, + "type": "array" + }, + "type": "array" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "array" + } + }, + "type": "object" + }, + "civicAddressElement": { + "description": "Zero or more elements comprising the civic address. Shall be absent if the \"area\" attribute is present.", + "items": { + "type": "object", + "properties": { + "caType": { + "description": "Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776 [6]. ", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "caValue": { + "description": "Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776 [6].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + } + }, + "minItems": 0, + "required": [ + "caType", + "caValue" + ], + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "array (Structure inlined)" + }, + "countryCode": { + "description": "The two-letter ISO 3166 [7] country code in capital letters. Shall be present in case the \"area\" attribute is absent. May be absent if the \"area\" attribute is present (see note).", + "type": "string", + "maxLength": 2, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tIf both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.", + "x-etsi-ref": "6.5.2" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "LocationConstraints" + }, + "appName": { + "description": "Name of the MEC application. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appProvider": { + "description": "Provider of the MEC application. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appSoftVersion": { + "description": "Software version of the MEC application. The length of the value shall not exceed 32 characters.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "appDId", + "appName", + "appProvider", + "appSoftVersion", + "appDVersion", + "appDescription" + ], + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "vendorSpecificExt": { + "description": "Extension for vendor specific information (see note 1).", + "properties": { + "vendorId": { + "description": "Vendor identifier. The length of the value shall not exceed 32 characters. The rest of the structure of vendor specific extension is not defined.", + "type": "string", + "maxLength": 32, + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "vendorId" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + } + }, + "minItems": 0, + "required": [ + "appInfo" + ], + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Array (Structure (inlined))" + } + }, + "type": "object", + "x-etsi-notes": "NOTE 1:\tThe vendor specific extension allows submitting information on the application lists that have been made available to the device application of the corresponding vendor.\nNOTE 2:\tThe language support may be limited. The length of the value shall not exceed 128 characters.", + "x-etsi-ref": "6.2.2" + } \ No newline at end of file diff --git a/MEO/UEAPPCTX/SysUeAppsContext.robot b/MEO/UEAPPCTX/SysUeAppsContext.robot deleted file mode 100644 index f0ce384..0000000 --- a/MEO/UEAPPCTX/SysUeAppsContext.robot +++ /dev/null @@ -1,154 +0,0 @@ -''[Documentation] robot --outputdir ../../outputs ./SysUeAppContext.robot -... Test Suite to validate Bandwidth Management API (APPCTX) operations. - -*** Settings *** -Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot -Resource resources/UeAppsContextAPI.robot -Library String -Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false - - -*** Test Cases *** -Creation of the application context - [Documentation] TC_MEC_MEO_UEAPPCTX_001_OK - ... Check that the IUT acknowledges the creation of the application context when requested by an UE Application - ... Reference ETSI GS MEC 016 V1.1.1, clause 7.4.3.4 - ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext - Create application context ${CREATE_APP_CTX} - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is AppContext - Should Be True ${response['body']['appContext']['appInfo']['appName']} == ${APP_NAME} - # Postamble - Delete an application context ${APP_CTX_ID} - - -Creation of the application context with wrong parameters - [Documentation] TC_MEC_MEO_UEAPPCTX_001_BR - ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 016 V1.1.1, clause 7.4.3.4 - ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext - Create application context ${CREATE_APP_CTX_BR} - Check HTTP Response Status Code Is 400 - Check ProblemDetails 400 - - -Update of the application context - [Documentation] TC_MEC_MEO_UEAPPCTX_002_OK - ... Check that the IUT updates the application callback reference when commanded by an UE Application - ... Reference ETSI GS MEC 016 V1.1.1, clause 7.5.3.2 - ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext - # Preamble - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Create an application context - # Test Body - ${CREATE_APP_CTX}= Set Variable ${CALLBACK_REFERENCE_1} - Update application context ${APP_CTX_ID} ${CREATE_APP_CTX} - Check HTTP Response Status Code Is 204 - Check HTTP Response Body Json Schema Is AppContext - Should Be True ${response['body']['appContext']['callbackReference']} == ${CALLBACK_REFERENCE_1} - # Postamble - Delete an application context ${APP_CTX_ID} - - -Update of the application context with wrong parameters - [Documentation] TC_MEC_MEO_UEAPPCTX_002_BR - ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 016 V1.1.1, clause 7.5.3.2 - ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext - # Preamble - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Create an application context - # Test Body - ${CREATE_APP_CTX}= Set Variable '' # Empty string - Update application context ${APP_CTX_ID} ${CREATE_APP_CTX} - Check HTTP Response Status Code Is 400 - Check ProblemDetails 400 - # Postamble - Delete an application context ${APP_CTX_ID} - - -Update of the application context with unknown URI - [Documentation] TC_MEC_MEO_UEAPPCTX_002_NF - ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... Reference ETSI GS MEC 016 V1.1.1, clause 7.5.3.2 - ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext - # Preamble - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Create an application context - # Test Body - ${CREATE_APP_CTX}= Set Variable ${CALLBACK_REFERENCE_1} - Update application context ${NON_EXISTENT_APP_CTX_ID} ${CREATE_APP_CTX} - Check HTTP Response Status Code Is 404 - Check ProblemDetails 404 - # Postamble - Delete an application context ${APP_CTX_ID} - - -Delete of the application context - [Documentation] TC_MEC_MEO_UEAPPCTX_003_OK - ... Check that the IUT deletes the application context when commanded by an UE Application - ... Reference ETSI GS MEC 016 V1.1.1, clause 7.5.3.5 - ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext - # Preamble - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Create an application context - # Test Body - Delete application context ${APP_CTX_ID} - Check HTTP Response Status Code Is 204 - - -Delete of the application context with non esistent APP CTX ID - [Documentation] TC_MEC_MEO_UEAPPCTX_003_NF - ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... Reference ETSI GS MEC 016 V1.1.1, clause 7.5.3.5 - ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext - # Preamble - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - # AppCtx not created! - # Test Body - Delete application context ${APP_CTX_ID} - Check HTTP Response Status Code Is 404 - Check ProblemDetails 404 - - -*** Keywords *** -Create application context - [Arguments] ${content} - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Post /exampleAPI/mx2/v2/app_contexts ${content} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Update application context - [Arguments] ${context_id} ${content} - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Put /exampleAPI/mx2/v2/app_contexts/${context_id} ${content} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Delete application context - [Arguments] ${context_id} - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Delete /exampleAPI/mx2/v2/app_contexts/${context_id} - ${output}= Output response - Set Suite Variable ${response} ${output} diff --git a/MEO/UEAPPCTX/environment/variables.txt b/MEO/UEAPPCTX/environment/variables.txt deleted file mode 100644 index 16ba3c1..0000000 --- a/MEO/UEAPPCTX/environment/variables.txt +++ /dev/null @@ -1,18 +0,0 @@ -*** Variables *** -${MEC-APP_SCHEMA} http -#${MEC-APP_HOST} 172.28.4.87 -#${MEC-APP_HOST} 127.0.0.1 -${MEC-APP_HOST} 192.168.56.1 -${MEC-APP_PORT} 8081 -${APP_CTX_ID} appCtx01 -${NON_EXISTENT_APP_CTX_ID} appCtx99 -${UE_APP_ID} ueIdAppCtx01 -${APP_NAME} MyWornderfulApp -${WRONG_CREATE_APP_CTX} UnknownApp -${CALLBACK_REFERENCE} http://www.acme.com/MyWonderfulApp/v1 -${CALLBACK_REFERENCE_1} http://www.acme.com/MyWonderfulApp/v2 -${CREATE_APP_CTX} { "contextId": "${APP_CTX_ID}", "associateUeAppId": "${UE_APP_ID}", "callbackReference": "${CALLBACK_REFERENCE}", "appInfo": { "appName": "${APP_NAME}", "appProvider": "ACME & Co", "appSoftVersion": "1.0.0.1", "appDescription": "This is a wonderful test application", "referenceURL": "http://www.acme.com/MyWonderfulPackage", "appPackageSource": "MyWonderfulPackage" } } -${CREATE_APP_CTX_BR} { "context": "${APP_CTX_ID}", "associateUeAppId": "${UE_APP_ID}", "callbackReference": "${CALLBACK_REFERENCE}", "appInfo": { "appName": "${APP_NAME}", "appProvider": "ACME & Co", "appSoftVersion": "1.0.0.1", "appDescription": "This is a wonderful test application", "referenceURL": "http://www.acme.com/MyWonderfulPackage", "appPackageSource": "MyWonderfulPackage" } } -${SERVICE_CONT_BR} UnknownServiceCont - -${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/MEO/UEAPPCTX/resources/UeAppsContextAPI.robot b/MEO/UEAPPCTX/resources/UeAppsContextAPI.robot deleted file mode 100644 index a8c94d0..0000000 --- a/MEO/UEAPPCTX/resources/UeAppsContextAPI.robot +++ /dev/null @@ -1,35 +0,0 @@ -*** Settings *** -Resource ../environment/variables.txt -Resource ../../../pics.txt -Resource ../../../GenericKeywords.robot -Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false -Library JSONSchemaLibrary schemas/ - - -*** Keywords *** -Create an application context - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Post /exampleAPI/mx2/v2/app_contexts ${CREATE_APP_CTX} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is AppContext - Set Suite Variable ${APP_CTX_ID} ${response['body']['contextId'] - Should Not Be Empty ${APP_CTX_ID} - - -Delete an application context - [Arguments] ${context_id} - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Delete /exampleAPI/mx2/v2/app_contexts/${context_id} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 204 diff --git a/MEO/UEAPPCTX/schemas/UEAppInterfaceAPI.schema.json b/MEO/UEAPPCTX/schemas/UEAppInterfaceAPI.schema.json deleted file mode 100644 index 9f1bc75..0000000 --- a/MEO/UEAPPCTX/schemas/UEAppInterfaceAPI.schema.json +++ /dev/null @@ -1,618 +0,0 @@ -{ - "openapi": "3.0.2", - "info": { - "title": "UE Application Interface API", - "version": "1.1.1", - "description": "The ETSI MEC ISG MEC016 UE Application Interface API described using OpenAPI", - "license": { - "name": "ETSI Forge copyright notice", - "url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt" - }, - "contact": { - "email": "cti_support@etsi.org" - } - }, - "externalDocs": { - "description": "ETSI GS MEC016 UE Application Interface API, V1.1.1", - "url": "http://www.etsi.org/deliver/etsi_gs/MEC/001_099/016/01.01.01_60/gs_MEC016v010101p.pdf" - }, - "security": [ - { - "OauthSecurity": [ - "all" - ] - } - ], - "servers": [ - { - "url": "http://127.0.0.1:8081/mx2/v1" - }, - { - "url": "https://127.0.0.1:8081/mx2/v1" - } - ], - "tags": [ - { - "name": "appList" - }, - { - "name": "appContext" - } - ], - "paths": { - "/app_list": { - "get": { - "description": "Used to query information about the available MEC applications.", - "operationId": "AppList_GET", - "tags": [ - "appList" - ], - "parameters": [ - { - "$ref": "#/components/parameters/Query.AppName" - }, - { - "$ref": "#/components/parameters/Query.AppProvider" - }, - { - "$ref": "#/components/parameters/Query.AppSoftVersion" - }, - { - "$ref": "#/components/parameters/Query.ServiceCont" - }, - { - "$ref": "#/components/parameters/Query.VendorId" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/AppList" - }, - "400": { - "$ref": "#/components/responses/Error.400" - }, - "401": { - "$ref": "#/components/responses/Error.401" - }, - "403": { - "$ref": "#/components/responses/Error.403" - }, - "404": { - "$ref": "#/components/responses/Error.404" - } - } - } - }, - "/app_contexts": { - "post": { - "description": "The POST method can be used to create a new application context. Upon success, the response contains entity body describing the created application context.", - "operationId": "AppContext_POST", - "tags": [ - "appContext" - ], - "requestBody": { - "$ref": "#/components/requestBodies/AppContext" - }, - "responses": { - "201": { - "$ref": "#/components/responses/AppContext" - }, - "400": { - "$ref": "#/components/responses/Error.400" - }, - "401": { - "$ref": "#/components/responses/Error.401" - }, - "403": { - "$ref": "#/components/responses/Error.403" - }, - "404": { - "$ref": "#/components/responses/Error.404" - } - } - } - }, - "/app_contexts/{contextId}": { - "parameters": [ - { - "$ref": "#/components/parameters/Path.ContextId" - } - ], - "put": { - "description": "The PUT method is used to update the callback reference of the existing application context. Upon successful operation, the target resource is updated with new callback reference.", - "operationId": "AppContextId_PUT", - "tags": [ - "appContext" - ], - "requestBody": { - "$ref": "#/components/requestBodies/AppContext" - }, - "responses": { - "204": { - "description": "No Content." - }, - "400": { - "$ref": "#/components/responses/Error.400" - }, - "401": { - "$ref": "#/components/responses/Error.401" - }, - "403": { - "$ref": "#/components/responses/Error.403" - }, - "404": { - "$ref": "#/components/responses/Error.404" - } - } - }, - "delete": { - "description": "The DELETE method is used to delete the resource that represents the existing application context.", - "operationId": "AppContextId_DEL", - "tags": [ - "appContext" - ], - "responses": { - "204": { - "description": "No Content" - }, - "400": { - "$ref": "#/components/responses/Error.400" - }, - "401": { - "$ref": "#/components/responses/Error.401" - }, - "403": { - "$ref": "#/components/responses/Error.403" - }, - "404": { - "$ref": "#/components/responses/Error.404" - } - } - } - } - }, - "components": { - "parameters": { - "Query.AppName": { - "name": "appName", - "in": "query", - "description": "Name to identify the MEC application", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Query.AppProvider": { - "name": "appProvider", - "in": "query", - "description": "Provider of the MEC application", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Query.AppSoftVersion": { - "name": "appSoftVersion", - "in": "query", - "description": "Software version of the MEC application", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Query.ServiceCont": { - "name": "serviceCont", - "in": "query", - "description": "Required service continuity mode for this application", - "required": false, - "schema": { - "type": "string", - "enum": [ - "SERVICE_CONTINUITY_NOT_REQUIRED", - "SERVICE_CONTINUITY_REQUIRED" - ] - } - }, - "Query.VendorId": { - "name": "vendorId", - "in": "query", - "description": "Vendor identifier", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Path.ContextId": { - "name": "contextId", - "in": "path", - "description": "Uniquely identifies the application context in the MEC system. It is assigned by the MEC system and included in the response to an AppContext create.", - "required": true, - "schema": { - "type": "string" - } - } - }, - "requestBodies": { - "AppContext": { - "description": "Uniquely identifies the application context in the MEC system. It is assigned by the MEC system and included in the response to an AppContext create.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppContext" - } - } - }, - "required": true - } - }, - "responses": { - "AppContext": { - "description": "The response body contains the Application Context as it was created by the MEC system", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppContext" - } - } - } - }, - "AppList": { - "description": "The response body contains the ApplicationList resource available for the querying UE application", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApplicationList" - } - } - } - }, - "Error.400": { - "description": "Bad Request. It is used to indicate that incorrect parameters were passed to the request.", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "text/plain": { - "schema": { - "$ref": "#/components/schemas/Empty" - } - } - } - }, - "Error.401": { - "description": "Unauthorized. It is used when the client did not submit the appropriate credentials.", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "text/plain": { - "schema": { - "$ref": "#/components/schemas/Empty" - } - } - } - }, - "Error.403": { - "description": "Forbidden. The operation is not allowed given the current status of the resource. ", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "Error.404": { - "description": "Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI.", - "content": { - "application/problem+json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "text/plain": { - "schema": { - "$ref": "#/components/schemas/Empty" - } - } - } - } - }, - "securitySchemes": { - "OauthSecurity": { - "type": "oauth2", - "flows": { - "clientCredentials": { - "tokenUrl": "https://oauth.exampleAPI/token", - "scopes": { - "all": "Single oauth2 scope for API" - } - } - } - } - }, - "schemas": { - "Empty": { - "description": "Empty schema" - }, - "ProblemDetails": { - "type": "object", - "properties": { - "type": { - "$ref": "#/components/schemas/Problem.type" - }, - "title": { - "$ref": "#/components/schemas/Problem.title" - }, - "status": { - "$ref": "#/components/schemas/Problem.status" - }, - "detail": { - "$ref": "#/components/schemas/Problem.detail" - }, - "instance": { - "$ref": "#/components/schemas/Problem.instance" - } - } - }, - "Problem.type": { - "type": "string", - "format": "uri", - "description": "A URI reference according to IETF RFC 3986 that identifies the problem type" - }, - "Problem.title": { - "type": "string", - "description": "A short, human-readable summary of the problem type" - }, - "Problem.status": { - "type": "integer", - "format": "uint32", - "description": "The HTTP status code for this occurrence of the problem" - }, - "Problem.detail": { - "type": "string", - "description": "A human-readable explanation specific to this occurrence of the problem" - }, - "Problem.instance": { - "type": "string", - "format": "uri", - "description": "A URI reference that identifies the specific occurrence of the problem" - }, - "ApplicationList": { - "description": "Information on available applications", - "type": "object", - "properties": { - "appInfo": { - "$ref": "#/components/schemas/AppInfo" - }, - "vendorSpecificExt": { - "$ref": "#/components/schemas/VendorSpecificExt" - } - } - }, - "AppContext": { - "description": "Information on application context created by the MEC system", - "type": "object", - "required": [ - "contextId", - "associateUeAppId", - "appInfo" - ], - "properties": { - "contextId": { - "$ref": "#/components/schemas/ContextId" - }, - "associateUeAppId": { - "$ref": "#/components/schemas/AssociateUeAppId" - }, - "callbackReference": { - "$ref": "#/components/schemas/CallbackReference" - }, - "appInfo": { - "$ref": "#/components/schemas/RequiredAppInfo" - } - } - }, - "NotificationEvent": { - "description": "The parameters used in the method \"Receiving notification events\".", - "type": "object", - "required": [ - "referenceURI" - ], - "properties": { - "referenceURI": { - "$ref": "#/components/schemas/ReferenceURL" - } - } - }, - "VendorSpecificExtList": { - "description": "Extension for vendor specific information.", - "type": "array", - "minItems": 0, - "items": { - "$ref": "#/components/schemas/VendorSpecificExt" - } - }, - "VendorSpecificExt": { - "description": "Extension for vendor-specific information", - "required": [ - "vendorId" - ], - "properties": { - "vendorId": { - "$ref": "#/components/schemas/VendorId" - } - } - }, - "ContextId": { - "description": "Uniquely identifies the application context in the MEC system. Assigned by the MEC system and included in the response. The length of the value shall not exceed 32 characters.", - "type": "string" - }, - "AssociateUeAppId": { - "description": "Uniquely identifies the UE application. Included in the request. The length of the value shall not exceed 32 characters.", - "type": "string" - }, - "VendorId": { - "description": "Vendor identifier. The length of the value shall not exceed 32 characters. The rest of the structure of this vendor specific extension is not defined", - "type": "string" - }, - "AppInfo": { - "description": "User applications available for the UE application", - "type": "array", - "items": { - "$ref": "#/components/schemas/AppInfoList" - } - }, - "AppInfoList": { - "type": "object", - "required": [ - "appName", - "appProvider", - "appDescription" - ], - "properties": { - "appName": { - "$ref": "#/components/schemas/AppName" - }, - "appProvider": { - "$ref": "#/components/schemas/AppProvider" - }, - "appSoftVersion": { - "$ref": "#/components/schemas/AppSoftVersion" - }, - "appDescription": { - "$ref": "#/components/schemas/AppDescription" - }, - "appCharcs": { - "$ref": "#/components/schemas/AppCharcs" - } - } - }, - "RequiredAppInfo": { - "description": "Included in the request", - "type": "object", - "required": [ - "appName", - "appProvider", - "referenceURL" - ], - "properties": { - "appName": { - "$ref": "#/components/schemas/AppName" - }, - "appProvider": { - "$ref": "#/components/schemas/AppProvider" - }, - "appSoftVersion": { - "$ref": "#/components/schemas/AppSoftVersion" - }, - "appDescription": { - "$ref": "#/components/schemas/AppDescription" - }, - "referenceURL": { - "$ref": "#/components/schemas/ReferenceURL" - }, - "appPackageSource": { - "$ref": "#/components/schemas/AppPackageSource" - } - } - }, - "AppCharcs": { - "description": "The application characteristics relate to the system resources consumed by the application. UE application can use this information e.g., for estimating the cost of use of the application or for the expected user experience", - "type": "object", - "properties": { - "memory": { - "$ref": "#/components/schemas/Memory" - }, - "storage": { - "$ref": "#/components/schemas/Storage" - }, - "latency": { - "$ref": "#/components/schemas/Latency" - }, - "bandwidth": { - "$ref": "#/components/schemas/Bandwidth" - }, - "serviceCont": { - "$ref": "#/components/schemas/ServiceCont" - } - } - }, - "Memory": { - "description": "The maximum size in Mbytes of the memory resource reserved for the MEC application instance in the MEC system", - "type": "integer", - "format": "uint32" - }, - "Storage": { - "description": "The maximum size in Mbytes of the storage resource expected to be used by the MEC application instance in the MEC system", - "type": "integer", - "format": "uint32" - }, - "Latency": { - "description": "The target round trip time in milliseconds supported by the MEC system for the MEC application instance", - "type": "integer", - "format": "uint32" - }, - "Bandwidth": { - "description": "The required connection bandwidth in kbit/s for the use of the mobile edge application instance", - "type": "integer", - "format": "uint32" - }, - "ServiceCont": { - "description": "Required service continuity mode for this application.", - "type": "string", - "enum": [ - "SERVICE_CONTINUITY_NOT_REQUIRED", - "SERVICE_CONTINUITY_REQUIRED" - ] - }, - "AppName": { - "description": "Name of the MEC application. The length of the value shall not exceed 32 characters.", - "type": "string" - }, - "AppProvider": { - "description": "Provider of the MEC application. The length of the value shall not exceed 32 characters.", - "type": "string" - }, - "AppSoftVersion": { - "description": "Software version of the MEC application. The length of the value shall not exceed 32 characters.", - "type": "string" - }, - "AppDescription": { - "description": "Human readable description of the MEC application. NOTE the language support may be limited. The length of the value shall not exceed 128 characters.", - "type": "string" - }, - "CallbackReference": { - "description": "URI assigned by the UE application to receive application lifecycle related notifications. Included in the request. This subscription stays alive for the lifetime of the application context.", - "type": "string", - "format": "uri" - }, - "ReferenceURL": { - "description": "Address of the user application. Used as the reference URL for the application. Assigned by the MEC system and included in the response", - "type": "string", - "format": "uri" - }, - "AppPackageSource": { - "description": "URI of the application package. Included in the request if the application is not one in the ApplicationList. appPackageSource enables on-boarding of the application package into the MEC system. The application package shall comply with the definitions in clause 6.2.1.2 of ETSI GS MEC 010-2", - "type": "string", - "format": "uri" - } - } - } -} diff --git a/MEO/UEAPPS/SysUeApplications.robot b/MEO/UEAPPS/SysUeApplications.robot deleted file mode 100644 index f8d589f..0000000 --- a/MEO/UEAPPS/SysUeApplications.robot +++ /dev/null @@ -1,88 +0,0 @@ -''[Documentation] robot --outputdir ../../outputs ./SysUeApplications.robot -... Test Suite to validate Bandwidth Management API (APPCTX) operations. - -*** Settings *** -Resource ../UEAPPCTX/environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot -Resource ../UEAPPCTX/resources/UeAppsContextAPI.robot -Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false - - - -*** Test Cases *** -Get the list of the application contexts - [Documentation] TC_MEC_MEO_UEAPPS_001_OK - ... Check that the IUT responds with the list of user applications available when requested by an UE Application - ... Reference ETSI GS MEC 016 V1.1.1, clause 7.3.3.1 - ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList - # Preamble - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Create an application context - # Test Body - Retrieve the application contexts list ${APP_NAME} - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is AppInfo - Should Be True ${response['body']['appInfo']['appInfo'][0]['appName']} == ${APP_NAME} - # Postamble - Delete an application context ${APP_CTX_ID} - - -Get the list of the application contexts with wrong parameter - [Documentation] TC_MEC_MEO_UEAPPS_001_BR - ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 016 V1.1.1, clause 7.3.3.1 - ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList - # Preamble - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Create an application context - # Test Body - Retrieve the application contexts list with serviceCont ${SERVICE_CONT_BR} - Check HTTP Response Status Code Is 400 - Check ProblemDetails 400 - # Postamble - Delete an application context ${APP_CTX_ID} - - -Get the list of the application contexts with non esistent parameter - [Documentation] TC_MEC_MEO_UEAPPS_001_NF - ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... Reference ETSI GS MEC 016 V1.1.1, clause 7.3.3.1 - ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList - # Preamble - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - # AppInfo not created - # Test Body - Retrieve the application contexts list ${APP_NAME} - Check HTTP Response Status Code Is 404 - Check ProblemDetails 404 - - -*** Keywords *** -Retrieve the application contexts list - [Arguments] ${app_name} - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Post /exampleAPI/mx2/v2/app_list?appName=${app_name} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Retrieve the application contexts list with serviceCont - [Arguments] ${service_cont} - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Post /exampleAPI/mx2/v2/app_list?serviceCont=${service_cont} - ${output}= Output response - Set Suite Variable ${response} ${output} -- GitLab From 608d1148e85539e430c252dd24a36edd4363ac49 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Thu, 29 Apr 2021 18:08:16 +0200 Subject: [PATCH 27/63] Fix on MEC016 appList --- MEC016/MEO/UEAPPS/SysUeApplications.robot | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MEC016/MEO/UEAPPS/SysUeApplications.robot b/MEC016/MEO/UEAPPS/SysUeApplications.robot index 3c8545f..78ebf01 100644 --- a/MEC016/MEO/UEAPPS/SysUeApplications.robot +++ b/MEC016/MEO/UEAPPS/SysUeApplications.robot @@ -21,8 +21,8 @@ TP_MEC_MEC016_MEO_UEAPPS_001_OK Retrieve the application contexts list Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ApplicationList - FOR ${appInfo} IN @{response['body']['appInfo']['appInfo']} - ${passed} Run Keyword And Return Status Should Be Equal As Strings ${appInfo} ${APP_NAME} + FOR ${appInfo} IN @{response['body']['appList']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${appInfo['appInfo']['appName']} ${APP_NAME} Exit For Loop If ${passed} END Should Be True ${passed} @@ -48,8 +48,8 @@ TP_MEC_MEC016_MEO_UEAPPS_002_OK Retrieve the application contexts list using filters ${filter} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ApplicationList - FOR ${appInfo} IN @{response['body']['appInfo']['appInfo']} - ${passed} Run Keyword And Return Status Should Be Equal As Strings ${appInfo} ${APP_NAME} + FOR ${appInfo} IN @{response['body']['appList']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${appInfo['appInfo']['appName']} ${APP_NAME} Exit For Loop If ${passed} END Should Be True ${passed} -- GitLab From 798f94766e73dc488c51a10226ed379aeba3d2cc Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Fri, 30 Apr 2021 19:21:31 +0200 Subject: [PATCH 28/63] Fix MEC016 body for post requests --- MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot | 12 +++++------- MEC016/MEO/UEAPPCTX/jsons/AppContext.json | 2 +- MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json | 2 +- MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json | 4 ++-- MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json | 4 ++-- MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot | 10 ++++------ MEC016/MEO/UEAPPS/SysUeApplications.robot | 4 +--- 7 files changed, 16 insertions(+), 22 deletions(-) diff --git a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot index da3b162..cc33a74 100644 --- a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot +++ b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot @@ -21,6 +21,7 @@ TP_MEC_MEC016_MEO_UEAPPCTX_001_OK Create application context AppContext.json Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is AppContext + Check HTTP Response Header Contains Location Should Be Equal As Strings ${response['body']['appInfo']['appName']} MyNewWornderfulApp Set Suite Variable ${contextId} ${response['body']['contextId']} @@ -57,8 +58,6 @@ TP_MEC_MEC016_MEO_UEAPPCTX_002_OK # Test Body Update application context ${contextId} UpdateAppContext.json Check HTTP Response Status Code Is 204 - Check HTTP Response Body Json Schema Is AppContext - Should Be Equal As Strings ${response['body']['callbackReference']} http://127.0.0.1/callbackuri TP_MEC_MEC016_MEO_UEAPPCTX_002_BR [Documentation] @@ -105,7 +104,6 @@ TP_MEC_MEC016_MEO_UEAPPCTX_003_NF Should Be True ${PIC_SERVICES} == 1 Delete application context ${NON_EXISTING_CONTEXT_ID} Check HTTP Response Status Code Is 404 - Check ProblemDetails 404 *** Keywords *** @@ -114,9 +112,9 @@ Create application context Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - ${path} Catenate SEPATATOR= jsons/ ${content} + ${path} Catenate SEPARATOR= jsons/ ${content} ${body} Get Binary File ${path} - Post ${apiRoot}/${apiName}/${apiVersion}/app_contexts ${content} + Post ${apiRoot}/${apiName}/${apiVersion}/app_contexts ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -126,9 +124,9 @@ Create application context using wrong endpoint Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - ${path} Catenate SEPATATOR= jsons/ ${content} + ${path} Catenate SEPARATOR= jsons/ ${content} ${body} Get Binary File ${path} - Post ${apiRoot}/${apiName}/${apiVersion}/app_contexts_error ${content} + Post ${apiRoot}/${apiName}/${apiVersion}/app_contexts_error ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/MEC016/MEO/UEAPPCTX/jsons/AppContext.json b/MEC016/MEO/UEAPPCTX/jsons/AppContext.json index 6594d22..38f4741 100644 --- a/MEC016/MEO/UEAPPCTX/jsons/AppContext.json +++ b/MEC016/MEO/UEAPPCTX/jsons/AppContext.json @@ -2,7 +2,7 @@ "associateDevAppId":"MyNewWornderfulDevAppId", "appInfo":{ "appName":"MyNewWornderfulApp", - "appProvider":"TF012", + "appProvider":"TTF012", "appDVersion":"v0.0.1", "userAppInstanceInfo":[ { diff --git a/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json b/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json index c959895..6186f6a 100644 --- a/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json +++ b/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json @@ -2,7 +2,7 @@ "associateDevAppId":"MyNewWornderfulDevAppId", "appInfo":{ "app":"MyNewWornderfulApp", - "appProvider":"TF012", + "appProvider":"TTF012", "appDVersion":"v0.0.1", "userAppInstanceInfo":[ { diff --git a/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json index 8e3f5bf..cd0f9ef 100644 --- a/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json +++ b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json @@ -1,10 +1,10 @@ { "associateDevAppId":"MyNewWornderfulDevAppId", - "contextId": "MyNewWornderfulDevAppId", + "contextId": "1", "callbackReference": "http://127.0.0.1/callbackuri", "appInfo":{ "appName":"MyNewWornderfulApp", - "appProvider":"TF012", + "appProvider":"TTF012", "appDVersion":"v0.0.1", "userAppInstanceInfo":[ { diff --git a/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json index 19b16e8..dcdd441 100644 --- a/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json +++ b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json @@ -1,10 +1,10 @@ { "associateUeAppId":"MyNewWornderfulDevAppId", - "contextId": "MyNewWornderfulDevAppId", + "contextId": "1", "callbackReference": "http://127.0.0.1/callbackuri", "appInfo":{ "appName":"MyNewWornderfulApp", - "appProvider":"TF012", + "appProvider":"TTF012", "appDVersion":"v0.0.1", "userAppInstanceInfo":[ { diff --git a/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot b/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot index 1215753..14c37f0 100644 --- a/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot +++ b/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot @@ -43,8 +43,6 @@ TP_MEC_MEC016_MEO_UEAPPCTX_001_NF Should Be True ${PIC_SERVICES} == 1 Obtain Application Location Availability Task using wrong endpoint AppLocationAvailability.json Check HTTP Response Status Code Is 404 - - *** Keywords *** @@ -53,9 +51,9 @@ Obtain Application Location Availability Task Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - ${path} Catenate SEPATATOR= jsons/ ${content} + ${path}= Catenate SEPARATOR= jsons/ ${content} ${body} Get Binary File ${path} - Post ${apiRoot}/${apiName}/${apiVersion}/obtain_app_loc_availability ${content} + Post ${apiRoot}/${apiName}/${apiVersion}/obtain_app_loc_availability ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -65,8 +63,8 @@ Obtain Application Location Availability Task using wrong endpoint Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - ${path} Catenate SEPATATOR= jsons/ ${content} + ${path}= Catenate SEPARATOR= jsons/ ${content} ${body} Get Binary File ${path} - Post ${apiRoot}/${apiName}/${apiVersion}/obtain_app_loc_availability_error ${content} + Post ${apiRoot}/${apiName}/${apiVersion}/obtain_app_loc_availability_error ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/MEC016/MEO/UEAPPS/SysUeApplications.robot b/MEC016/MEO/UEAPPS/SysUeApplications.robot index 78ebf01..c7d379c 100644 --- a/MEC016/MEO/UEAPPS/SysUeApplications.robot +++ b/MEC016/MEO/UEAPPS/SysUeApplications.robot @@ -21,6 +21,7 @@ TP_MEC_MEC016_MEO_UEAPPS_001_OK Retrieve the application contexts list Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ApplicationList + ## Post condition FOR ${appInfo} IN @{response['body']['appList']} ${passed} Run Keyword And Return Status Should Be Equal As Strings ${appInfo['appInfo']['appName']} ${APP_NAME} Exit For Loop If ${passed} @@ -73,7 +74,6 @@ Retrieve the application contexts list Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} GET ${apiRoot}/${apiName}/${apiVersion}/app_list ${output}= Output response Set Suite Variable ${response} ${output} @@ -84,7 +84,6 @@ Retrieve the application contexts list using wrong endpoint Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} GET ${apiRoot}/${apiName}/${apiVersion}/app_list_error ${output}= Output response Set Suite Variable ${response} ${output} @@ -96,7 +95,6 @@ Retrieve the application contexts list using filters Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} GET ${apiRoot}/${apiName}/${apiVersion}/app_list?${filter} ${output}= Output response Set Suite Variable ${response} ${output} -- GitLab From 7f2630caea1b1760a58705313c90d14baa35a3c9 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Fri, 30 Apr 2021 19:29:33 +0200 Subject: [PATCH 29/63] Fix on Get File keyword --- MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot | 12 ++++++++---- MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot index cc33a74..cf640a3 100644 --- a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot +++ b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot @@ -113,7 +113,7 @@ Create application context Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} ${path} Catenate SEPARATOR= jsons/ ${content} - ${body} Get Binary File ${path} + ${body} Get File ${path} Post ${apiRoot}/${apiName}/${apiVersion}/app_contexts ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -125,7 +125,7 @@ Create application context using wrong endpoint Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} ${path} Catenate SEPARATOR= jsons/ ${content} - ${body} Get Binary File ${path} + ${body} Get File ${path} Post ${apiRoot}/${apiName}/${apiVersion}/app_contexts_error ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -136,7 +136,9 @@ Update application context Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Put ${apiRoot}/${apiName}/${apiVersion}/app_contexts/${context_id} ${content} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + Put ${apiRoot}/${apiName}/${apiVersion}/app_contexts/${context_id} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -146,7 +148,9 @@ Update application context using wrong endpoint Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Put ${apiRoot}/${apiName}/${apiVersion}/app_contexts_error/${context_id} ${content} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + Put ${apiRoot}/${apiName}/${apiVersion}/app_contexts_error/${context_id} ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot b/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot index 14c37f0..2d80510 100644 --- a/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot +++ b/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot @@ -52,7 +52,7 @@ Obtain Application Location Availability Task Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} ${path}= Catenate SEPARATOR= jsons/ ${content} - ${body} Get Binary File ${path} + ${body} Get File ${path} Post ${apiRoot}/${apiName}/${apiVersion}/obtain_app_loc_availability ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -64,7 +64,7 @@ Obtain Application Location Availability Task using wrong endpoint Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} ${path}= Catenate SEPARATOR= jsons/ ${content} - ${body} Get Binary File ${path} + ${body} Get File ${path} Post ${apiRoot}/${apiName}/${apiVersion}/obtain_app_loc_availability_error ${body} ${output}= Output response Set Suite Variable ${response} ${output} -- GitLab From 433eae948f9731e95db15155bdb1a54d91f15721 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Wed, 5 May 2021 09:45:36 +0200 Subject: [PATCH 30/63] Fix: Removing accept header when 204 no content is expected --- MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot | 5 ----- MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot | 1 - MEC016/MEO/UEAPPS/SysUeApplications.robot | 1 - 3 files changed, 7 deletions(-) diff --git a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot index cf640a3..146a80b 100644 --- a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot +++ b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot @@ -121,7 +121,6 @@ Create application context Create application context using wrong endpoint [Arguments] ${content} - Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} ${path} Catenate SEPARATOR= jsons/ ${content} @@ -133,7 +132,6 @@ Create application context using wrong endpoint Update application context [Arguments] ${context_id} ${content} - Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} ${path} Catenate SEPARATOR= jsons/ ${content} @@ -145,7 +143,6 @@ Update application context Update application context using wrong endpoint [Arguments] ${context_id} ${content} - Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} ${path} Catenate SEPARATOR= jsons/ ${content} @@ -156,7 +153,6 @@ Update application context using wrong endpoint Delete application context [Arguments] ${context_id} - Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} @@ -166,7 +162,6 @@ Delete application context Delete application context using wrong endpoint [Arguments] ${context_id} - Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} diff --git a/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot b/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot index 2d80510..34a03d6 100644 --- a/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot +++ b/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot @@ -60,7 +60,6 @@ Obtain Application Location Availability Task Obtain Application Location Availability Task using wrong endpoint [Arguments] ${content} - Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} ${path}= Catenate SEPARATOR= jsons/ ${content} diff --git a/MEC016/MEO/UEAPPS/SysUeApplications.robot b/MEC016/MEO/UEAPPS/SysUeApplications.robot index c7d379c..8b9f1e6 100644 --- a/MEC016/MEO/UEAPPS/SysUeApplications.robot +++ b/MEC016/MEO/UEAPPS/SysUeApplications.robot @@ -81,7 +81,6 @@ Retrieve the application contexts list Retrieve the application contexts list using wrong endpoint Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} GET ${apiRoot}/${apiName}/${apiVersion}/app_list_error -- GitLab From f70f9377c4b8fc88efa4c9b8c938f03953475b1c Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 6 May 2021 15:12:17 +0200 Subject: [PATCH 31/63] Added robot tests for MEC028. --- MEC028/WAI/AP_INFO/WaiApInfo.robot | 81 + MEC028/WAI/AP_INFO/environment/variables.txt | 14 + MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json | 777 ++++++ .../schemas/ProblemDetails.schema.json | 40 + MEC028/WAI/EXT_SUB/ExistingSubscription.robot | 120 + MEC028/WAI/EXT_SUB/environment/variables.txt | 17 + .../jsons/UpdateAssocStaSubscription.json | 11 + .../jsons/UpdateAssocStaSubscription_BR.json | 11 + .../schemas/AssocStaSubscription.schema.json | 109 + MEC028/WAI/STA_INFO/WaiStaInfo.robot | 81 + MEC028/WAI/STA_INFO/environment/variables.txt | 14 + .../schemas/ProblemDetails.schema.json | 38 + .../WAI/STA_INFO/schemas/StaInfo.schema.json | 789 ++++++ MEC028/WAI/SUB/WaiSubscription.robot | 142 + MEC028/WAI/SUB/environment/variables.txt | 18 + .../WAI/SUB/jsons/AssocStaSubscription.json | 7 + .../SUB/jsons/AssocStaSubscription_BR.json | 11 + .../schemas/AssocStaSubscription.schema.json | 109 + .../schemas/SubscriptionLinkList.schema.json | 272 ++ MEC028/outputs/log-20210506-145611.html | 2189 +++++++++++++++ MEC028/outputs/log.html | 2189 +++++++++++++++ MEC028/outputs/output-20210506-145611.xml | 1000 +++++++ MEC028/outputs/output.xml | 1000 +++++++ MEC028/outputs/report-20210506-145611.html | 2458 +++++++++++++++++ MEC028/outputs/report.html | 2458 +++++++++++++++++ 25 files changed, 13955 insertions(+) create mode 100644 MEC028/WAI/AP_INFO/WaiApInfo.robot create mode 100644 MEC028/WAI/AP_INFO/environment/variables.txt create mode 100644 MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json create mode 100644 MEC028/WAI/AP_INFO/schemas/ProblemDetails.schema.json create mode 100644 MEC028/WAI/EXT_SUB/ExistingSubscription.robot create mode 100644 MEC028/WAI/EXT_SUB/environment/variables.txt create mode 100644 MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription.json create mode 100644 MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription_BR.json create mode 100644 MEC028/WAI/EXT_SUB/schemas/AssocStaSubscription.schema.json create mode 100644 MEC028/WAI/STA_INFO/WaiStaInfo.robot create mode 100644 MEC028/WAI/STA_INFO/environment/variables.txt create mode 100644 MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json create mode 100644 MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json create mode 100644 MEC028/WAI/SUB/WaiSubscription.robot create mode 100644 MEC028/WAI/SUB/environment/variables.txt create mode 100644 MEC028/WAI/SUB/jsons/AssocStaSubscription.json create mode 100644 MEC028/WAI/SUB/jsons/AssocStaSubscription_BR.json create mode 100644 MEC028/WAI/SUB/schemas/AssocStaSubscription.schema.json create mode 100644 MEC028/WAI/SUB/schemas/SubscriptionLinkList.schema.json create mode 100644 MEC028/outputs/log-20210506-145611.html create mode 100644 MEC028/outputs/log.html create mode 100644 MEC028/outputs/output-20210506-145611.xml create mode 100644 MEC028/outputs/output.xml create mode 100644 MEC028/outputs/report-20210506-145611.html create mode 100644 MEC028/outputs/report.html diff --git a/MEC028/WAI/AP_INFO/WaiApInfo.robot b/MEC028/WAI/AP_INFO/WaiApInfo.robot new file mode 100644 index 0000000..c89f062 --- /dev/null +++ b/MEC028/WAI/AP_INFO/WaiApInfo.robot @@ -0,0 +1,81 @@ +''[Documentation] robot --outputdir ../../outputs ./WaiApInfo.robot +... Test Suite to validate WLAN Information API (AP_INFO) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + + +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_001_OK + [Documentation] + ... Check that the IUT responds with the list of WLAN Access Point + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the access point information + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApInfo + ## Post condition + FOR ${apInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${apInfo['apId']['macId']} ${MAC_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + +TP_MEC_MEC028_SRV_WAI_002_OK + [Documentation] + ... Check that the IUT responds with the list of WLAN Access Point filtered by the macId provided as query parameter + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the access point information using filters ${filter} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApInfo + ## Post condition + FOR ${apInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${apInfo['apId']['macId']} ${MAC_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + + +TP_MEC_MEC028_SRV_WAI_002_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the access point information using filters ${bad_filter} + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + + +*** Keywords *** +Retrieve the access point information + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/ap/ap_information + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the access point information using filters + [Arguments] ${filter} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/ap/ap_information?filter=${filter} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC028/WAI/AP_INFO/environment/variables.txt b/MEC028/WAI/AP_INFO/environment/variables.txt new file mode 100644 index 0000000..ec621fe --- /dev/null +++ b/MEC028/WAI/AP_INFO/environment/variables.txt @@ -0,0 +1,14 @@ +*** Variables *** +${apiRoot} +${apiName} wai +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 127.0.0.1 +${MEC-APP_PORT} 8082 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${MAC_ID} macId01 +${filter} (eq,apId/macId,macId01) +${bad_filter} (eq,apId/mac,macId01) \ No newline at end of file diff --git a/MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json b/MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json new file mode 100644 index 0000000..19cc713 --- /dev/null +++ b/MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json @@ -0,0 +1,777 @@ +{ + "items": { + "properties": { + "apId": { + "properties": { + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique Identifier assigned to an Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks including Basic Service Set and Extended Service Set.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "apLocation": { + "properties": { + "civicLocation": { + "properties": { + "ca0": { + "description": "Language", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca1": { + "description": "National subdivisions (state, canton, region,province, prefecture) ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca128": { + "description": "Script", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca16": { + "description": "Leading street direction", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca17": { + "description": "Trailing street suffix", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca18": { + "description": "Street suffix or type", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca19": { + "description": "House number", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca2": { + "description": "County, parish, gun (JP), district (IN)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca20": { + "description": "House number suffix", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca21": { + "description": "Landmark of vanity address", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca22": { + "description": "Additional location information", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca23": { + "description": "Name (residence and office occupant)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca24": { + "description": "Postal/zip code", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca25": { + "description": "Building (structure)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca26": { + "description": "Unit (apartment/suite)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca27": { + "description": "Floor", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca28": { + "description": "Room", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca29": { + "description": "Type of place", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca3": { + "description": "City, township, shi (JP)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca30": { + "description": "Postal community name", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca31": { + "description": "Post office box", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca32": { + "description": "Additional code", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca33": { + "description": "Seat (desk.cubicle, workstation)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca34": { + "description": "Primary road name", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca35": { + "description": "Road section", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca36": { + "description": "Branch road name", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca37": { + "description": "Sub-branch road name", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca38": { + "description": "Street name pre-modifier", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca39": { + "description": "Street name post-modifier", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca4": { + "description": "City division, borough, city district, ward, chou (JP)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca5": { + "description": "Neighborhood, block", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca6": { + "description": "Group of streets below the neighborhood level ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "country": { + "description": "The two-letter ISO 3166 [i.9] country code in capital ASCII letters, e.g. DE or US, as per ISO 3166 [i.9]", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "country" + ], + "type": "object", + "x-etsi-ref": "6.5.20" + }, + "geolocation": { + "properties": { + "altitude": { + "description": "The altitude value of location as defined in IETF RFC 6225 [6]", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "altitudeType": { + "description": "The type description for altitude information e.g. floors or meters as defined in IETF RFC 6225 [6]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "altitudeUncertainty": { + "description": "The uncertainty for altitude information as defined in IETF RFC 6225 [6]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "datum": { + "description": "The datum value to express how coordinates are organized and related to real world as defined in IETF RFC 6225 [6]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "lat": { + "description": "The latitude value of location as defined in IETF RFC 6225 [6]", + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint64" + }, + "latUncertainty": { + "description": "The uncertainty for Latitude information as defined in IETF RFC 6225 [6]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "long": { + "description": "The longitude value of location as defined in IETF RFC 6225 [6]", + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint64" + }, + "longUncertainty": { + "description": "The uncertainty for Longitude information as defined in IETF RFC 6225 [6]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + } + }, + "required": [ + "latUncertainty", + "lat", + "longUncertainty", + "long", + "datum" + ], + "type": "object", + "x-etsi-ref": "6.5.19" + } + }, + "type": "object", + "x-etsi-ref": "6.5.9" + }, + "apNeighbor": { + "properties": { + "bssid": { + "description": "BSS Id of the Access Point that is being reported.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "bssidInfo": { + "description": "Additional information related to Access Point that is being reported such as AP reachability, security, key scope, Mobility Domain, HT/VHT capability and Fine Time Measurements.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt32" + }, + "channel": { + "description": "The channel currently used by this Access Point.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "operatingClass": { + "description": "The channel set of the AP indicated by this BSSID.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "phyType": { + "description": "PHY type of the AP indicated by this BSSID. It is an integer value coded according to the value of the dot11PHYType.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + } + }, + "required": [ + "bssid", + "bssidInfo", + "operatingClass", + "channel", + "phyType" + ], + "type": "object", + "x-etsi-ref": "6.5.10" + }, + "bssLoad": { + "properties": { + "availAdmCap": { + "description": "Available Admission Capacity that specifies the remaining amount of medium time available via explicit admission control, in units of 32 s/s.", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + }, + "channelUtilization": { + "description": "The percentage of time, linearly scaled with 255 representing 100 %, that the AP sensed the medium was busy, as indicated by either the physical or virtual Carrier Sense (CS) mechanism.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + }, + "staCount": { + "description": "An unsigned integer that indicates the total number of STAs currently associated with this BSS.", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt16" + } + }, + "required": [ + "staCount", + "channelUtilization", + "availAdmCap" + ], + "type": "object", + "x-etsi-ref": "6.5.7" + }, + "channel": { + "description": "Channel configured for the Access Point.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "extBssLoad": { + "properties": { + "muMimoStaCount": { + "description": "Indicates the total number of STAs currently associated with this BSS that have a 1 in the MU Beamformee Capable field of their VHT Capabilities element.", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt16" + }, + "obsSec20MhzUtil": { + "description": "Observable loading on each of the secondary 20 MHz channel.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "obsSec40MhzUtil": { + "description": "Observable loading on each of the secondary 40 MHz channel.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "obsSec80MhzUtil": { + "description": "Observable loading on each of the secondary 80 MHz channel.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "spatStreamUnderUtil": { + "description": "The percentage of time, linearly scaled with 255 representing 100 %, that the AP has underutilized spatial domain resources for given busy time of the medium.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + } + }, + "required": [ + "muMimoStaCount", + "spatStreamUnderUtil", + "obsSec20MhzUtil", + "obsSec40MhzUtil", + "obsSec80MhzUtil" + ], + "type": "object", + "x-etsi-ref": "6.5.8" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "wanMetrics": { + "properties": { + "downlinkLoad": { + "description": "1-octet positive integer representing the current percentage loading of the downlink WAN connection, scaled linearly with 255 representing 100 %, as measured over an interval the duration of which is reported in Load Measurement Duration. In cases where the downlink load is unknown to the AP, the value is set to zero.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + }, + "downlinkSpeed": { + "description": "4-octet positive integer whose value is an estimate of the WAN Backhaul link current downlink speed in kilobits per second.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "lmd": { + "description": "The LMD (Load Measurement Duration) field is a 2-octet positive integer representing the duration over which the Downlink Load and Uplink Load have been measured, in tenths of a second. When the actual load measurement duration is greater than the maximum value, the maximum value will be reported. The value of the LMD field is set to 0 when neither the uplink nor downlink load can be computed. When the uplink and downlink loads are computed over different intervals, the maximum interval is reported.", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + }, + "uplinkLoad": { + "description": "1-octet positive integer representing the current percentage loading of the uplink WAN connection, scaled linearly with 255 representing 100 %, as measured over an interval, the duration of which is reported in Load Measurement Duration. In cases where the uplink load is unknown to the AP, the value is set to zero.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "uplinkSpeed": { + "description": "4-octet positive integer whose value is an estimate of the WAN Backhaul link's current uplink speed in kilobits per second.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt32" + }, + "wanInfo": { + "description": "Info about WAN link status, link symmetricity and capacity currently used.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + } + }, + "required": [ + "wanInfo", + "downlinkSpeed", + "uplinkSpeed", + "downlinkLoad", + "uplinkLoad", + "lmd" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "wlanCap": { + "properties": { + "dmg": { + "properties": { + "ExtScMcsCap": { + "description": "Extended SC MCS capabilities as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dmgApOrPcpCapInfo": { + "description": "DMG AP or PCP capabilities information as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + }, + "dmgStaBeamTrackTimeLimit": { + "description": "DMG station beam tracking time limit as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + }, + "dmgStaCapInfo": { + "description": "DMG station capabilities information as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint64" + }, + "maxNrBasicAmsduSubframes": { + "description": "Number of basic A-MSDU subframes in A-MSDU as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "maxNrShortAmsduSubframes": { + "description": "Number of short A-MSDU subframes in A-MSDU as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "sarCap": { + "description": "SAR capabilities as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "tddCap": { + "description": "TDD capabilities as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + } + }, + "required": [ + "dmgStaCapInfo", + "dmgApOrPcpCapInfo", + "dmgStaBeamTrackTimeLimit", + "ExtScMcsCap", + "maxNrBasicAmsduSubframes", + "maxNrShortAmsduSubframes", + "tddCap", + "sarCap" + ], + "type": "object", + "x-etsi-ref": "6.5.17" + }, + "edmg": { + "properties": { + "ampduParameters": { + "description": "A-MPDU parameters as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "reserved": { + "description": "", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "supportedMcs": { + "description": "Supported MCS as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "trnParameters": { + "description": "Training parameters as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + } + }, + "required": [ + "ampduParameters", + "trnParameters", + "supportedMcs" + ], + "type": "object", + "x-etsi-ref": "6.5.18" + }, + "he": { + "properties": { + "heMacCapInfo": { + "description": "MAC capabilities of an Access Point.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "hePhyCapinfo": { + "description": "PHY capabilities of an Access Point.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "ppeThresholds": { + "description": "PPE Threshold determines the nominal packet padding value for a HE PPDU.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "not defined" + }, + "supportedHeMcsNssSet": { + "description": "Supported MCS and NSS Set.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + } + }, + "required": [ + "heMacCapInfo", + "hePhyCapinfo", + "supportedHeMcsNssSet" + ], + "type": "object", + "x-etsi-ref": "6.5.16" + }, + "ht": { + "properties": { + "ampduParameters": { + "description": "A-MPDU parameters as defined in IEEE 802.11-2016 [8].", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + }, + "aselCap": { + "description": "ASEL capabilities as defined in IEEE 802.11-2016 [8].", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + }, + "htCapabilityInfo": { + "description": "HT Capability Information as defined in IEEE 802.11-2016 [8].", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt16" + }, + "htExtendedCap": { + "description": "Extended HT Capabilities as defined in IEEE 802.11-2016 [8].", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt16" + }, + "supportedMcsSet": { + "description": "Supported MCS set as defined in IEEE 802.11-2016 [8].", + "format": "uint128", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint128" + }, + "txBeamFormCap": { + "description": "Transmit Beamforming Capabilities as defined in IEEE 802.11-2016 [8].", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt32" + } + }, + "required": [ + "htCapabilityInfo", + "ampduParameters", + "supportedMcsSet", + "htExtendedCap", + "txBeamFormCap", + "aselCap" + ], + "type": "object", + "x-etsi-ref": "6.5.14" + }, + "vht": { + "properties": { + "vhtCapInfo": { + "description": "VHT capabilities Info as defined in IEEE 802.11-2016 [8].", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt32" + }, + "vhtMcsNss": { + "description": "Supported VHT-MCS and NSS Set as defined in IEEE 802.11-2016 [8].", + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt64" + } + }, + "required": [ + "vhtCapInfo", + "vhtMcsNss" + ], + "type": "object", + "x-etsi-ref": "6.5.15" + } + }, + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "apId" + ], + "type": "object", + "x-etsi-ref": "6.2.2" +} +} \ No newline at end of file diff --git a/MEC028/WAI/AP_INFO/schemas/ProblemDetails.schema.json b/MEC028/WAI/AP_INFO/schemas/ProblemDetails.schema.json new file mode 100644 index 0000000..af823da --- /dev/null +++ b/MEC028/WAI/AP_INFO/schemas/ProblemDetails.schema.json @@ -0,0 +1,40 @@ +{ + "ProblemDetails": { + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "title": { + "description": "A short, human-readable summary of the problem type", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "type": { + "description": "A URI reference according to IETF RFC 3986 that identifies the problem type", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + } + }, + "type": "object" + } +} \ No newline at end of file diff --git a/MEC028/WAI/EXT_SUB/ExistingSubscription.robot b/MEC028/WAI/EXT_SUB/ExistingSubscription.robot new file mode 100644 index 0000000..f6b1123 --- /dev/null +++ b/MEC028/WAI/EXT_SUB/ExistingSubscription.robot @@ -0,0 +1,120 @@ +''[Documentation] robot --outputdir ../../outputs ./ExistingSubscription.robot +... Test Suite to validate WLAN Information API (EXT_SUB) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + +#GET +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_008_OK + [Documentation] + ... Check that the IUT responds with the list of Subscription" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve existing subscription information ${SUB_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AssocStaSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URI} + Should Be Equal As Strings ${response['body']['apId']['macId']} ${MAC_ID} + +TP_MEC_MEC028_SRV_WAI_008_NF + [Documentation] + ... Check that the IUT responds with an error when a request for existing subscription with incorrect parameters is sent" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve existing subscription information ${NOT_EXISTING_SUB_ID} + Check HTTP Response Status Code Is 404 + + +#PUT +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_009_OK + [Documentation] + ... Check that the IUT responds with a Notification Subscription when it is modified" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.2 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Modify existing subscription information ${SUB_ID} UpdateAssocStaSubscription.json + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AssocStaSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + Should Be Equal As Strings ${response['body']['callbackReference']} ${NEW_CALLBACK_URI} + Should Be Equal As Strings ${response['body']['apId']['macId']} ${MAC_ID} + +TP_MEC_MEC028_SRV_WAI_009_BR + [Documentation] + ... Check that the IUT responds with an error when an invalid field is set in the subscription modification request" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.2 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Modify existing subscription information ${SUB_ID} UpdateAssocStaSubscription_BR.json + Check HTTP Response Status Code Is 400 + +#DELETE +TP_MEC_MEC028_SRV_WAI_010_OK + [Documentation] + ... Check that the IUT responds with 204 when an existing subscription is correctly deleted" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.5 + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Remove existing subscription information ${SUB_ID} + Check HTTP Response Status Code Is 204 + +TP_MEC_MEC028_SRV_WAI_010_NF + [Documentation] + ... Check that the IUT responds with an error when an not existing subscription cannot be deleted" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.5 + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Remove existing subscription information ${NOT_EXISTING_SUB_ID} + Check HTTP Response Status Code Is 404 + +*** Keywords *** +Retrieve existing subscription information + [Arguments] ${SUB_ID} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Modify existing subscription information + [Arguments] ${SUB_ID} ${content} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Remove existing subscription information + [Arguments] ${SUB_ID} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC028/WAI/EXT_SUB/environment/variables.txt b/MEC028/WAI/EXT_SUB/environment/variables.txt new file mode 100644 index 0000000..8e5fb83 --- /dev/null +++ b/MEC028/WAI/EXT_SUB/environment/variables.txt @@ -0,0 +1,17 @@ +*** Variables *** +${apiRoot} +${apiName} wai +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 127.0.0.1 +${MEC-APP_PORT} 8082 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${SUB_TYPE} AssocStaSubscription +${SUB_ID} 1 +${NOT_EXISTING_SUB_ID} 99 +${CALLBACK_URI} http://callback.uri/1 +${NEW_CALLBACK_URI} http://new.callback.uri/1 +${MAC_ID} macId01 \ No newline at end of file diff --git a/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription.json b/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription.json new file mode 100644 index 0000000..578d8f0 --- /dev/null +++ b/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription.json @@ -0,0 +1,11 @@ +{ + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://new.callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} \ No newline at end of file diff --git a/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription_BR.json b/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription_BR.json new file mode 100644 index 0000000..d5fb273 --- /dev/null +++ b/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription_BR.json @@ -0,0 +1,11 @@ +{ + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} \ No newline at end of file diff --git a/MEC028/WAI/EXT_SUB/schemas/AssocStaSubscription.schema.json b/MEC028/WAI/EXT_SUB/schemas/AssocStaSubscription.schema.json new file mode 100644 index 0000000..956773c --- /dev/null +++ b/MEC028/WAI/EXT_SUB/schemas/AssocStaSubscription.schema.json @@ -0,0 +1,109 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "apId": { + "properties": { + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique Identifier assigned to an Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks including Basic Service Set and Extended Service Set.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed WLAN information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "subscriptionType": { + "description": "Shall be set to \"AssocStaSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "apId" + ], + "type": "object", + "x-etsi-ref": "6.3.2" +} \ No newline at end of file diff --git a/MEC028/WAI/STA_INFO/WaiStaInfo.robot b/MEC028/WAI/STA_INFO/WaiStaInfo.robot new file mode 100644 index 0000000..0968d7d --- /dev/null +++ b/MEC028/WAI/STA_INFO/WaiStaInfo.robot @@ -0,0 +1,81 @@ +''[Documentation] robot --outputdir ../../outputs ./WaiSTAInfo.robot +... Test Suite to validate WLAN Information API (STA_INFO) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + + +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_003_OK + [Documentation] + ... Check that the IUT responds with the list of Station Point + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the station information + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is StaInfo + ## Post condition + FOR ${staInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${staInfo['staId']['macId']} ${MAC_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + +TP_MEC_MEC028_SRV_WAI_004_OK + [Documentation] + ... Check that the IUT responds with the list of Station Point filtered by the macId provided as query parameter + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the station information using filters ${filter} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is StaInfo + ## Post condition + FOR ${staInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${staInfo['staId']['macId']} ${MAC_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + + +TP_MEC_MEC028_SRV_WAI_004_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 028 2.1.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the station information using filters ${bad_filter} + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + + +*** Keywords *** +Retrieve the station information + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/sta/sta_information + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the station information using filters + [Arguments] ${filter} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/sta/sta_information?filter=${filter} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC028/WAI/STA_INFO/environment/variables.txt b/MEC028/WAI/STA_INFO/environment/variables.txt new file mode 100644 index 0000000..c64df1b --- /dev/null +++ b/MEC028/WAI/STA_INFO/environment/variables.txt @@ -0,0 +1,14 @@ +*** Variables *** +${apiRoot} +${apiName} wai +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 127.0.0.1 +${MEC-APP_PORT} 8082 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${MAC_ID} macId01 +${filter} (eq,staId/macId,macId01) +${bad_filter} (eq,staId/mac,macId01) \ No newline at end of file diff --git a/MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json b/MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json new file mode 100644 index 0000000..e14c086 --- /dev/null +++ b/MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json @@ -0,0 +1,38 @@ +{ + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "title": { + "description": "A short, human-readable summary of the problem type", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "type": { + "description": "A URI reference according to IETF RFC 3986 that identifies the problem type", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + } + }, + "type": "object" +} \ No newline at end of file diff --git a/MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json b/MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json new file mode 100644 index 0000000..cc1136c --- /dev/null +++ b/MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json @@ -0,0 +1,789 @@ +{ +"items":{ + "properties": { + "apAssociated": { + "properties": { + "assocId": { + "description": "Unique number which identifies a particular association between the station and Access Point.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "string" + }, + "macId": { + "description": "Unique identifier assigned to the Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "string" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.12" + }, + "beaconReport": { + "properties": { + "bssId": { + "description": "The BSSID field indicates the BSSID of the BSS(s) for which a beacon report has been received.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "channelId": { + "description": "Channel number where the beacon was received.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "measurementId": { + "description": "Measurement ID of the Measurement configuration applied to this Beacon Report.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "reportingCondition": { + "description": "As in table T9-89 of IEEE 802.11-2012 [8].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "ssId": { + "description": "(Optional) The SSID subelement indicates the ESS(s) or IBSS(s) for which a beacon report is received.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "staId": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + } + }, + "required": [ + "staId", + "measurementId", + "channelId", + "bssId", + "ssId", + "reportingCondition" + ], + "type": "object", + "x-etsi-ref": "6.5.27" + }, + "channel": { + "description": "Channel currently used by the station.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "rssi": { + "properties": { + "rssi": { + "description": "The Received Signal Strength Indicator from a station", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + } + }, + "required": [ + "rssi" + ], + "type": "object", + "x-etsi-ref": "6.5.21" + }, + "staDataRate": { + "properties": { + "staId": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + }, + "staLastDataDownlinkRate": { + "description": "The data transmit rate in kbps that was most recently used for transmission of data PPDUs from the access point to the station.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "staLastDataUplinkRate": { + "description": "The data transmit rate in Kbps that was most recently used for transmission of data PPDUs from the associated station to the access point.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "type": "object", + "x-etsi-ref": "6.5.22" + }, + "staId": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + }, + "staStatistics": { + "properties": { + "groupIdentity": { + "description": "Indicates the requested statistics group describing the Statistics Group Data according to table 9-114 of IEEE 802.11-2016 [8].", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + }, + "md": { + "description": "Measurement Duration.", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt16" + }, + "statisticsGroupData": { + "description": "Statistics Group Data as defined in Annex C of IEEE 802.112016 [8].", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "not specified", + "properties": { + "dot11AMPDUDelimiterCRCErrorCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11AMPDUReceivedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11AMSDUAckFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11AckFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11BeamformingFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ChannelWidthSwitchCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11DualCTSFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11DualCTSSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ExplicitBARFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FCSErrorCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FailedAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FailedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FortyMHzFrameReceivedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FortyMHzFrameTransmittedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FrameDuplicateCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11GrantedRDGUnusedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11GrantedRDGUsedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11GroupReceivedFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11GroupTransmittedFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ImplicitBARFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11MPDUInReceivedAMPDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11MultipleRetryAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11MultipleRetryCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11PSMPUTTGrantDuration": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11PSMPUTTUsedDuration": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosAckFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosDiscardedFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosFailedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosFrameDuplicateCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosMPDUsReceivedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosMultipleRetryCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosRTSFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosRTSSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosReceivedFragmentCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosRetriesReceivedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosRetryCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosTransmittedFragmentCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosTransmittedFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsBIPMICErrors": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsCCMPDecryptErrors": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsCCMPReplays": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsCMACReplays": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsRobustMgmtCCMPReplays": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsTKIPICVErrors": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsTKIPReplays": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RTSFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RTSLSIGFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RTSLSIGSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RTSSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ReceivedAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ReceivedFragmentCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ReceivedOctetsInAMPDUCount": { + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint64" + }, + "dot11ReceivedOctetsInAMSDUCount": { + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint64" + }, + "dot11RetryAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RetryCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11STAStatisticsAPAverageAccessDelay": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsAverageAccessDelayBackGround": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsAverageAccessDelayBestEffort": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsAverageAccessDelayVideo": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsAverageAccessDelayVoice": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsChannelUtilization": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsStationCount": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STBCCTSFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11STBCCTSSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedAMPDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedFragmentCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedFramesInGrantedRDGCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedMPDUsInAMPDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedOctetsInAMPDUCount": { + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint64" + }, + "dot11TransmittedOctetsInAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedOctetsInGrantedRDGCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TwentyMHzFrameReceivedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TwentyMHzFrameTransmittedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11nonSTBCCTSFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11nonSTBCCTSSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "type": "object" + } + }, + "required": [ + "md", + "groupIdentity", + "statisticsGroupData" + ], + "type": "object", + "x-etsi-ref": "6.5.13" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + }, + "required": [ + "staId" + ], + "type": "object", + "x-etsi-ref": "6.2.3" + } +} \ No newline at end of file diff --git a/MEC028/WAI/SUB/WaiSubscription.robot b/MEC028/WAI/SUB/WaiSubscription.robot new file mode 100644 index 0000000..941eaf0 --- /dev/null +++ b/MEC028/WAI/SUB/WaiSubscription.robot @@ -0,0 +1,142 @@ +''[Documentation] robot --outputdir ../../outputs ./WaiSubscription.robot +... Test Suite to validate WLAN Information API (SUB) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + +#POST +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_007_OK + [Documentation] + ... Check that the IUT responds with a Notification Subscription + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription AssocStaSubscription.json + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is AssocStaSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${HREF} + Should Be Equal As Strings ${response['headers']['Location']} ${HREF} + +TP_MEC_MEC028_SRV_WAI_007_BR + [Documentation] + ... Check that the IUT responds with an error when an invalid Subscription request is sent + ... ETSI GS MEC 028 2.1.1, clause 7.5.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription AssocStaSubscription_BR.json + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC028_SRV_WAI_007_NF + [Documentation] + ... Check that the IUT responds with an error when a request with not existing parameters is sent + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription using wrong endpoint AssocStaSubscription.json + Check HTTP Response Status Code Is 404 + + +#GET +TP_MEC_MEC028_SRV_WAI_005_OK + [Documentation] + ... Check that the IUT responds with the requested list of subscription + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the subscription information ${SUB_FILTER} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + FOR ${assocStaSub} IN @{response['body']['assocStaSubscription']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${assocStaSub['_links']['self']['href']} ${HREF} + Exit For Loop If ${passed} + END + +TP_MEC_MEC028_SRV_WAI_006_OK + [Documentation] + ... Check that the IUT responds with the requested list of subscription + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the subscription information ${SUB_FILTER} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${HREF} + +TP_MEC_MEC028_SRV_WAI_006_BR + [Documentation] + ... Check that the IUT responds with the requested list of subscription + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the subscription information ${INVALID_SUB_FILTER} + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC028_SRV_WAI_006_NF + [Documentation] + ... Check that the IUT responds with an error when a request with not existing parameters is sent + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Retrieve the subscription information using wrong endpoint + Check HTTP Response Status Code Is 404 + +*** Keywords *** +Send a request for creating a subscription + [Arguments] ${content} + Log Creating a new subscription + #Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Log ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send a request for creating a subscription using wrong endpoint + [Arguments] ${content} + Log Creating a new subscription + #Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the subscription information + [Arguments] ${subscription_type} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + #Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the subscription information using wrong endpoint + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + #Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC028/WAI/SUB/environment/variables.txt b/MEC028/WAI/SUB/environment/variables.txt new file mode 100644 index 0000000..dfa2d41 --- /dev/null +++ b/MEC028/WAI/SUB/environment/variables.txt @@ -0,0 +1,18 @@ +*** Variables *** +${apiRoot} +${apiName} wai +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 127.0.0.1 +${MEC-APP_PORT} 8082 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${SUB_TYPE} AssocStaSubscription + +${SUB_FILTER} assoc_sta +${INVALID_SUB_FILTER} assocStaSub + +${HREF} /wai/v1/subscriptions/1 +${CALLBACK_URI} http://callback.uri/1 \ No newline at end of file diff --git a/MEC028/WAI/SUB/jsons/AssocStaSubscription.json b/MEC028/WAI/SUB/jsons/AssocStaSubscription.json new file mode 100644 index 0000000..152ca49 --- /dev/null +++ b/MEC028/WAI/SUB/jsons/AssocStaSubscription.json @@ -0,0 +1,7 @@ +{ + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} \ No newline at end of file diff --git a/MEC028/WAI/SUB/jsons/AssocStaSubscription_BR.json b/MEC028/WAI/SUB/jsons/AssocStaSubscription_BR.json new file mode 100644 index 0000000..d5fb273 --- /dev/null +++ b/MEC028/WAI/SUB/jsons/AssocStaSubscription_BR.json @@ -0,0 +1,11 @@ +{ + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} \ No newline at end of file diff --git a/MEC028/WAI/SUB/schemas/AssocStaSubscription.schema.json b/MEC028/WAI/SUB/schemas/AssocStaSubscription.schema.json new file mode 100644 index 0000000..956773c --- /dev/null +++ b/MEC028/WAI/SUB/schemas/AssocStaSubscription.schema.json @@ -0,0 +1,109 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "apId": { + "properties": { + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique Identifier assigned to an Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks including Basic Service Set and Extended Service Set.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed WLAN information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "subscriptionType": { + "description": "Shall be set to \"AssocStaSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "apId" + ], + "type": "object", + "x-etsi-ref": "6.3.2" +} \ No newline at end of file diff --git a/MEC028/WAI/SUB/schemas/SubscriptionLinkList.schema.json b/MEC028/WAI/SUB/schemas/SubscriptionLinkList.schema.json new file mode 100644 index 0000000..b4818c1 --- /dev/null +++ b/MEC028/WAI/SUB/schemas/SubscriptionLinkList.schema.json @@ -0,0 +1,272 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "assocStaSubscription": { + "items": { + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "apId": { + "properties": { + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique Identifier assigned to an Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks including Basic Service Set and Extended Service Set.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed WLAN information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "subscriptionType": { + "description": "Shall be set to \"AssocStaSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "apId" + ], + "type": "object", + "x-etsi-ref": "6.3.2" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AssocStaSubscription" + }, + "staDataRateSubscription": { + "items": { + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed WLAN Access Information Service. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "staId": { + "description": "Identifier(s) to uniquely specify the target client station(s) for the subscription", + "items": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "StaIdentity" + }, + "subscriptionType": { + "description": "Shall be set to \"StaDataRateSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "staId" + ], + "type": "object", + "x-etsi-ref": "6.3.3" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "StaDataRateSubscription" + } + }, + "required": [ + "_links" + ], + "type": "object" +} \ No newline at end of file diff --git a/MEC028/outputs/log-20210506-145611.html b/MEC028/outputs/log-20210506-145611.html new file mode 100644 index 0000000..5b94fad --- /dev/null +++ b/MEC028/outputs/log-20210506-145611.html @@ -0,0 +1,2189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+

Opening Robot Framework log failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MEC028/outputs/log.html b/MEC028/outputs/log.html new file mode 100644 index 0000000..92a7612 --- /dev/null +++ b/MEC028/outputs/log.html @@ -0,0 +1,2189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework log failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MEC028/outputs/output-20210506-145611.xml b/MEC028/outputs/output-20210506-145611.xml new file mode 100644 index 0000000..f889481 --- /dev/null +++ b/MEC028/outputs/output-20210506-145611.xml @@ -0,0 +1,1000 @@ + + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. +${body} = { + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions +${body} +http +*Sends a POST request to the endpoint.* + + + +${body} +Logs the given message with the given level. +{ + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.015031000000000001, + "status": 201, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Location": "/wai/v1/subscriptions/1", + "Content-Length": "222", + "Date": "Thu, 06 May 2021 12:56:11 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.015031000000000001, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.015031000000000001, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... + + + + + +201 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 201 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +AssocStaSubscription + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = AssocStaSubscription.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${response['body']['subscriptionType']} +${SUB_TYPE} +Fails if objects are unequal after converting them to strings. + + + +${response['body']['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + + +${response['headers']['Location']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +Check that the IUT responds with a Notification Subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription_BR.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription_BR.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json</a>'. +${body} = { + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions +${body} +http +*Sends a POST request to the endpoint.* + + + +${body} +Logs the given message with the given level. +{ + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.00544, + "status": 400, + "body": "", + "headers": { + "Content-Type": "application/problem+json; charset=utf-8", + "Content-Length": "0", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.00544, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'ke... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.00544, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'ke... + + + + + +400 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 400 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when an invalid Subscription request is sent +ETSI GS MEC 028 2.1.1, clause 7.5.3.4 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. +${body} = { + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI +${body} +http +*Sends a POST request to the endpoint.* +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.0037170000000000003, + "status": 404, + "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", + "headers": { + "Content-Security-Policy": "default-src 'none'", + "X-Content-Type-Options": "nosniff", + "Content-Type": "text/html; charset=utf-8", + "Content-Length": "172", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.0037170000000000003, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.0037170000000000003, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... + + + + + +404 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 404 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when a request with not existing parameters is sent +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.004779, + "status": 200, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "staDataRateSubscription": [], + "assocStaSubscription": [ + { + "subscriptionType": "AssocStaSubscription", + "callbackReference": "http://callback/uri", + "apId": { + "macId": "macId01" + }, + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + } + } + ] + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Content-Length": "361", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.004779, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.004779, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + + + +200 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 200 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +SubscriptionLinkList + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = SubscriptionLinkList.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${assocStaSub} +@{response['body']['assocStaSubscription']} + +{'subscriptionType': 'AssocStaSubscription', 'callbackReference': 'http://callback/uri', 'apId': {'macId': 'macId01'}, '_links': {'self': {'href': '/wai/v1/subscriptions/1'}}} + +${passed} +Should Be Equal As Strings +${assocStaSub['_links']['self']['href']} +${HREF} +Runs the given keyword with given arguments and returns the status as a Boolean value. + +${assocStaSub['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +${passed} = True + + + +${passed} +Stops executing the enclosing for loop if the ``condition`` is true. +Exiting for loop altogether. + + + + + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.004893, + "status": 200, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "staDataRateSubscription": [], + "assocStaSubscription": [ + { + "subscriptionType": "AssocStaSubscription", + "callbackReference": "http://callback/uri", + "apId": { + "macId": "macId01" + }, + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + } + } + ] + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Content-Length": "361", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.004893, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.004893, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + + + +200 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 200 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +SubscriptionLinkList + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = SubscriptionLinkList.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${response['body']['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${INVALID_SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.005156, + "status": 400, + "body": "", + "headers": { + "Content-Type": "application/problem+json; charset=utf-8", + "Content-Length": "0", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.005156, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'k... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.005156, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'k... + + + + + +400 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 400 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI +http +*Sends a GET request to the endpoint.* +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.003614, + "status": 404, + "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", + "headers": { + "Content-Security-Policy": "default-src 'none'", + "X-Content-Type-Options": "nosniff", + "Content-Type": "text/html; charset=utf-8", + "Content-Length": "171", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.003614, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_UR... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.003614, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_UR... + + + + + +404 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 404 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when a request with not existing parameters is sent +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + + + +All Tests + + + + +WaiSubscription + + + +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + diff --git a/MEC028/outputs/output.xml b/MEC028/outputs/output.xml new file mode 100644 index 0000000..ef1cfcf --- /dev/null +++ b/MEC028/outputs/output.xml @@ -0,0 +1,1000 @@ + + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. +${body} = { + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions +${body} +http +*Sends a POST request to the endpoint.* + + + +${body} +Logs the given message with the given level. +{ + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.016300000000000002, + "status": 201, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Location": "/wai/v1/subscriptions/1", + "Content-Length": "222", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.016300000000000002, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.016300000000000002, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... + + + + + +201 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 201 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +AssocStaSubscription + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = AssocStaSubscription.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${response['body']['subscriptionType']} +${SUB_TYPE} +Fails if objects are unequal after converting them to strings. + + + +${response['body']['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + + +${response['headers']['Location']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +Check that the IUT responds with a Notification Subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription_BR.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription_BR.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json</a>'. +${body} = { + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions +${body} +http +*Sends a POST request to the endpoint.* + + + +${body} +Logs the given message with the given level. +{ + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.005856, + "status": 400, + "body": "", + "headers": { + "Content-Type": "application/problem+json; charset=utf-8", + "Content-Length": "0", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.005856, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Connection': 'k... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.005856, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Connection': 'k... + + + + + +400 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 400 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when an invalid Subscription request is sent +ETSI GS MEC 028 2.1.1, clause 7.5.3.4 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. +${body} = { + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI +${body} +http +*Sends a POST request to the endpoint.* +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.0030830000000000002, + "status": 404, + "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", + "headers": { + "Content-Security-Policy": "default-src 'none'", + "X-Content-Type-Options": "nosniff", + "Content-Type": "text/html; charset=utf-8", + "Content-Length": "172", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.0030830000000000002, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.0030830000000000002, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... + + + + + +404 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 404 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when a request with not existing parameters is sent +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.005093, + "status": 200, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "staDataRateSubscription": [], + "assocStaSubscription": [ + { + "subscriptionType": "AssocStaSubscription", + "callbackReference": "http://callback/uri", + "apId": { + "macId": "macId01" + }, + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + } + } + ] + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Content-Length": "361", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.005093, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.005093, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + + + +200 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 200 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +SubscriptionLinkList + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = SubscriptionLinkList.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${assocStaSub} +@{response['body']['assocStaSubscription']} + +{'subscriptionType': 'AssocStaSubscription', 'callbackReference': 'http://callback/uri', 'apId': {'macId': 'macId01'}, '_links': {'self': {'href': '/wai/v1/subscriptions/1'}}} + +${passed} +Should Be Equal As Strings +${assocStaSub['_links']['self']['href']} +${HREF} +Runs the given keyword with given arguments and returns the status as a Boolean value. + +${assocStaSub['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +${passed} = True + + + +${passed} +Stops executing the enclosing for loop if the ``condition`` is true. +Exiting for loop altogether. + + + + + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.005634999999999999, + "status": 200, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "staDataRateSubscription": [], + "assocStaSubscription": [ + { + "subscriptionType": "AssocStaSubscription", + "callbackReference": "http://callback/uri", + "apId": { + "macId": "macId01" + }, + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + } + } + ] + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Content-Length": "361", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.005634999999999999, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocSt... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.005634999999999999, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocSt... + + + + + +200 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 200 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +SubscriptionLinkList + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = SubscriptionLinkList.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${response['body']['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${INVALID_SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.005876999999999999, + "status": 400, + "body": "", + "headers": { + "Content-Type": "application/problem+json; charset=utf-8", + "Content-Length": "0", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.005876999999999999, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Con... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.005876999999999999, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Con... + + + + + +400 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 400 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI +http +*Sends a GET request to the endpoint.* +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.0049169999999999995, + "status": 404, + "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", + "headers": { + "Content-Security-Policy": "default-src 'none'", + "X-Content-Type-Options": "nosniff", + "Content-Type": "text/html; charset=utf-8", + "Content-Length": "171", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.0049169999999999995, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptio... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.0049169999999999995, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptio... + + + + + +404 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 404 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when a request with not existing parameters is sent +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + + + +All Tests + + + + +WaiSubscription + + + +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + diff --git a/MEC028/outputs/report-20210506-145611.html b/MEC028/outputs/report-20210506-145611.html new file mode 100644 index 0000000..e75ee9b --- /dev/null +++ b/MEC028/outputs/report-20210506-145611.html @@ -0,0 +1,2458 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework report failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MEC028/outputs/report.html b/MEC028/outputs/report.html new file mode 100644 index 0000000..747624b --- /dev/null +++ b/MEC028/outputs/report.html @@ -0,0 +1,2458 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework report failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- GitLab From c307f838babd30c8b0823a97d4aaf2f14cf07e7e Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 6 May 2021 17:01:07 +0200 Subject: [PATCH 32/63] removed output dir. --- MEC028/outputs/log-20210506-145611.html | 2189 ----------------- MEC028/outputs/log.html | 2189 ----------------- MEC028/outputs/output-20210506-145611.xml | 1000 -------- MEC028/outputs/output.xml | 1000 -------- MEC028/outputs/report-20210506-145611.html | 2458 -------------------- MEC028/outputs/report.html | 2458 -------------------- 6 files changed, 11294 deletions(-) delete mode 100644 MEC028/outputs/log-20210506-145611.html delete mode 100644 MEC028/outputs/log.html delete mode 100644 MEC028/outputs/output-20210506-145611.xml delete mode 100644 MEC028/outputs/output.xml delete mode 100644 MEC028/outputs/report-20210506-145611.html delete mode 100644 MEC028/outputs/report.html diff --git a/MEC028/outputs/log-20210506-145611.html b/MEC028/outputs/log-20210506-145611.html deleted file mode 100644 index 5b94fad..0000000 --- a/MEC028/outputs/log-20210506-145611.html +++ /dev/null @@ -1,2189 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Opening Robot Framework log failed

-
    -
  • Verify that you have JavaScript enabled in your browser.
  • -
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • -
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • -
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MEC028/outputs/log.html b/MEC028/outputs/log.html deleted file mode 100644 index 92a7612..0000000 --- a/MEC028/outputs/log.html +++ /dev/null @@ -1,2189 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Opening Robot Framework log failed

-
    -
  • Verify that you have JavaScript enabled in your browser.
  • -
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • -
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • -
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MEC028/outputs/output-20210506-145611.xml b/MEC028/outputs/output-20210506-145611.xml deleted file mode 100644 index f889481..0000000 --- a/MEC028/outputs/output-20210506-145611.xml +++ /dev/null @@ -1,1000 +0,0 @@ - - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. -${body} = { - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions -${body} -http -*Sends a POST request to the endpoint.* - - - -${body} -Logs the given message with the given level. -{ - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.015031000000000001, - "status": 201, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Location": "/wai/v1/subscriptions/1", - "Content-Length": "222", - "Date": "Thu, 06 May 2021 12:56:11 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.015031000000000001, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.015031000000000001, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... - - - - - -201 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 201 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -AssocStaSubscription - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = AssocStaSubscription.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${response['body']['subscriptionType']} -${SUB_TYPE} -Fails if objects are unequal after converting them to strings. - - - -${response['body']['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - - -${response['headers']['Location']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -Check that the IUT responds with a Notification Subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription_BR.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription_BR.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json</a>'. -${body} = { - "_links":{ - "href":"" - }, - - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "INVALID_VALUE" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions -${body} -http -*Sends a POST request to the endpoint.* - - - -${body} -Logs the given message with the given level. -{ - "_links":{ - "href":"" - }, - - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "INVALID_VALUE" -} - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.00544, - "status": 400, - "body": "", - "headers": { - "Content-Type": "application/problem+json; charset=utf-8", - "Content-Length": "0", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.00544, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'ke... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.00544, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'ke... - - - - - -400 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 400 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when an invalid Subscription request is sent -ETSI GS MEC 028 2.1.1, clause 7.5.3.4 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. -${body} = { - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI -${body} -http -*Sends a POST request to the endpoint.* -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.0037170000000000003, - "status": 404, - "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", - "headers": { - "Content-Security-Policy": "default-src 'none'", - "X-Content-Type-Options": "nosniff", - "Content-Type": "text/html; charset=utf-8", - "Content-Length": "172", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.0037170000000000003, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.0037170000000000003, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... - - - - - -404 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 404 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when a request with not existing parameters is sent -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.004779, - "status": 200, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "staDataRateSubscription": [], - "assocStaSubscription": [ - { - "subscriptionType": "AssocStaSubscription", - "callbackReference": "http://callback/uri", - "apId": { - "macId": "macId01" - }, - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - } - } - ] - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Content-Length": "361", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.004779, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.004779, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - - - -200 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 200 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -SubscriptionLinkList - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = SubscriptionLinkList.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${assocStaSub} -@{response['body']['assocStaSubscription']} - -{'subscriptionType': 'AssocStaSubscription', 'callbackReference': 'http://callback/uri', 'apId': {'macId': 'macId01'}, '_links': {'self': {'href': '/wai/v1/subscriptions/1'}}} - -${passed} -Should Be Equal As Strings -${assocStaSub['_links']['self']['href']} -${HREF} -Runs the given keyword with given arguments and returns the status as a Boolean value. - -${assocStaSub['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -${passed} = True - - - -${passed} -Stops executing the enclosing for loop if the ``condition`` is true. -Exiting for loop altogether. - - - - - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.004893, - "status": 200, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "staDataRateSubscription": [], - "assocStaSubscription": [ - { - "subscriptionType": "AssocStaSubscription", - "callbackReference": "http://callback/uri", - "apId": { - "macId": "macId01" - }, - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - } - } - ] - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Content-Length": "361", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.004893, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.004893, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - - - -200 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 200 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -SubscriptionLinkList - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = SubscriptionLinkList.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${response['body']['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${INVALID_SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.005156, - "status": 400, - "body": "", - "headers": { - "Content-Type": "application/problem+json; charset=utf-8", - "Content-Length": "0", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.005156, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'k... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.005156, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'k... - - - - - -400 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 400 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI -http -*Sends a GET request to the endpoint.* -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.003614, - "status": 404, - "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", - "headers": { - "Content-Security-Policy": "default-src 'none'", - "X-Content-Type-Options": "nosniff", - "Content-Type": "text/html; charset=utf-8", - "Content-Length": "171", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.003614, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_UR... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.003614, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_UR... - - - - - -404 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 404 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when a request with not existing parameters is sent -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - - - -All Tests - - - - -WaiSubscription - - - -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - diff --git a/MEC028/outputs/output.xml b/MEC028/outputs/output.xml deleted file mode 100644 index ef1cfcf..0000000 --- a/MEC028/outputs/output.xml +++ /dev/null @@ -1,1000 +0,0 @@ - - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. -${body} = { - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions -${body} -http -*Sends a POST request to the endpoint.* - - - -${body} -Logs the given message with the given level. -{ - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.016300000000000002, - "status": 201, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Location": "/wai/v1/subscriptions/1", - "Content-Length": "222", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.016300000000000002, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.016300000000000002, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... - - - - - -201 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 201 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -AssocStaSubscription - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = AssocStaSubscription.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${response['body']['subscriptionType']} -${SUB_TYPE} -Fails if objects are unequal after converting them to strings. - - - -${response['body']['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - - -${response['headers']['Location']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -Check that the IUT responds with a Notification Subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription_BR.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription_BR.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json</a>'. -${body} = { - "_links":{ - "href":"" - }, - - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "INVALID_VALUE" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions -${body} -http -*Sends a POST request to the endpoint.* - - - -${body} -Logs the given message with the given level. -{ - "_links":{ - "href":"" - }, - - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "INVALID_VALUE" -} - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.005856, - "status": 400, - "body": "", - "headers": { - "Content-Type": "application/problem+json; charset=utf-8", - "Content-Length": "0", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.005856, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Connection': 'k... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.005856, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Connection': 'k... - - - - - -400 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 400 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when an invalid Subscription request is sent -ETSI GS MEC 028 2.1.1, clause 7.5.3.4 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. -${body} = { - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI -${body} -http -*Sends a POST request to the endpoint.* -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.0030830000000000002, - "status": 404, - "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", - "headers": { - "Content-Security-Policy": "default-src 'none'", - "X-Content-Type-Options": "nosniff", - "Content-Type": "text/html; charset=utf-8", - "Content-Length": "172", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.0030830000000000002, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.0030830000000000002, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... - - - - - -404 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 404 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when a request with not existing parameters is sent -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.005093, - "status": 200, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "staDataRateSubscription": [], - "assocStaSubscription": [ - { - "subscriptionType": "AssocStaSubscription", - "callbackReference": "http://callback/uri", - "apId": { - "macId": "macId01" - }, - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - } - } - ] - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Content-Length": "361", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.005093, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.005093, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - - - -200 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 200 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -SubscriptionLinkList - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = SubscriptionLinkList.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${assocStaSub} -@{response['body']['assocStaSubscription']} - -{'subscriptionType': 'AssocStaSubscription', 'callbackReference': 'http://callback/uri', 'apId': {'macId': 'macId01'}, '_links': {'self': {'href': '/wai/v1/subscriptions/1'}}} - -${passed} -Should Be Equal As Strings -${assocStaSub['_links']['self']['href']} -${HREF} -Runs the given keyword with given arguments and returns the status as a Boolean value. - -${assocStaSub['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -${passed} = True - - - -${passed} -Stops executing the enclosing for loop if the ``condition`` is true. -Exiting for loop altogether. - - - - - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.005634999999999999, - "status": 200, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "staDataRateSubscription": [], - "assocStaSubscription": [ - { - "subscriptionType": "AssocStaSubscription", - "callbackReference": "http://callback/uri", - "apId": { - "macId": "macId01" - }, - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - } - } - ] - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Content-Length": "361", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.005634999999999999, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocSt... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.005634999999999999, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocSt... - - - - - -200 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 200 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -SubscriptionLinkList - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = SubscriptionLinkList.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${response['body']['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${INVALID_SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.005876999999999999, - "status": 400, - "body": "", - "headers": { - "Content-Type": "application/problem+json; charset=utf-8", - "Content-Length": "0", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.005876999999999999, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Con... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.005876999999999999, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Con... - - - - - -400 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 400 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI -http -*Sends a GET request to the endpoint.* -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.0049169999999999995, - "status": 404, - "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", - "headers": { - "Content-Security-Policy": "default-src 'none'", - "X-Content-Type-Options": "nosniff", - "Content-Type": "text/html; charset=utf-8", - "Content-Length": "171", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.0049169999999999995, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptio... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.0049169999999999995, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptio... - - - - - -404 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 404 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when a request with not existing parameters is sent -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - - - -All Tests - - - - -WaiSubscription - - - -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - diff --git a/MEC028/outputs/report-20210506-145611.html b/MEC028/outputs/report-20210506-145611.html deleted file mode 100644 index e75ee9b..0000000 --- a/MEC028/outputs/report-20210506-145611.html +++ /dev/null @@ -1,2458 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Opening Robot Framework report failed

-
    -
  • Verify that you have JavaScript enabled in your browser.
  • -
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • -
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • -
-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MEC028/outputs/report.html b/MEC028/outputs/report.html deleted file mode 100644 index 747624b..0000000 --- a/MEC028/outputs/report.html +++ /dev/null @@ -1,2458 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Opening Robot Framework report failed

-
    -
  • Verify that you have JavaScript enabled in your browser.
  • -
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • -
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • -
-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GitLab From d2095e211a8a0efd7ec8e24c68d9bb73bca2d9ab Mon Sep 17 00:00:00 2001 From: piscione Date: Fri, 7 May 2021 16:33:43 +0200 Subject: [PATCH 33/63] Minor fix. --- MEC028/WAI/SUB/WaiSubscription.robot | 70 ++++++++++++++-------------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/MEC028/WAI/SUB/WaiSubscription.robot b/MEC028/WAI/SUB/WaiSubscription.robot index 941eaf0..190d970 100644 --- a/MEC028/WAI/SUB/WaiSubscription.robot +++ b/MEC028/WAI/SUB/WaiSubscription.robot @@ -9,43 +9,7 @@ Library String Library OperatingSystem Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false -#POST *** Test Cases *** -TP_MEC_MEC028_SRV_WAI_007_OK - [Documentation] - ... Check that the IUT responds with a Notification Subscription - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Send a request for creating a subscription AssocStaSubscription.json - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is AssocStaSubscription - Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} - Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${HREF} - Should Be Equal As Strings ${response['headers']['Location']} ${HREF} - -TP_MEC_MEC028_SRV_WAI_007_BR - [Documentation] - ... Check that the IUT responds with an error when an invalid Subscription request is sent - ... ETSI GS MEC 028 2.1.1, clause 7.5.3.4 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Send a request for creating a subscription AssocStaSubscription_BR.json - Check HTTP Response Status Code Is 400 - -TP_MEC_MEC028_SRV_WAI_007_NF - [Documentation] - ... Check that the IUT responds with an error when a request with not existing parameters is sent - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Send a request for creating a subscription using wrong endpoint AssocStaSubscription.json - Check HTTP Response Status Code Is 404 - - -#GET TP_MEC_MEC028_SRV_WAI_005_OK [Documentation] ... Check that the IUT responds with the requested list of subscription @@ -93,6 +57,40 @@ TP_MEC_MEC028_SRV_WAI_006_NF ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription Retrieve the subscription information using wrong endpoint Check HTTP Response Status Code Is 404 + +TP_MEC_MEC028_SRV_WAI_007_OK + [Documentation] + ... Check that the IUT responds with a Notification Subscription + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription AssocStaSubscription.json + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is AssocStaSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${HREF} + Should Be Equal As Strings ${response['headers']['Location']} ${HREF} + +TP_MEC_MEC028_SRV_WAI_007_BR + [Documentation] + ... Check that the IUT responds with an error when an invalid Subscription request is sent + ... ETSI GS MEC 028 2.1.1, clause 7.5.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription AssocStaSubscription_BR.json + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC028_SRV_WAI_007_NF + [Documentation] + ... Check that the IUT responds with an error when a request with not existing parameters is sent + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription using wrong endpoint AssocStaSubscription.json + Check HTTP Response Status Code Is 404 + *** Keywords *** Send a request for creating a subscription -- GitLab From 97754bf800f5cc1eddfa53f4ee92a81353935701 Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 6 May 2021 15:12:17 +0200 Subject: [PATCH 34/63] Added robot tests for MEC028. --- MEC028/WAI/AP_INFO/WaiApInfo.robot | 81 + MEC028/WAI/AP_INFO/environment/variables.txt | 14 + MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json | 777 ++++++ .../schemas/ProblemDetails.schema.json | 40 + MEC028/WAI/EXT_SUB/ExistingSubscription.robot | 120 + MEC028/WAI/EXT_SUB/environment/variables.txt | 17 + .../jsons/UpdateAssocStaSubscription.json | 11 + .../jsons/UpdateAssocStaSubscription_BR.json | 11 + .../schemas/AssocStaSubscription.schema.json | 109 + MEC028/WAI/STA_INFO/WaiStaInfo.robot | 81 + MEC028/WAI/STA_INFO/environment/variables.txt | 14 + .../schemas/ProblemDetails.schema.json | 38 + .../WAI/STA_INFO/schemas/StaInfo.schema.json | 789 ++++++ MEC028/WAI/SUB/WaiSubscription.robot | 142 + MEC028/WAI/SUB/environment/variables.txt | 18 + .../WAI/SUB/jsons/AssocStaSubscription.json | 7 + .../SUB/jsons/AssocStaSubscription_BR.json | 11 + .../schemas/AssocStaSubscription.schema.json | 109 + .../schemas/SubscriptionLinkList.schema.json | 272 ++ MEC028/outputs/log-20210506-145611.html | 2189 +++++++++++++++ MEC028/outputs/log.html | 2189 +++++++++++++++ MEC028/outputs/output-20210506-145611.xml | 1000 +++++++ MEC028/outputs/output.xml | 1000 +++++++ MEC028/outputs/report-20210506-145611.html | 2458 +++++++++++++++++ MEC028/outputs/report.html | 2458 +++++++++++++++++ 25 files changed, 13955 insertions(+) create mode 100644 MEC028/WAI/AP_INFO/WaiApInfo.robot create mode 100644 MEC028/WAI/AP_INFO/environment/variables.txt create mode 100644 MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json create mode 100644 MEC028/WAI/AP_INFO/schemas/ProblemDetails.schema.json create mode 100644 MEC028/WAI/EXT_SUB/ExistingSubscription.robot create mode 100644 MEC028/WAI/EXT_SUB/environment/variables.txt create mode 100644 MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription.json create mode 100644 MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription_BR.json create mode 100644 MEC028/WAI/EXT_SUB/schemas/AssocStaSubscription.schema.json create mode 100644 MEC028/WAI/STA_INFO/WaiStaInfo.robot create mode 100644 MEC028/WAI/STA_INFO/environment/variables.txt create mode 100644 MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json create mode 100644 MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json create mode 100644 MEC028/WAI/SUB/WaiSubscription.robot create mode 100644 MEC028/WAI/SUB/environment/variables.txt create mode 100644 MEC028/WAI/SUB/jsons/AssocStaSubscription.json create mode 100644 MEC028/WAI/SUB/jsons/AssocStaSubscription_BR.json create mode 100644 MEC028/WAI/SUB/schemas/AssocStaSubscription.schema.json create mode 100644 MEC028/WAI/SUB/schemas/SubscriptionLinkList.schema.json create mode 100644 MEC028/outputs/log-20210506-145611.html create mode 100644 MEC028/outputs/log.html create mode 100644 MEC028/outputs/output-20210506-145611.xml create mode 100644 MEC028/outputs/output.xml create mode 100644 MEC028/outputs/report-20210506-145611.html create mode 100644 MEC028/outputs/report.html diff --git a/MEC028/WAI/AP_INFO/WaiApInfo.robot b/MEC028/WAI/AP_INFO/WaiApInfo.robot new file mode 100644 index 0000000..c89f062 --- /dev/null +++ b/MEC028/WAI/AP_INFO/WaiApInfo.robot @@ -0,0 +1,81 @@ +''[Documentation] robot --outputdir ../../outputs ./WaiApInfo.robot +... Test Suite to validate WLAN Information API (AP_INFO) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + + +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_001_OK + [Documentation] + ... Check that the IUT responds with the list of WLAN Access Point + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the access point information + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApInfo + ## Post condition + FOR ${apInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${apInfo['apId']['macId']} ${MAC_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + +TP_MEC_MEC028_SRV_WAI_002_OK + [Documentation] + ... Check that the IUT responds with the list of WLAN Access Point filtered by the macId provided as query parameter + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the access point information using filters ${filter} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApInfo + ## Post condition + FOR ${apInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${apInfo['apId']['macId']} ${MAC_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + + +TP_MEC_MEC028_SRV_WAI_002_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the access point information using filters ${bad_filter} + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + + +*** Keywords *** +Retrieve the access point information + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/ap/ap_information + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the access point information using filters + [Arguments] ${filter} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/ap/ap_information?filter=${filter} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC028/WAI/AP_INFO/environment/variables.txt b/MEC028/WAI/AP_INFO/environment/variables.txt new file mode 100644 index 0000000..ec621fe --- /dev/null +++ b/MEC028/WAI/AP_INFO/environment/variables.txt @@ -0,0 +1,14 @@ +*** Variables *** +${apiRoot} +${apiName} wai +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 127.0.0.1 +${MEC-APP_PORT} 8082 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${MAC_ID} macId01 +${filter} (eq,apId/macId,macId01) +${bad_filter} (eq,apId/mac,macId01) \ No newline at end of file diff --git a/MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json b/MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json new file mode 100644 index 0000000..19cc713 --- /dev/null +++ b/MEC028/WAI/AP_INFO/schemas/ApInfo.schema.json @@ -0,0 +1,777 @@ +{ + "items": { + "properties": { + "apId": { + "properties": { + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique Identifier assigned to an Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks including Basic Service Set and Extended Service Set.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "apLocation": { + "properties": { + "civicLocation": { + "properties": { + "ca0": { + "description": "Language", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca1": { + "description": "National subdivisions (state, canton, region,province, prefecture) ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca128": { + "description": "Script", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca16": { + "description": "Leading street direction", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca17": { + "description": "Trailing street suffix", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca18": { + "description": "Street suffix or type", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca19": { + "description": "House number", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca2": { + "description": "County, parish, gun (JP), district (IN)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca20": { + "description": "House number suffix", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca21": { + "description": "Landmark of vanity address", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca22": { + "description": "Additional location information", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca23": { + "description": "Name (residence and office occupant)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca24": { + "description": "Postal/zip code", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca25": { + "description": "Building (structure)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca26": { + "description": "Unit (apartment/suite)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca27": { + "description": "Floor", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca28": { + "description": "Room", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca29": { + "description": "Type of place", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca3": { + "description": "City, township, shi (JP)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca30": { + "description": "Postal community name", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca31": { + "description": "Post office box", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca32": { + "description": "Additional code", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca33": { + "description": "Seat (desk.cubicle, workstation)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca34": { + "description": "Primary road name", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca35": { + "description": "Road section", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca36": { + "description": "Branch road name", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca37": { + "description": "Sub-branch road name", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca38": { + "description": "Street name pre-modifier", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca39": { + "description": "Street name post-modifier", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca4": { + "description": "City division, borough, city district, ward, chou (JP)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca5": { + "description": "Neighborhood, block", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ca6": { + "description": "Group of streets below the neighborhood level ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "country": { + "description": "The two-letter ISO 3166 [i.9] country code in capital ASCII letters, e.g. DE or US, as per ISO 3166 [i.9]", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "country" + ], + "type": "object", + "x-etsi-ref": "6.5.20" + }, + "geolocation": { + "properties": { + "altitude": { + "description": "The altitude value of location as defined in IETF RFC 6225 [6]", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "altitudeType": { + "description": "The type description for altitude information e.g. floors or meters as defined in IETF RFC 6225 [6]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "altitudeUncertainty": { + "description": "The uncertainty for altitude information as defined in IETF RFC 6225 [6]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "datum": { + "description": "The datum value to express how coordinates are organized and related to real world as defined in IETF RFC 6225 [6]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "lat": { + "description": "The latitude value of location as defined in IETF RFC 6225 [6]", + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint64" + }, + "latUncertainty": { + "description": "The uncertainty for Latitude information as defined in IETF RFC 6225 [6]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "long": { + "description": "The longitude value of location as defined in IETF RFC 6225 [6]", + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint64" + }, + "longUncertainty": { + "description": "The uncertainty for Longitude information as defined in IETF RFC 6225 [6]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + } + }, + "required": [ + "latUncertainty", + "lat", + "longUncertainty", + "long", + "datum" + ], + "type": "object", + "x-etsi-ref": "6.5.19" + } + }, + "type": "object", + "x-etsi-ref": "6.5.9" + }, + "apNeighbor": { + "properties": { + "bssid": { + "description": "BSS Id of the Access Point that is being reported.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "bssidInfo": { + "description": "Additional information related to Access Point that is being reported such as AP reachability, security, key scope, Mobility Domain, HT/VHT capability and Fine Time Measurements.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt32" + }, + "channel": { + "description": "The channel currently used by this Access Point.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "operatingClass": { + "description": "The channel set of the AP indicated by this BSSID.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "phyType": { + "description": "PHY type of the AP indicated by this BSSID. It is an integer value coded according to the value of the dot11PHYType.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + } + }, + "required": [ + "bssid", + "bssidInfo", + "operatingClass", + "channel", + "phyType" + ], + "type": "object", + "x-etsi-ref": "6.5.10" + }, + "bssLoad": { + "properties": { + "availAdmCap": { + "description": "Available Admission Capacity that specifies the remaining amount of medium time available via explicit admission control, in units of 32 s/s.", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + }, + "channelUtilization": { + "description": "The percentage of time, linearly scaled with 255 representing 100 %, that the AP sensed the medium was busy, as indicated by either the physical or virtual Carrier Sense (CS) mechanism.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + }, + "staCount": { + "description": "An unsigned integer that indicates the total number of STAs currently associated with this BSS.", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt16" + } + }, + "required": [ + "staCount", + "channelUtilization", + "availAdmCap" + ], + "type": "object", + "x-etsi-ref": "6.5.7" + }, + "channel": { + "description": "Channel configured for the Access Point.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "extBssLoad": { + "properties": { + "muMimoStaCount": { + "description": "Indicates the total number of STAs currently associated with this BSS that have a 1 in the MU Beamformee Capable field of their VHT Capabilities element.", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt16" + }, + "obsSec20MhzUtil": { + "description": "Observable loading on each of the secondary 20 MHz channel.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "obsSec40MhzUtil": { + "description": "Observable loading on each of the secondary 40 MHz channel.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "obsSec80MhzUtil": { + "description": "Observable loading on each of the secondary 80 MHz channel.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "spatStreamUnderUtil": { + "description": "The percentage of time, linearly scaled with 255 representing 100 %, that the AP has underutilized spatial domain resources for given busy time of the medium.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + } + }, + "required": [ + "muMimoStaCount", + "spatStreamUnderUtil", + "obsSec20MhzUtil", + "obsSec40MhzUtil", + "obsSec80MhzUtil" + ], + "type": "object", + "x-etsi-ref": "6.5.8" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "wanMetrics": { + "properties": { + "downlinkLoad": { + "description": "1-octet positive integer representing the current percentage loading of the downlink WAN connection, scaled linearly with 255 representing 100 %, as measured over an interval the duration of which is reported in Load Measurement Duration. In cases where the downlink load is unknown to the AP, the value is set to zero.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + }, + "downlinkSpeed": { + "description": "4-octet positive integer whose value is an estimate of the WAN Backhaul link current downlink speed in kilobits per second.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "lmd": { + "description": "The LMD (Load Measurement Duration) field is a 2-octet positive integer representing the duration over which the Downlink Load and Uplink Load have been measured, in tenths of a second. When the actual load measurement duration is greater than the maximum value, the maximum value will be reported. The value of the LMD field is set to 0 when neither the uplink nor downlink load can be computed. When the uplink and downlink loads are computed over different intervals, the maximum interval is reported.", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + }, + "uplinkLoad": { + "description": "1-octet positive integer representing the current percentage loading of the uplink WAN connection, scaled linearly with 255 representing 100 %, as measured over an interval, the duration of which is reported in Load Measurement Duration. In cases where the uplink load is unknown to the AP, the value is set to zero.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "uplinkSpeed": { + "description": "4-octet positive integer whose value is an estimate of the WAN Backhaul link's current uplink speed in kilobits per second.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt32" + }, + "wanInfo": { + "description": "Info about WAN link status, link symmetricity and capacity currently used.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + } + }, + "required": [ + "wanInfo", + "downlinkSpeed", + "uplinkSpeed", + "downlinkLoad", + "uplinkLoad", + "lmd" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "wlanCap": { + "properties": { + "dmg": { + "properties": { + "ExtScMcsCap": { + "description": "Extended SC MCS capabilities as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dmgApOrPcpCapInfo": { + "description": "DMG AP or PCP capabilities information as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + }, + "dmgStaBeamTrackTimeLimit": { + "description": "DMG station beam tracking time limit as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + }, + "dmgStaCapInfo": { + "description": "DMG station capabilities information as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint64" + }, + "maxNrBasicAmsduSubframes": { + "description": "Number of basic A-MSDU subframes in A-MSDU as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "maxNrShortAmsduSubframes": { + "description": "Number of short A-MSDU subframes in A-MSDU as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "sarCap": { + "description": "SAR capabilities as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "tddCap": { + "description": "TDD capabilities as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + } + }, + "required": [ + "dmgStaCapInfo", + "dmgApOrPcpCapInfo", + "dmgStaBeamTrackTimeLimit", + "ExtScMcsCap", + "maxNrBasicAmsduSubframes", + "maxNrShortAmsduSubframes", + "tddCap", + "sarCap" + ], + "type": "object", + "x-etsi-ref": "6.5.17" + }, + "edmg": { + "properties": { + "ampduParameters": { + "description": "A-MPDU parameters as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "reserved": { + "description": "", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "supportedMcs": { + "description": "Supported MCS as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "trnParameters": { + "description": "Training parameters as defined in draft IEEE P802.11/D4.0 [i.11]", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint16" + } + }, + "required": [ + "ampduParameters", + "trnParameters", + "supportedMcs" + ], + "type": "object", + "x-etsi-ref": "6.5.18" + }, + "he": { + "properties": { + "heMacCapInfo": { + "description": "MAC capabilities of an Access Point.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "hePhyCapinfo": { + "description": "PHY capabilities of an Access Point.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "ppeThresholds": { + "description": "PPE Threshold determines the nominal packet padding value for a HE PPDU.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "not defined" + }, + "supportedHeMcsNssSet": { + "description": "Supported MCS and NSS Set.", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + } + }, + "required": [ + "heMacCapInfo", + "hePhyCapinfo", + "supportedHeMcsNssSet" + ], + "type": "object", + "x-etsi-ref": "6.5.16" + }, + "ht": { + "properties": { + "ampduParameters": { + "description": "A-MPDU parameters as defined in IEEE 802.11-2016 [8].", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + }, + "aselCap": { + "description": "ASEL capabilities as defined in IEEE 802.11-2016 [8].", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + }, + "htCapabilityInfo": { + "description": "HT Capability Information as defined in IEEE 802.11-2016 [8].", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt16" + }, + "htExtendedCap": { + "description": "Extended HT Capabilities as defined in IEEE 802.11-2016 [8].", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt16" + }, + "supportedMcsSet": { + "description": "Supported MCS set as defined in IEEE 802.11-2016 [8].", + "format": "uint128", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint128" + }, + "txBeamFormCap": { + "description": "Transmit Beamforming Capabilities as defined in IEEE 802.11-2016 [8].", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt32" + } + }, + "required": [ + "htCapabilityInfo", + "ampduParameters", + "supportedMcsSet", + "htExtendedCap", + "txBeamFormCap", + "aselCap" + ], + "type": "object", + "x-etsi-ref": "6.5.14" + }, + "vht": { + "properties": { + "vhtCapInfo": { + "description": "VHT capabilities Info as defined in IEEE 802.11-2016 [8].", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt32" + }, + "vhtMcsNss": { + "description": "Supported VHT-MCS and NSS Set as defined in IEEE 802.11-2016 [8].", + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt64" + } + }, + "required": [ + "vhtCapInfo", + "vhtMcsNss" + ], + "type": "object", + "x-etsi-ref": "6.5.15" + } + }, + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "apId" + ], + "type": "object", + "x-etsi-ref": "6.2.2" +} +} \ No newline at end of file diff --git a/MEC028/WAI/AP_INFO/schemas/ProblemDetails.schema.json b/MEC028/WAI/AP_INFO/schemas/ProblemDetails.schema.json new file mode 100644 index 0000000..af823da --- /dev/null +++ b/MEC028/WAI/AP_INFO/schemas/ProblemDetails.schema.json @@ -0,0 +1,40 @@ +{ + "ProblemDetails": { + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "title": { + "description": "A short, human-readable summary of the problem type", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "type": { + "description": "A URI reference according to IETF RFC 3986 that identifies the problem type", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + } + }, + "type": "object" + } +} \ No newline at end of file diff --git a/MEC028/WAI/EXT_SUB/ExistingSubscription.robot b/MEC028/WAI/EXT_SUB/ExistingSubscription.robot new file mode 100644 index 0000000..f6b1123 --- /dev/null +++ b/MEC028/WAI/EXT_SUB/ExistingSubscription.robot @@ -0,0 +1,120 @@ +''[Documentation] robot --outputdir ../../outputs ./ExistingSubscription.robot +... Test Suite to validate WLAN Information API (EXT_SUB) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + +#GET +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_008_OK + [Documentation] + ... Check that the IUT responds with the list of Subscription" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve existing subscription information ${SUB_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AssocStaSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URI} + Should Be Equal As Strings ${response['body']['apId']['macId']} ${MAC_ID} + +TP_MEC_MEC028_SRV_WAI_008_NF + [Documentation] + ... Check that the IUT responds with an error when a request for existing subscription with incorrect parameters is sent" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve existing subscription information ${NOT_EXISTING_SUB_ID} + Check HTTP Response Status Code Is 404 + + +#PUT +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_009_OK + [Documentation] + ... Check that the IUT responds with a Notification Subscription when it is modified" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.2 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Modify existing subscription information ${SUB_ID} UpdateAssocStaSubscription.json + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AssocStaSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + Should Be Equal As Strings ${response['body']['callbackReference']} ${NEW_CALLBACK_URI} + Should Be Equal As Strings ${response['body']['apId']['macId']} ${MAC_ID} + +TP_MEC_MEC028_SRV_WAI_009_BR + [Documentation] + ... Check that the IUT responds with an error when an invalid field is set in the subscription modification request" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.2 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Modify existing subscription information ${SUB_ID} UpdateAssocStaSubscription_BR.json + Check HTTP Response Status Code Is 400 + +#DELETE +TP_MEC_MEC028_SRV_WAI_010_OK + [Documentation] + ... Check that the IUT responds with 204 when an existing subscription is correctly deleted" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.5 + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Remove existing subscription information ${SUB_ID} + Check HTTP Response Status Code Is 204 + +TP_MEC_MEC028_SRV_WAI_010_NF + [Documentation] + ... Check that the IUT responds with an error when an not existing subscription cannot be deleted" + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.5 + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Remove existing subscription information ${NOT_EXISTING_SUB_ID} + Check HTTP Response Status Code Is 404 + +*** Keywords *** +Retrieve existing subscription information + [Arguments] ${SUB_ID} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Modify existing subscription information + [Arguments] ${SUB_ID} ${content} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Remove existing subscription information + [Arguments] ${SUB_ID} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC028/WAI/EXT_SUB/environment/variables.txt b/MEC028/WAI/EXT_SUB/environment/variables.txt new file mode 100644 index 0000000..8e5fb83 --- /dev/null +++ b/MEC028/WAI/EXT_SUB/environment/variables.txt @@ -0,0 +1,17 @@ +*** Variables *** +${apiRoot} +${apiName} wai +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 127.0.0.1 +${MEC-APP_PORT} 8082 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${SUB_TYPE} AssocStaSubscription +${SUB_ID} 1 +${NOT_EXISTING_SUB_ID} 99 +${CALLBACK_URI} http://callback.uri/1 +${NEW_CALLBACK_URI} http://new.callback.uri/1 +${MAC_ID} macId01 \ No newline at end of file diff --git a/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription.json b/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription.json new file mode 100644 index 0000000..578d8f0 --- /dev/null +++ b/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription.json @@ -0,0 +1,11 @@ +{ + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://new.callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} \ No newline at end of file diff --git a/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription_BR.json b/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription_BR.json new file mode 100644 index 0000000..d5fb273 --- /dev/null +++ b/MEC028/WAI/EXT_SUB/jsons/UpdateAssocStaSubscription_BR.json @@ -0,0 +1,11 @@ +{ + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} \ No newline at end of file diff --git a/MEC028/WAI/EXT_SUB/schemas/AssocStaSubscription.schema.json b/MEC028/WAI/EXT_SUB/schemas/AssocStaSubscription.schema.json new file mode 100644 index 0000000..956773c --- /dev/null +++ b/MEC028/WAI/EXT_SUB/schemas/AssocStaSubscription.schema.json @@ -0,0 +1,109 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "apId": { + "properties": { + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique Identifier assigned to an Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks including Basic Service Set and Extended Service Set.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed WLAN information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "subscriptionType": { + "description": "Shall be set to \"AssocStaSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "apId" + ], + "type": "object", + "x-etsi-ref": "6.3.2" +} \ No newline at end of file diff --git a/MEC028/WAI/STA_INFO/WaiStaInfo.robot b/MEC028/WAI/STA_INFO/WaiStaInfo.robot new file mode 100644 index 0000000..0968d7d --- /dev/null +++ b/MEC028/WAI/STA_INFO/WaiStaInfo.robot @@ -0,0 +1,81 @@ +''[Documentation] robot --outputdir ../../outputs ./WaiSTAInfo.robot +... Test Suite to validate WLAN Information API (STA_INFO) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + + +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_003_OK + [Documentation] + ... Check that the IUT responds with the list of Station Point + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the station information + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is StaInfo + ## Post condition + FOR ${staInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${staInfo['staId']['macId']} ${MAC_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + +TP_MEC_MEC028_SRV_WAI_004_OK + [Documentation] + ... Check that the IUT responds with the list of Station Point filtered by the macId provided as query parameter + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the station information using filters ${filter} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is StaInfo + ## Post condition + FOR ${staInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${staInfo['staId']['macId']} ${MAC_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + + +TP_MEC_MEC028_SRV_WAI_004_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 028 2.1.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the station information using filters ${bad_filter} + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails + + +*** Keywords *** +Retrieve the station information + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/sta/sta_information + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the station information using filters + [Arguments] ${filter} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/sta/sta_information?filter=${filter} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC028/WAI/STA_INFO/environment/variables.txt b/MEC028/WAI/STA_INFO/environment/variables.txt new file mode 100644 index 0000000..c64df1b --- /dev/null +++ b/MEC028/WAI/STA_INFO/environment/variables.txt @@ -0,0 +1,14 @@ +*** Variables *** +${apiRoot} +${apiName} wai +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 127.0.0.1 +${MEC-APP_PORT} 8082 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${MAC_ID} macId01 +${filter} (eq,staId/macId,macId01) +${bad_filter} (eq,staId/mac,macId01) \ No newline at end of file diff --git a/MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json b/MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json new file mode 100644 index 0000000..e14c086 --- /dev/null +++ b/MEC028/WAI/STA_INFO/schemas/ProblemDetails.schema.json @@ -0,0 +1,38 @@ +{ + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "title": { + "description": "A short, human-readable summary of the problem type", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "type": { + "description": "A URI reference according to IETF RFC 3986 that identifies the problem type", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + } + }, + "type": "object" +} \ No newline at end of file diff --git a/MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json b/MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json new file mode 100644 index 0000000..cc1136c --- /dev/null +++ b/MEC028/WAI/STA_INFO/schemas/StaInfo.schema.json @@ -0,0 +1,789 @@ +{ +"items":{ + "properties": { + "apAssociated": { + "properties": { + "assocId": { + "description": "Unique number which identifies a particular association between the station and Access Point.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "string" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "string" + }, + "macId": { + "description": "Unique identifier assigned to the Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "string" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.12" + }, + "beaconReport": { + "properties": { + "bssId": { + "description": "The BSSID field indicates the BSSID of the BSS(s) for which a beacon report has been received.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "channelId": { + "description": "Channel number where the beacon was received.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "measurementId": { + "description": "Measurement ID of the Measurement configuration applied to this Beacon Report.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "reportingCondition": { + "description": "As in table T9-89 of IEEE 802.11-2012 [8].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "ssId": { + "description": "(Optional) The SSID subelement indicates the ESS(s) or IBSS(s) for which a beacon report is received.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "staId": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + } + }, + "required": [ + "staId", + "measurementId", + "channelId", + "bssId", + "ssId", + "reportingCondition" + ], + "type": "object", + "x-etsi-ref": "6.5.27" + }, + "channel": { + "description": "Channel currently used by the station.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "rssi": { + "properties": { + "rssi": { + "description": "The Received Signal Strength Indicator from a station", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + } + }, + "required": [ + "rssi" + ], + "type": "object", + "x-etsi-ref": "6.5.21" + }, + "staDataRate": { + "properties": { + "staId": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + }, + "staLastDataDownlinkRate": { + "description": "The data transmit rate in kbps that was most recently used for transmission of data PPDUs from the access point to the station.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "staLastDataUplinkRate": { + "description": "The data transmit rate in Kbps that was most recently used for transmission of data PPDUs from the associated station to the access point.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "type": "object", + "x-etsi-ref": "6.5.22" + }, + "staId": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + }, + "staStatistics": { + "properties": { + "groupIdentity": { + "description": "Indicates the requested statistics group describing the Statistics Group Data according to table 9-114 of IEEE 802.11-2016 [8].", + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt8" + }, + "md": { + "description": "Measurement Duration.", + "format": "uint16", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "UInt16" + }, + "statisticsGroupData": { + "description": "Statistics Group Data as defined in Annex C of IEEE 802.112016 [8].", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "not specified", + "properties": { + "dot11AMPDUDelimiterCRCErrorCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11AMPDUReceivedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11AMSDUAckFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11AckFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11BeamformingFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ChannelWidthSwitchCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11DualCTSFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11DualCTSSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ExplicitBARFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FCSErrorCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FailedAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FailedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FortyMHzFrameReceivedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FortyMHzFrameTransmittedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11FrameDuplicateCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11GrantedRDGUnusedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11GrantedRDGUsedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11GroupReceivedFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11GroupTransmittedFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ImplicitBARFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11MPDUInReceivedAMPDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11MultipleRetryAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11MultipleRetryCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11PSMPUTTGrantDuration": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11PSMPUTTUsedDuration": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosAckFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosDiscardedFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosFailedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosFrameDuplicateCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosMPDUsReceivedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosMultipleRetryCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosRTSFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosRTSSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosReceivedFragmentCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosRetriesReceivedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosRetryCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosTransmittedFragmentCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11QosTransmittedFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsBIPMICErrors": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsCCMPDecryptErrors": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsCCMPReplays": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsCMACReplays": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsRobustMgmtCCMPReplays": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsTKIPICVErrors": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RSNAStatsTKIPReplays": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RTSFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RTSLSIGFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RTSLSIGSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RTSSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ReceivedAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ReceivedFragmentCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11ReceivedOctetsInAMPDUCount": { + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint64" + }, + "dot11ReceivedOctetsInAMSDUCount": { + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint64" + }, + "dot11RetryAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11RetryCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11STAStatisticsAPAverageAccessDelay": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsAverageAccessDelayBackGround": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsAverageAccessDelayBestEffort": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsAverageAccessDelayVideo": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsAverageAccessDelayVoice": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsChannelUtilization": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STAStatisticsStationCount": { + "format": "uint8", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "dot11STBCCTSFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11STBCCTSSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedAMPDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedFragmentCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedFrameCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedFramesInGrantedRDGCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedMPDUsInAMPDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedOctetsInAMPDUCount": { + "format": "int64", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint64" + }, + "dot11TransmittedOctetsInAMSDUCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TransmittedOctetsInGrantedRDGCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TwentyMHzFrameReceivedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11TwentyMHzFrameTransmittedCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11nonSTBCCTSFailureCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dot11nonSTBCCTSSuccessCount": { + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "type": "object" + } + }, + "required": [ + "md", + "groupIdentity", + "statisticsGroupData" + ], + "type": "object", + "x-etsi-ref": "6.5.13" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + }, + "required": [ + "staId" + ], + "type": "object", + "x-etsi-ref": "6.2.3" + } +} \ No newline at end of file diff --git a/MEC028/WAI/SUB/WaiSubscription.robot b/MEC028/WAI/SUB/WaiSubscription.robot new file mode 100644 index 0000000..941eaf0 --- /dev/null +++ b/MEC028/WAI/SUB/WaiSubscription.robot @@ -0,0 +1,142 @@ +''[Documentation] robot --outputdir ../../outputs ./WaiSubscription.robot +... Test Suite to validate WLAN Information API (SUB) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + +#POST +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_007_OK + [Documentation] + ... Check that the IUT responds with a Notification Subscription + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription AssocStaSubscription.json + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is AssocStaSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${HREF} + Should Be Equal As Strings ${response['headers']['Location']} ${HREF} + +TP_MEC_MEC028_SRV_WAI_007_BR + [Documentation] + ... Check that the IUT responds with an error when an invalid Subscription request is sent + ... ETSI GS MEC 028 2.1.1, clause 7.5.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription AssocStaSubscription_BR.json + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC028_SRV_WAI_007_NF + [Documentation] + ... Check that the IUT responds with an error when a request with not existing parameters is sent + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription using wrong endpoint AssocStaSubscription.json + Check HTTP Response Status Code Is 404 + + +#GET +TP_MEC_MEC028_SRV_WAI_005_OK + [Documentation] + ... Check that the IUT responds with the requested list of subscription + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the subscription information ${SUB_FILTER} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + FOR ${assocStaSub} IN @{response['body']['assocStaSubscription']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${assocStaSub['_links']['self']['href']} ${HREF} + Exit For Loop If ${passed} + END + +TP_MEC_MEC028_SRV_WAI_006_OK + [Documentation] + ... Check that the IUT responds with the requested list of subscription + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the subscription information ${SUB_FILTER} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${HREF} + +TP_MEC_MEC028_SRV_WAI_006_BR + [Documentation] + ... Check that the IUT responds with the requested list of subscription + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the subscription information ${INVALID_SUB_FILTER} + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC028_SRV_WAI_006_NF + [Documentation] + ... Check that the IUT responds with an error when a request with not existing parameters is sent + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Retrieve the subscription information using wrong endpoint + Check HTTP Response Status Code Is 404 + +*** Keywords *** +Send a request for creating a subscription + [Arguments] ${content} + Log Creating a new subscription + #Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + Log ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send a request for creating a subscription using wrong endpoint + [Arguments] ${content} + Log Creating a new subscription + #Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the subscription information + [Arguments] ${subscription_type} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + #Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the subscription information using wrong endpoint + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + #Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC028/WAI/SUB/environment/variables.txt b/MEC028/WAI/SUB/environment/variables.txt new file mode 100644 index 0000000..dfa2d41 --- /dev/null +++ b/MEC028/WAI/SUB/environment/variables.txt @@ -0,0 +1,18 @@ +*** Variables *** +${apiRoot} +${apiName} wai +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 127.0.0.1 +${MEC-APP_PORT} 8082 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${SUB_TYPE} AssocStaSubscription + +${SUB_FILTER} assoc_sta +${INVALID_SUB_FILTER} assocStaSub + +${HREF} /wai/v1/subscriptions/1 +${CALLBACK_URI} http://callback.uri/1 \ No newline at end of file diff --git a/MEC028/WAI/SUB/jsons/AssocStaSubscription.json b/MEC028/WAI/SUB/jsons/AssocStaSubscription.json new file mode 100644 index 0000000..152ca49 --- /dev/null +++ b/MEC028/WAI/SUB/jsons/AssocStaSubscription.json @@ -0,0 +1,7 @@ +{ + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} \ No newline at end of file diff --git a/MEC028/WAI/SUB/jsons/AssocStaSubscription_BR.json b/MEC028/WAI/SUB/jsons/AssocStaSubscription_BR.json new file mode 100644 index 0000000..d5fb273 --- /dev/null +++ b/MEC028/WAI/SUB/jsons/AssocStaSubscription_BR.json @@ -0,0 +1,11 @@ +{ + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} \ No newline at end of file diff --git a/MEC028/WAI/SUB/schemas/AssocStaSubscription.schema.json b/MEC028/WAI/SUB/schemas/AssocStaSubscription.schema.json new file mode 100644 index 0000000..956773c --- /dev/null +++ b/MEC028/WAI/SUB/schemas/AssocStaSubscription.schema.json @@ -0,0 +1,109 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "apId": { + "properties": { + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique Identifier assigned to an Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks including Basic Service Set and Extended Service Set.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed WLAN information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "subscriptionType": { + "description": "Shall be set to \"AssocStaSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "apId" + ], + "type": "object", + "x-etsi-ref": "6.3.2" +} \ No newline at end of file diff --git a/MEC028/WAI/SUB/schemas/SubscriptionLinkList.schema.json b/MEC028/WAI/SUB/schemas/SubscriptionLinkList.schema.json new file mode 100644 index 0000000..b4818c1 --- /dev/null +++ b/MEC028/WAI/SUB/schemas/SubscriptionLinkList.schema.json @@ -0,0 +1,272 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "assocStaSubscription": { + "items": { + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "apId": { + "properties": { + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique Identifier assigned to an Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks including Basic Service Set and Extended Service Set.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed WLAN information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "subscriptionType": { + "description": "Shall be set to \"AssocStaSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "apId" + ], + "type": "object", + "x-etsi-ref": "6.3.2" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AssocStaSubscription" + }, + "staDataRateSubscription": { + "items": { + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed WLAN Access Information Service. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "staId": { + "description": "Identifier(s) to uniquely specify the target client station(s) for the subscription", + "items": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "StaIdentity" + }, + "subscriptionType": { + "description": "Shall be set to \"StaDataRateSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "staId" + ], + "type": "object", + "x-etsi-ref": "6.3.3" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "StaDataRateSubscription" + } + }, + "required": [ + "_links" + ], + "type": "object" +} \ No newline at end of file diff --git a/MEC028/outputs/log-20210506-145611.html b/MEC028/outputs/log-20210506-145611.html new file mode 100644 index 0000000..5b94fad --- /dev/null +++ b/MEC028/outputs/log-20210506-145611.html @@ -0,0 +1,2189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework log failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MEC028/outputs/log.html b/MEC028/outputs/log.html new file mode 100644 index 0000000..92a7612 --- /dev/null +++ b/MEC028/outputs/log.html @@ -0,0 +1,2189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework log failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MEC028/outputs/output-20210506-145611.xml b/MEC028/outputs/output-20210506-145611.xml new file mode 100644 index 0000000..f889481 --- /dev/null +++ b/MEC028/outputs/output-20210506-145611.xml @@ -0,0 +1,1000 @@ + + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. +${body} = { + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions +${body} +http +*Sends a POST request to the endpoint.* + + + +${body} +Logs the given message with the given level. +{ + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.015031000000000001, + "status": 201, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Location": "/wai/v1/subscriptions/1", + "Content-Length": "222", + "Date": "Thu, 06 May 2021 12:56:11 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.015031000000000001, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.015031000000000001, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... + + + + + +201 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 201 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +AssocStaSubscription + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = AssocStaSubscription.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${response['body']['subscriptionType']} +${SUB_TYPE} +Fails if objects are unequal after converting them to strings. + + + +${response['body']['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + + +${response['headers']['Location']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +Check that the IUT responds with a Notification Subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription_BR.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription_BR.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json</a>'. +${body} = { + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions +${body} +http +*Sends a POST request to the endpoint.* + + + +${body} +Logs the given message with the given level. +{ + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.00544, + "status": 400, + "body": "", + "headers": { + "Content-Type": "application/problem+json; charset=utf-8", + "Content-Length": "0", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.00544, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'ke... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.00544, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'ke... + + + + + +400 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 400 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when an invalid Subscription request is sent +ETSI GS MEC 028 2.1.1, clause 7.5.3.4 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. +${body} = { + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI +${body} +http +*Sends a POST request to the endpoint.* +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.0037170000000000003, + "status": 404, + "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", + "headers": { + "Content-Security-Policy": "default-src 'none'", + "X-Content-Type-Options": "nosniff", + "Content-Type": "text/html; charset=utf-8", + "Content-Length": "172", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.0037170000000000003, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.0037170000000000003, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... + + + + + +404 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 404 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when a request with not existing parameters is sent +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.004779, + "status": 200, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "staDataRateSubscription": [], + "assocStaSubscription": [ + { + "subscriptionType": "AssocStaSubscription", + "callbackReference": "http://callback/uri", + "apId": { + "macId": "macId01" + }, + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + } + } + ] + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Content-Length": "361", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.004779, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.004779, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + + + +200 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 200 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +SubscriptionLinkList + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = SubscriptionLinkList.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${assocStaSub} +@{response['body']['assocStaSubscription']} + +{'subscriptionType': 'AssocStaSubscription', 'callbackReference': 'http://callback/uri', 'apId': {'macId': 'macId01'}, '_links': {'self': {'href': '/wai/v1/subscriptions/1'}}} + +${passed} +Should Be Equal As Strings +${assocStaSub['_links']['self']['href']} +${HREF} +Runs the given keyword with given arguments and returns the status as a Boolean value. + +${assocStaSub['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +${passed} = True + + + +${passed} +Stops executing the enclosing for loop if the ``condition`` is true. +Exiting for loop altogether. + + + + + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.004893, + "status": 200, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "staDataRateSubscription": [], + "assocStaSubscription": [ + { + "subscriptionType": "AssocStaSubscription", + "callbackReference": "http://callback/uri", + "apId": { + "macId": "macId01" + }, + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + } + } + ] + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Content-Length": "361", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.004893, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.004893, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + + + +200 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 200 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +SubscriptionLinkList + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = SubscriptionLinkList.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${response['body']['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${INVALID_SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.005156, + "status": 400, + "body": "", + "headers": { + "Content-Type": "application/problem+json; charset=utf-8", + "Content-Length": "0", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.005156, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'k... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.005156, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'k... + + + + + +400 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 400 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI +http +*Sends a GET request to the endpoint.* +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.003614, + "status": 404, + "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", + "headers": { + "Content-Security-Policy": "default-src 'none'", + "X-Content-Type-Options": "nosniff", + "Content-Type": "text/html; charset=utf-8", + "Content-Length": "171", + "Date": "Thu, 06 May 2021 12:56:12 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.003614, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_UR... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.003614, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_UR... + + + + + +404 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 404 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when a request with not existing parameters is sent +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + + + +All Tests + + + + +WaiSubscription + + + +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + diff --git a/MEC028/outputs/output.xml b/MEC028/outputs/output.xml new file mode 100644 index 0000000..ef1cfcf --- /dev/null +++ b/MEC028/outputs/output.xml @@ -0,0 +1,1000 @@ + + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. +${body} = { + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions +${body} +http +*Sends a POST request to the endpoint.* + + + +${body} +Logs the given message with the given level. +{ + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.016300000000000002, + "status": 201, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Location": "/wai/v1/subscriptions/1", + "Content-Length": "222", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.016300000000000002, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.016300000000000002, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... + + + + + +201 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 201 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +AssocStaSubscription + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = AssocStaSubscription.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${response['body']['subscriptionType']} +${SUB_TYPE} +Fails if objects are unequal after converting them to strings. + + + +${response['body']['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + + +${response['headers']['Location']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +Check that the IUT responds with a Notification Subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription_BR.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription_BR.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json</a>'. +${body} = { + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions +${body} +http +*Sends a POST request to the endpoint.* + + + +${body} +Logs the given message with the given level. +{ + "_links":{ + "href":"" + }, + + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "INVALID_VALUE" +} + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.005856, + "status": 400, + "body": "", + "headers": { + "Content-Type": "application/problem+json; charset=utf-8", + "Content-Length": "0", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.005856, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Connection': 'k... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.005856, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Connection': 'k... + + + + + +400 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 400 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when an invalid Subscription request is sent +ETSI GS MEC 028 2.1.1, clause 7.5.3.4 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +AssocStaSubscription.json + +Creating a new subscription +Logs the given message with the given level. +Creating a new subscription + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${path} +SEPARATOR= +jsons/ +${content} +Catenates the given items together and returns the resulted string. +${path} = jsons/AssocStaSubscription.json + + + +${body} +${path} +Returns the contents of a specified file. +Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. +${body} = { + "apId": { + "macId": "macId01" + }, + "callbackReference": "http://callback.uri/1", + "subscriptionType": "AssocStaSubscription" +} + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI +${body} +http +*Sends a POST request to the endpoint.* +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.0030830000000000002, + "status": 404, + "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", + "headers": { + "Content-Security-Policy": "default-src 'none'", + "X-Content-Type-Options": "nosniff", + "Content-Type": "text/html; charset=utf-8", + "Content-Length": "172", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.0030830000000000002, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.0030830000000000002, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... + + + + + +404 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 404 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when a request with not existing parameters is sent +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.005093, + "status": 200, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "staDataRateSubscription": [], + "assocStaSubscription": [ + { + "subscriptionType": "AssocStaSubscription", + "callbackReference": "http://callback/uri", + "apId": { + "macId": "macId01" + }, + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + } + } + ] + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Content-Length": "361", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.005093, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.005093, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... + + + + + +200 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 200 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +SubscriptionLinkList + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = SubscriptionLinkList.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${assocStaSub} +@{response['body']['assocStaSubscription']} + +{'subscriptionType': 'AssocStaSubscription', 'callbackReference': 'http://callback/uri', 'apId': {'macId': 'macId01'}, '_links': {'self': {'href': '/wai/v1/subscriptions/1'}}} + +${passed} +Should Be Equal As Strings +${assocStaSub['_links']['self']['href']} +${HREF} +Runs the given keyword with given arguments and returns the status as a Boolean value. + +${assocStaSub['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +${passed} = True + + + +${passed} +Stops executing the enclosing for loop if the ``condition`` is true. +Exiting for loop altogether. + + + + + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.005634999999999999, + "status": 200, + "body": { + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + }, + "staDataRateSubscription": [], + "assocStaSubscription": [ + { + "subscriptionType": "AssocStaSubscription", + "callbackReference": "http://callback/uri", + "apId": { + "macId": "macId01" + }, + "_links": { + "self": { + "href": "/wai/v1/subscriptions/1" + } + } + } + ] + }, + "headers": { + "Content-Type": "application/json; charset=utf-8", + "Content-Length": "361", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.005634999999999999, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocSt... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.005634999999999999, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocSt... + + + + + +200 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 200 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + + +SubscriptionLinkList + +${response['headers']['Content-Type']} +application/json +Fails if ``container`` does not contain ``item`` one or more times. + + + +${schema} +SEPARATOR= +${input} +.schema.json +Catenates the given items together and returns the resulted string. +${schema} = SubscriptionLinkList.schema.json + + + +${schema} +${response['body']} +Validates the sample JSON against the given schema. + + + +Json Schema Validation OK +Logs the given message with the given level. +Json Schema Validation OK + + + + + +${response['body']['_links']['self']['href']} +${HREF} +Fails if objects are unequal after converting them to strings. + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +${INVALID_SUB_FILTER} + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} +http +*Sends a GET request to the endpoint.* + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.005876999999999999, + "status": 400, + "body": "", + "headers": { + "Content-Type": "application/problem+json; charset=utf-8", + "Content-Length": "0", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.005876999999999999, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Con... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.005876999999999999, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Con... + + + + + +400 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 400 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with the requested list of subscription +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + + +${PIC_MEC_SYSTEM} == 1 +Fails if the given condition is not true. + + + +${PIC_SERVICES} == 1 +Fails if the given condition is not true. + + + +{"Content-Type":"application/json"} +settings +*Sets new request headers or updates the existing.* + + + +{"Authorization":"${TOKEN}"} +settings +*Sets new request headers or updates the existing.* + + + +${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI +http +*Sends a GET request to the endpoint.* +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + + +${output} +response +I/O +*Outputs JSON to terminal or a file.* + +{ + "seconds": 0.0049169999999999995, + "status": 404, + "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", + "headers": { + "Content-Security-Policy": "default-src 'none'", + "X-Content-Type-Options": "nosniff", + "Content-Type": "text/html; charset=utf-8", + "Content-Length": "171", + "Date": "Thu, 06 May 2021 12:55:53 GMT", + "Connection": "keep-alive", + "Keep-Alive": "timeout=5" + } +} +${output} = {'seconds': 0.0049169999999999995, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptio... + + + +${response} +${output} +Makes a variable available everywhere within the scope of the current suite. +${response} = {'seconds': 0.0049169999999999995, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptio... + + + + + +404 + +${status} +${expected_status} +Converts the given item to an integer number. +${status} = 404 + + + +${response['status']} +${status} +Fails if the given objects are unequal. + + + +Status code validated +Logs the given message with the given level. +Status code validated + + + + +Check that the IUT responds with an error when a request with not existing parameters is sent +Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 +https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + + + + + + +All Tests + + + + +WaiSubscription + + + +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 +Response body content is not JSON. Content-Type is: text/html; charset=utf-8 + + diff --git a/MEC028/outputs/report-20210506-145611.html b/MEC028/outputs/report-20210506-145611.html new file mode 100644 index 0000000..e75ee9b --- /dev/null +++ b/MEC028/outputs/report-20210506-145611.html @@ -0,0 +1,2458 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework report failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MEC028/outputs/report.html b/MEC028/outputs/report.html new file mode 100644 index 0000000..747624b --- /dev/null +++ b/MEC028/outputs/report.html @@ -0,0 +1,2458 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework report failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- GitLab From 6d098739dfe979335dadbf474b5ecd67ab45dbc4 Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 6 May 2021 17:01:07 +0200 Subject: [PATCH 35/63] removed output dir. --- MEC028/outputs/log-20210506-145611.html | 2189 ----------------- MEC028/outputs/log.html | 2189 ----------------- MEC028/outputs/output-20210506-145611.xml | 1000 -------- MEC028/outputs/output.xml | 1000 -------- MEC028/outputs/report-20210506-145611.html | 2458 -------------------- MEC028/outputs/report.html | 2458 -------------------- 6 files changed, 11294 deletions(-) delete mode 100644 MEC028/outputs/log-20210506-145611.html delete mode 100644 MEC028/outputs/log.html delete mode 100644 MEC028/outputs/output-20210506-145611.xml delete mode 100644 MEC028/outputs/output.xml delete mode 100644 MEC028/outputs/report-20210506-145611.html delete mode 100644 MEC028/outputs/report.html diff --git a/MEC028/outputs/log-20210506-145611.html b/MEC028/outputs/log-20210506-145611.html deleted file mode 100644 index 5b94fad..0000000 --- a/MEC028/outputs/log-20210506-145611.html +++ /dev/null @@ -1,2189 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Opening Robot Framework log failed

-
    -
  • Verify that you have JavaScript enabled in your browser.
  • -
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • -
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • -
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MEC028/outputs/log.html b/MEC028/outputs/log.html deleted file mode 100644 index 92a7612..0000000 --- a/MEC028/outputs/log.html +++ /dev/null @@ -1,2189 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Opening Robot Framework log failed

-
    -
  • Verify that you have JavaScript enabled in your browser.
  • -
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • -
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • -
-
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MEC028/outputs/output-20210506-145611.xml b/MEC028/outputs/output-20210506-145611.xml deleted file mode 100644 index f889481..0000000 --- a/MEC028/outputs/output-20210506-145611.xml +++ /dev/null @@ -1,1000 +0,0 @@ - - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. -${body} = { - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions -${body} -http -*Sends a POST request to the endpoint.* - - - -${body} -Logs the given message with the given level. -{ - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.015031000000000001, - "status": 201, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Location": "/wai/v1/subscriptions/1", - "Content-Length": "222", - "Date": "Thu, 06 May 2021 12:56:11 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.015031000000000001, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.015031000000000001, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... - - - - - -201 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 201 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -AssocStaSubscription - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = AssocStaSubscription.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${response['body']['subscriptionType']} -${SUB_TYPE} -Fails if objects are unequal after converting them to strings. - - - -${response['body']['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - - -${response['headers']['Location']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -Check that the IUT responds with a Notification Subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription_BR.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription_BR.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json</a>'. -${body} = { - "_links":{ - "href":"" - }, - - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "INVALID_VALUE" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions -${body} -http -*Sends a POST request to the endpoint.* - - - -${body} -Logs the given message with the given level. -{ - "_links":{ - "href":"" - }, - - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "INVALID_VALUE" -} - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.00544, - "status": 400, - "body": "", - "headers": { - "Content-Type": "application/problem+json; charset=utf-8", - "Content-Length": "0", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.00544, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'ke... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.00544, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'ke... - - - - - -400 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 400 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when an invalid Subscription request is sent -ETSI GS MEC 028 2.1.1, clause 7.5.3.4 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. -${body} = { - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI -${body} -http -*Sends a POST request to the endpoint.* -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.0037170000000000003, - "status": 404, - "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", - "headers": { - "Content-Security-Policy": "default-src 'none'", - "X-Content-Type-Options": "nosniff", - "Content-Type": "text/html; charset=utf-8", - "Content-Length": "172", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.0037170000000000003, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.0037170000000000003, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... - - - - - -404 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 404 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when a request with not existing parameters is sent -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.004779, - "status": 200, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "staDataRateSubscription": [], - "assocStaSubscription": [ - { - "subscriptionType": "AssocStaSubscription", - "callbackReference": "http://callback/uri", - "apId": { - "macId": "macId01" - }, - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - } - } - ] - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Content-Length": "361", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.004779, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.004779, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - - - -200 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 200 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -SubscriptionLinkList - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = SubscriptionLinkList.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${assocStaSub} -@{response['body']['assocStaSubscription']} - -{'subscriptionType': 'AssocStaSubscription', 'callbackReference': 'http://callback/uri', 'apId': {'macId': 'macId01'}, '_links': {'self': {'href': '/wai/v1/subscriptions/1'}}} - -${passed} -Should Be Equal As Strings -${assocStaSub['_links']['self']['href']} -${HREF} -Runs the given keyword with given arguments and returns the status as a Boolean value. - -${assocStaSub['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -${passed} = True - - - -${passed} -Stops executing the enclosing for loop if the ``condition`` is true. -Exiting for loop altogether. - - - - - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.004893, - "status": 200, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "staDataRateSubscription": [], - "assocStaSubscription": [ - { - "subscriptionType": "AssocStaSubscription", - "callbackReference": "http://callback/uri", - "apId": { - "macId": "macId01" - }, - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - } - } - ] - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Content-Length": "361", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.004893, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.004893, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - - - -200 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 200 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -SubscriptionLinkList - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = SubscriptionLinkList.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${response['body']['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${INVALID_SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.005156, - "status": 400, - "body": "", - "headers": { - "Content-Type": "application/problem+json; charset=utf-8", - "Content-Length": "0", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.005156, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'k... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.005156, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:56:12 GMT', 'Connection': 'k... - - - - - -400 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 400 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI -http -*Sends a GET request to the endpoint.* -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.003614, - "status": 404, - "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", - "headers": { - "Content-Security-Policy": "default-src 'none'", - "X-Content-Type-Options": "nosniff", - "Content-Type": "text/html; charset=utf-8", - "Content-Length": "171", - "Date": "Thu, 06 May 2021 12:56:12 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.003614, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_UR... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.003614, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_UR... - - - - - -404 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 404 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when a request with not existing parameters is sent -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - - - -All Tests - - - - -WaiSubscription - - - -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - diff --git a/MEC028/outputs/output.xml b/MEC028/outputs/output.xml deleted file mode 100644 index ef1cfcf..0000000 --- a/MEC028/outputs/output.xml +++ /dev/null @@ -1,1000 +0,0 @@ - - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. -${body} = { - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions -${body} -http -*Sends a POST request to the endpoint.* - - - -${body} -Logs the given message with the given level. -{ - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.016300000000000002, - "status": 201, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Location": "/wai/v1/subscriptions/1", - "Content-Length": "222", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.016300000000000002, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.016300000000000002, 'status': 201, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'apId': {'macId': 'macId01'}, 'callbackReference': 'http://callback.uri/1', 'subscrip... - - - - - -201 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 201 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -AssocStaSubscription - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = AssocStaSubscription.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${response['body']['subscriptionType']} -${SUB_TYPE} -Fails if objects are unequal after converting them to strings. - - - -${response['body']['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - - -${response['headers']['Location']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -Check that the IUT responds with a Notification Subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription_BR.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription_BR.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription_BR.json</a>'. -${body} = { - "_links":{ - "href":"" - }, - - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "INVALID_VALUE" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions -${body} -http -*Sends a POST request to the endpoint.* - - - -${body} -Logs the given message with the given level. -{ - "_links":{ - "href":"" - }, - - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "INVALID_VALUE" -} - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.005856, - "status": 400, - "body": "", - "headers": { - "Content-Type": "application/problem+json; charset=utf-8", - "Content-Length": "0", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.005856, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Connection': 'k... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.005856, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Connection': 'k... - - - - - -400 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 400 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when an invalid Subscription request is sent -ETSI GS MEC 028 2.1.1, clause 7.5.3.4 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -AssocStaSubscription.json - -Creating a new subscription -Logs the given message with the given level. -Creating a new subscription - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${path} -SEPARATOR= -jsons/ -${content} -Catenates the given items together and returns the resulted string. -${path} = jsons/AssocStaSubscription.json - - - -${body} -${path} -Returns the contents of a specified file. -Getting file '<a href="file://C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json">C:\Users\pietr\Desktop\gs032p3-robot-test-suite\MEC028\WAI\SUB\jsons\AssocStaSubscription.json</a>'. -${body} = { - "apId": { - "macId": "macId01" - }, - "callbackReference": "http://callback.uri/1", - "subscriptionType": "AssocStaSubscription" -} - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI -${body} -http -*Sends a POST request to the endpoint.* -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.0030830000000000002, - "status": 404, - "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", - "headers": { - "Content-Security-Policy": "default-src 'none'", - "X-Content-Type-Options": "nosniff", - "Content-Type": "text/html; charset=utf-8", - "Content-Length": "172", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.0030830000000000002, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.0030830000000000002, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /wai/v1/subscripti... - - - - - -404 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 404 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when a request with not existing parameters is sent -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.005093, - "status": 200, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "staDataRateSubscription": [], - "assocStaSubscription": [ - { - "subscriptionType": "AssocStaSubscription", - "callbackReference": "http://callback/uri", - "apId": { - "macId": "macId01" - }, - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - } - } - ] - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Content-Length": "361", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.005093, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.005093, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocStaSubscriptio... - - - - - -200 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 200 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -SubscriptionLinkList - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = SubscriptionLinkList.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${assocStaSub} -@{response['body']['assocStaSubscription']} - -{'subscriptionType': 'AssocStaSubscription', 'callbackReference': 'http://callback/uri', 'apId': {'macId': 'macId01'}, '_links': {'self': {'href': '/wai/v1/subscriptions/1'}}} - -${passed} -Should Be Equal As Strings -${assocStaSub['_links']['self']['href']} -${HREF} -Runs the given keyword with given arguments and returns the status as a Boolean value. - -${assocStaSub['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -${passed} = True - - - -${passed} -Stops executing the enclosing for loop if the ``condition`` is true. -Exiting for loop altogether. - - - - - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.005634999999999999, - "status": 200, - "body": { - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - }, - "staDataRateSubscription": [], - "assocStaSubscription": [ - { - "subscriptionType": "AssocStaSubscription", - "callbackReference": "http://callback/uri", - "apId": { - "macId": "macId01" - }, - "_links": { - "self": { - "href": "/wai/v1/subscriptions/1" - } - } - } - ] - }, - "headers": { - "Content-Type": "application/json; charset=utf-8", - "Content-Length": "361", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.005634999999999999, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocSt... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.005634999999999999, 'status': 200, 'body': {'_links': {'self': {'href': '/wai/v1/subscriptions/1'}}, 'staDataRateSubscription': [], 'assocStaSubscription': [{'subscriptionType': 'AssocSt... - - - - - -200 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 200 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - - -SubscriptionLinkList - -${response['headers']['Content-Type']} -application/json -Fails if ``container`` does not contain ``item`` one or more times. - - - -${schema} -SEPARATOR= -${input} -.schema.json -Catenates the given items together and returns the resulted string. -${schema} = SubscriptionLinkList.schema.json - - - -${schema} -${response['body']} -Validates the sample JSON against the given schema. - - - -Json Schema Validation OK -Logs the given message with the given level. -Json Schema Validation OK - - - - - -${response['body']['_links']['self']['href']} -${HREF} -Fails if objects are unequal after converting them to strings. - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -${INVALID_SUB_FILTER} - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} -http -*Sends a GET request to the endpoint.* - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.005876999999999999, - "status": 400, - "body": "", - "headers": { - "Content-Type": "application/problem+json; charset=utf-8", - "Content-Length": "0", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.005876999999999999, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Con... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.005876999999999999, 'status': 400, 'body': '', 'headers': {'Content-Type': 'application/problem+json; charset=utf-8', 'Content-Length': '0', 'Date': 'Thu, 06 May 2021 12:55:53 GMT', 'Con... - - - - - -400 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 400 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with the requested list of subscription -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - - -${PIC_MEC_SYSTEM} == 1 -Fails if the given condition is not true. - - - -${PIC_SERVICES} == 1 -Fails if the given condition is not true. - - - -{"Content-Type":"application/json"} -settings -*Sets new request headers or updates the existing.* - - - -{"Authorization":"${TOKEN}"} -settings -*Sets new request headers or updates the existing.* - - - -${apiRoot}/${apiName}/${apiVersion}/subscriptions_INVALID_URI -http -*Sends a GET request to the endpoint.* -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - - -${output} -response -I/O -*Outputs JSON to terminal or a file.* - -{ - "seconds": 0.0049169999999999995, - "status": 404, - "body": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptions_INVALID_URI</pre>\n</body>\n</html>\n", - "headers": { - "Content-Security-Policy": "default-src 'none'", - "X-Content-Type-Options": "nosniff", - "Content-Type": "text/html; charset=utf-8", - "Content-Length": "171", - "Date": "Thu, 06 May 2021 12:55:53 GMT", - "Connection": "keep-alive", - "Keep-Alive": "timeout=5" - } -} -${output} = {'seconds': 0.0049169999999999995, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptio... - - - -${response} -${output} -Makes a variable available everywhere within the scope of the current suite. -${response} = {'seconds': 0.0049169999999999995, 'status': 404, 'body': '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot GET /wai/v1/subscriptio... - - - - - -404 - -${status} -${expected_status} -Converts the given item to an integer number. -${status} = 404 - - - -${response['status']} -${status} -Fails if the given objects are unequal. - - - -Status code validated -Logs the given message with the given level. -Status code validated - - - - -Check that the IUT responds with an error when a request with not existing parameters is sent -Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 -https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - - - - - - -All Tests - - - - -WaiSubscription - - - -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 -Response body content is not JSON. Content-Type is: text/html; charset=utf-8 - - diff --git a/MEC028/outputs/report-20210506-145611.html b/MEC028/outputs/report-20210506-145611.html deleted file mode 100644 index e75ee9b..0000000 --- a/MEC028/outputs/report-20210506-145611.html +++ /dev/null @@ -1,2458 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Opening Robot Framework report failed

-
    -
  • Verify that you have JavaScript enabled in your browser.
  • -
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • -
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • -
-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MEC028/outputs/report.html b/MEC028/outputs/report.html deleted file mode 100644 index 747624b..0000000 --- a/MEC028/outputs/report.html +++ /dev/null @@ -1,2458 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Opening Robot Framework report failed

-
    -
  • Verify that you have JavaScript enabled in your browser.
  • -
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 11 is required.
  • -
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • -
-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- GitLab From 76ef6941b83419766594bfc0e58b2da8aac42979 Mon Sep 17 00:00:00 2001 From: piscione Date: Fri, 7 May 2021 16:33:43 +0200 Subject: [PATCH 36/63] Minor fix. --- MEC028/WAI/SUB/WaiSubscription.robot | 70 ++++++++++++++-------------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/MEC028/WAI/SUB/WaiSubscription.robot b/MEC028/WAI/SUB/WaiSubscription.robot index 941eaf0..190d970 100644 --- a/MEC028/WAI/SUB/WaiSubscription.robot +++ b/MEC028/WAI/SUB/WaiSubscription.robot @@ -9,43 +9,7 @@ Library String Library OperatingSystem Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false -#POST *** Test Cases *** -TP_MEC_MEC028_SRV_WAI_007_OK - [Documentation] - ... Check that the IUT responds with a Notification Subscription - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Send a request for creating a subscription AssocStaSubscription.json - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is AssocStaSubscription - Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} - Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${HREF} - Should Be Equal As Strings ${response['headers']['Location']} ${HREF} - -TP_MEC_MEC028_SRV_WAI_007_BR - [Documentation] - ... Check that the IUT responds with an error when an invalid Subscription request is sent - ... ETSI GS MEC 028 2.1.1, clause 7.5.3.4 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Send a request for creating a subscription AssocStaSubscription_BR.json - Check HTTP Response Status Code Is 400 - -TP_MEC_MEC028_SRV_WAI_007_NF - [Documentation] - ... Check that the IUT responds with an error when a request with not existing parameters is sent - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 - Should Be True ${PIC_MEC_SYSTEM} == 1 - Should Be True ${PIC_SERVICES} == 1 - Send a request for creating a subscription using wrong endpoint AssocStaSubscription.json - Check HTTP Response Status Code Is 404 - - -#GET TP_MEC_MEC028_SRV_WAI_005_OK [Documentation] ... Check that the IUT responds with the requested list of subscription @@ -93,6 +57,40 @@ TP_MEC_MEC028_SRV_WAI_006_NF ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription Retrieve the subscription information using wrong endpoint Check HTTP Response Status Code Is 404 + +TP_MEC_MEC028_SRV_WAI_007_OK + [Documentation] + ... Check that the IUT responds with a Notification Subscription + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription AssocStaSubscription.json + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is AssocStaSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${HREF} + Should Be Equal As Strings ${response['headers']['Location']} ${HREF} + +TP_MEC_MEC028_SRV_WAI_007_BR + [Documentation] + ... Check that the IUT responds with an error when an invalid Subscription request is sent + ... ETSI GS MEC 028 2.1.1, clause 7.5.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription AssocStaSubscription_BR.json + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC028_SRV_WAI_007_NF + [Documentation] + ... Check that the IUT responds with an error when a request with not existing parameters is sent + ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Send a request for creating a subscription using wrong endpoint AssocStaSubscription.json + Check HTTP Response Status Code Is 404 + *** Keywords *** Send a request for creating a subscription -- GitLab From 3eaea3841df37e0f7b0df3ce285188eee8fa61a4 Mon Sep 17 00:00:00 2001 From: piscione Date: Wed, 12 May 2021 09:32:53 +0200 Subject: [PATCH 37/63] First draft of MEC015 robot tests based on available MEC015 TPs. --- .../SRV/MTS/MultiAccessTrafficSteering.robot | 167 +++++++ {SRV/BWA => MEC015/SRV/MTS}/README.md | 0 MEC015/SRV/MTS/environment/variables.txt | 16 + .../MtsSessionInfoApplicationSpecific.json | 21 + .../jsons/MtsSessionInfoSessionSpecific.json | 23 + .../MTS/schemas/MtsCapabilityInfo.schema.json | 86 ++++ .../MTS/schemas/MtsSessionInfo.schema.json | 182 ++++++++ MEC015/SRV/TM/PlatBandwidthManager.robot | 407 ++++++++++++++++++ .../SRV/TM/PlatBandwidthManager_OLD.robot | 0 .../BwInfo.json => MEC015/SRV/TM/README.md | 0 .../SRV/TM}/environment/variables.txt | 15 +- .../TM/jsons/BwInfoApplicationSpecific.json | 6 + MEC015/SRV/TM/jsons/BwInfoDeltas.json | 6 + MEC015/SRV/TM/jsons/BwInfoDeltas_BR.json | 6 + .../SRV/TM/jsons/BwInfoSessionSpecific.json | 6 + MEC015/SRV/TM/jsons/BwInfoUpdate.json | 6 + MEC015/SRV/TM/jsons/BwInfoUpdate_BR.json | 6 + MEC015/SRV/TM/jsons/BwInfo_BR.json | 6 + MEC015/SRV/TM/jsons/BwInfo_BR2.json | 6 + MEC015/SRV/TM/jsons/BwInfo_BR3.json | 7 + .../BandwidthManagementAPI.schema.json | 0 MEC015/SRV/TM/schemas/BwInfo.schema.json | 127 ++++++ SRV/BWA/jsons/BwInfoError.json | 0 SRV/BWA/jsons/BwInfoUpdate.json | 0 SRV/BWA/jsons/BwInfoUpdateDelta.json | 0 SRV/BWA/jsons/BwInfoUpdateDeltaError.json | 0 SRV/BWA/schemas/BwInfo.schema.json | 0 27 files changed, 1095 insertions(+), 4 deletions(-) create mode 100644 MEC015/SRV/MTS/MultiAccessTrafficSteering.robot rename {SRV/BWA => MEC015/SRV/MTS}/README.md (100%) create mode 100644 MEC015/SRV/MTS/environment/variables.txt create mode 100644 MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json create mode 100644 MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json create mode 100644 MEC015/SRV/MTS/schemas/MtsCapabilityInfo.schema.json create mode 100644 MEC015/SRV/MTS/schemas/MtsSessionInfo.schema.json create mode 100644 MEC015/SRV/TM/PlatBandwidthManager.robot rename SRV/BWA/PlatBandwidthManager.robot => MEC015/SRV/TM/PlatBandwidthManager_OLD.robot (100%) rename SRV/BWA/jsons/BwInfo.json => MEC015/SRV/TM/README.md (100%) rename {SRV/BWA => MEC015/SRV/TM}/environment/variables.txt (70%) create mode 100644 MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json create mode 100644 MEC015/SRV/TM/jsons/BwInfoDeltas.json create mode 100644 MEC015/SRV/TM/jsons/BwInfoDeltas_BR.json create mode 100644 MEC015/SRV/TM/jsons/BwInfoSessionSpecific.json create mode 100644 MEC015/SRV/TM/jsons/BwInfoUpdate.json create mode 100644 MEC015/SRV/TM/jsons/BwInfoUpdate_BR.json create mode 100644 MEC015/SRV/TM/jsons/BwInfo_BR.json create mode 100644 MEC015/SRV/TM/jsons/BwInfo_BR2.json create mode 100644 MEC015/SRV/TM/jsons/BwInfo_BR3.json rename {SRV/BWA => MEC015/SRV/TM}/schemas/BandwidthManagementAPI.schema.json (100%) create mode 100644 MEC015/SRV/TM/schemas/BwInfo.schema.json delete mode 100644 SRV/BWA/jsons/BwInfoError.json delete mode 100644 SRV/BWA/jsons/BwInfoUpdate.json delete mode 100644 SRV/BWA/jsons/BwInfoUpdateDelta.json delete mode 100644 SRV/BWA/jsons/BwInfoUpdateDeltaError.json delete mode 100644 SRV/BWA/schemas/BwInfo.schema.json diff --git a/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot b/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot new file mode 100644 index 0000000..105a706 --- /dev/null +++ b/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot @@ -0,0 +1,167 @@ +''[Documentation] robot --outputdir ../../../outputs ./MultiAccessTrafficSteering.robot +... Test Suite to validate Multi-access traffic steering API (MTS) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem + + +##GET on ${apiRoot}/${apiName}/${apiVersion}/mts_info +*** Test Cases *** +TP_MEC_MEC015_SRV_MTS_001_OK + [Documentation] + ... Check that the IUT responds with the Multi-access Traffic Steering information when queried by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.3.3.1 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Retrieve MTS capability information + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is MtsCapabilityInfo + + + +##GET on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions +TP_MEC_MEC015_SRV_MTS_002_OK + [Documentation] + ... Check that the IUT responds with the list of configured Multi-access Traffic Steering when queried by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.1 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Retrieve MTS session list information + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is MtsSessionInfo + FOR ${mstSessionInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${mstSessionInfo['appInsId']} ${APP_INSTANCE_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + + +TP_MEC_MEC015_SRV_MTS_003_OK + [Documentation] + ... Check that the IUT responds with a configured Multi-access Traffic Steering when queried by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.1 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Retrieve MTS session list information using filter ${CORRECT_FILTER} ${APP_INSTANCE_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is MtsSessionInfo + FOR ${mstSessionInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${mstSessionInfo['appInsId']} ${APP_INSTANCE_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + + + +TP_MEC_MEC015_SRV_MTS_003_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.1 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Retrieve MTS session list information using filter ${BAD_FILTER} ${APP_INSTANCE_ID} + Check HTTP Response Status Code Is 400 + + +TP_MEC_MEC015_SRV_MTS_003_NF + [Documentation] + ... Check that the IUT responds with an error when a request with an unknown resource URI is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.1 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Retrieve MTS session list information using filter ${CORRECT_FILTER} ${NOT_EXISTING_APP_INSTANCE_ID} + Check HTTP Response Status Code Is 404 + + +##POST on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions +TP_MEC_MEC015_SRV_MTS_004_OK_01 + [Documentation] + ... Check that the IUT responds with a registration and initialisation approval for the requested MTS session requirements sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.2 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Register MTS session MtsSessionInfoApplicationSpecific.json + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is MtsSessionInfo + Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} + +TP_MEC_MEC015_SRV_MTS_004_OK_02 + [Documentation] + ... Check that the IUT responds with a registration and initialisation approval for the requested MTS session requirements sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.2 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Register MTS session MtsSessionInfoSessionSpecific.json + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is MtsSessionInfo + Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} + +TP_MEC_MEC015_SRV_MTS_004_NF + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.2 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Register MTS session wrong URI MtsSessionInfoSessionSpecific.json + Check HTTP Response Status Code Is 404 + +*** Keywords *** +Retrieve MTS capability information + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/${apiName}/${apiVersion}/mts_info + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve MTS session list information + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/${apiName}/${apiVersion}/mts_session + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Retrieve MTS session list information using filter + [Arguments] ${filter} ${value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/${apiName}/${apiVersion}/mts_session?${filter}=${value} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Register MTS session + [Arguments] ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + POST ${apiRoot}/${apiName}/${apiVersion}/mts_session ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Register MTS session wrong URI + [Arguments] ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + #Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + POST ${apiRoot}/${apiName}/v0/mts_session ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SRV/BWA/README.md b/MEC015/SRV/MTS/README.md similarity index 100% rename from SRV/BWA/README.md rename to MEC015/SRV/MTS/README.md diff --git a/MEC015/SRV/MTS/environment/variables.txt b/MEC015/SRV/MTS/environment/variables.txt new file mode 100644 index 0000000..8031473 --- /dev/null +++ b/MEC015/SRV/MTS/environment/variables.txt @@ -0,0 +1,16 @@ +*** Variables *** +# Generic variables +${SCHEMA} http +${HOST} 127.0.0.1 +${PORT} 8082 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} mts +${apiVersion} v1 + +# Specific variables +${APP_INSTANCE_ID} appInstId01 +${NOT_EXISTING_APP_INSTANCE_ID} NOT_EXISTING_APP_INS_ID +${CORRECT_FILTER} app_instance_id +${BAD_FILTER} app_id \ No newline at end of file diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json new file mode 100644 index 0000000..8723de3 --- /dev/null +++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json @@ -0,0 +1,21 @@ +{ + "appInsId": "myAppInstId", + "requestType": 0, + "qosD": { + "minTpt": 10 + }, + "mtsMode": 0, + "trafficDirection": "00", + "flowFilter": [{ + "dstPort": [8081], + "protocol": 41, + "sourcePort": [8081], + "dstIp": "10.10.0.10", + "dscp": 40, + "sourceIp": "10.10.0.30" + } + ], + "qosD":{ + "minTpt":10 + } +} \ No newline at end of file diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json new file mode 100644 index 0000000..d2429bc --- /dev/null +++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json @@ -0,0 +1,23 @@ +{ + "appInsId": "myAppInstId", + "requestType": 1, + "mtsMode":4, + "trafficDirection":"00", + "qosD": { + "minTpt": 10 + }, + "mtsMode": 0, + "trafficDirection": "00", + "flowFilter": [{ + "dstPort": [8081], + "protocol": 41, + "sourcePort": [8081], + "dstIp": "10.10.0.10", + "dscp": 40, + "sourceIp": "10.10.0.30" + } + ], + "qosD":{ + "minTpt":10 + } +} \ No newline at end of file diff --git a/MEC015/SRV/MTS/schemas/MtsCapabilityInfo.schema.json b/MEC015/SRV/MTS/schemas/MtsCapabilityInfo.schema.json new file mode 100644 index 0000000..9a9c268 --- /dev/null +++ b/MEC015/SRV/MTS/schemas/MtsCapabilityInfo.schema.json @@ -0,0 +1,86 @@ +{ + "properties": { + "mtsAccessInfo": { + "description": "The information on access network connection as defined below", + "items": { + "type": "object", + "properties": { + "accessId": { + "format": "uint32", + "type": "integer", + "description": "Unique identifier for the access network connection", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "accessType": { + "format": "uint32", + "type": "integer", + "description": "Numeric value (0-255) corresponding to specific type of access network as following: 0 = Unknown 1 = Any IEEE802.11-based WLAN technology 2 = Any 3GPP-based Cellular technology 3 = Any Fixed Access 11 = IEEE802.11 a/b/g WLAN 12 = IEEE 802.11 a/b/g/n WLAN 13 = IEEE 802.11 a/b/g/n/ac WLAN 14 = IEEE 802.11 a/b/g/n/ac/ax WLAN (Wi-Fi 6) 15 = IEEE 802.11 b/g/n WLAN 31 = 3GPP GERAN/UTRA (2G/3G) 32 = 3GPP E-UTRA (4G/LTE) 33 = 3GPP NR (5G)", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "metered": { + "format": "uint32", + "type": "integer", + "description": "Numeric value (0-255) corresponding to the following: 0: the connection is not metered (see note) 1: the connection is metered 2: unknown ", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + } + }, + "required": [ + "accessId", + "accessType", + "metered" + ], + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "mtsMode": { + "description": "Numeric value corresponding to a specific MTS operation supported by the TMS 0 = low cost, i.e. using the unmetered access network connection whenever it is available 1 = low latency, i.e. using the access network connection with lower latency 2 = high throughput, i.e. using the access network connection with higher throughput, or/and multiple access network connection simultaneously if supported 3 = redundancy, i.e. sending duplicated (redundancy) packets over multiple access network connections for highreliability and low-latency applications 4 = QoS, i.e. performing MTS based on the specific QoS requirements from the app", + "items": { + "type": "integer", + "format": "uint32" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Uint32" + }, + "timeStamp": { + "description": "Time stamp to indicate when the corresponding information elements are sent", + "properties": { + "nanoSeconds": { + "format": "uint32", + "type": "integer", + "description": "Time in nanoseconds in Unix-time since January 1, 1970, 00:00:00 UTC", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "Time in seconds in Unix-time since January 1, 1970, 00:00:00 UTC", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "mtsAccessInfo", + "mtsMode" + ], + "type": "object", + "x-etsi-notes": "NOTE:\tA metered connection is a network connection that has a maximum data usage in a specific period, e.g. per hour/day/week/month. The user may get billed extra charges if they go over the allotted amount.", + "x-etsi-ref": "7.2.4" +} \ No newline at end of file diff --git a/MEC015/SRV/MTS/schemas/MtsSessionInfo.schema.json b/MEC015/SRV/MTS/schemas/MtsSessionInfo.schema.json new file mode 100644 index 0000000..6bb365b --- /dev/null +++ b/MEC015/SRV/MTS/schemas/MtsSessionInfo.schema.json @@ -0,0 +1,182 @@ +{ + "items":{ + "properties": { + "appInsId": { + "description": "Application instance identifier", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "flowFilter": { + "description": "Traffic flow filtering criteria, applicable only if when requestType is set as FLOW_SPECIFIC_MTS_SESSION. Any filtering criteria shall define a single session only. In case multiple sessions match flowFilter the request shall be rejected. If the flowFilter field is included, at least one of its subfields shall be included. Any flowFilter subfield that is not included shall be ignored in traffic flow filtering", + "items": { + "type": "object", + "properties": { + "dscp": { + "format": "uint32", + "type": "integer", + "description": "DSCP in the IPv4 header or Traffic Class in the IPv6 header", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "dstIp": { + "description": "Destination address identity of session (including range)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "dstPort": { + "description": "Destination port identity of session", + "items": { + "type": "integer", + "format": "uint32" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Uint32" + }, + "flowlabel": { + "format": "uint32", + "type": "integer", + "description": "Flow Label in the IPv6 header, applicable only if the flow is IPv6", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "protocol": { + "format": "uint32", + "type": "integer", + "description": "Protocol number", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "sourceIp": { + "description": "Source address identity of session (including range)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "sourcePort": { + "description": "Source port identity of session", + "items": { + "type": "integer", + "format": "uint32" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Uint32" + } + } + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "mtsMode": { + "format": "uint32", + "type": "integer", + "description": "Numeric value (0 - 255) corresponding to a specific MTS mode of the MTS session: 0 = low cost, i.e. using the unmetered access network connection whenever it is available 1 = low latency, i.e. using the access network connection with lower latency 2 = high throughput, i.e. using the access network connection with higher throughput, or multiple access network connection simultaneously 3 = redundancy, i.e. sending duplicated (redundancy) packets over multiple access network connections for high-reliability and low-latency applications 4 = QoS, i.e. performing MTS based on the QoS requirement (qosD)", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "qosD": { + "description": "QoS requirement description of the MTS session, applicable only if mtsMode = 4 (QoS). If the qosD field is included, at least one of its subfields shall be included. Any qosD subfield that is not included shall be ignored in Multi-access Traffic Steering (MTS)", + "properties": { + "maxJitter": { + "description": "tolerable jitter in [10 nanoseconds]", + "type": "integer", + "format": "uint32", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "maxLatency": { + "description": "tolerable (one-way) delay in [10 nanoseconds]", + "type": "integer", + "format": "uint32", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "maxLoss": { + "description": "tolerable packet loss rate in [1/10^x]", + "type": "integer", + "format": "uint32", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "minTpt": { + "description": "minimal throughput in [kbps]", + "type": "integer", + "format": "uint32", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + }, + "priority": { + "description": "numeric value (0 - 255) corresponding to the traffic priority 0: low; 1: medium; 2: high; 3: critical", + "type": "integer", + "format": "uint32", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure" + }, + "requestType": { + "description": "Numeric value (0 - 255) corresponding to specific type of consumer as following: 0 = APPLICATION_SPECIFIC_MTS_SESSION 1 = FLOW_SPECIFIC_MTS_SESSION", + "enum": [ + 0, + 1 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "timeStamp": { + "description": "Time stamp to indicate when the corresponding information elements are sent ", + "properties": { + "nanoSeconds": { + "format": "uint32", + "type": "integer", + "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "format": "uint32", + "type": "integer", + "description": "The seconds part of the Time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "trafficDirection": { + "description": "The direction of the requested MTS session: 00 = Downlink (towards the UE) 01 = Uplink (towards the application/session) 10 = Symmetrical (see note) ", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "appInsId", + "requestType", + "flowFilter", + "qosD", + "mtsMode", + "trafficDirection" + ], + "type": "object", + "x-etsi-notes": "NOTE:\tFor the downlink direction of a symmetrical flow, \"sourceIp\" and \"sourcePort\" in the \"flowFilter\" structure are used for source address and port, respectively; \"dstIp\" and \"dstPort\" are used for destination address and port, respectively. For the uplink direction of a symmetrical flow, \"sourceIp\" and \"sourcePort\" are used for destination address and port, respectively; \"dstIp\" and \"dstPort\" are used for source address and port, respectively.", + "x-etsi-ref": "7.2.5" + } +} \ No newline at end of file diff --git a/MEC015/SRV/TM/PlatBandwidthManager.robot b/MEC015/SRV/TM/PlatBandwidthManager.robot new file mode 100644 index 0000000..c62e406 --- /dev/null +++ b/MEC015/SRV/TM/PlatBandwidthManager.robot @@ -0,0 +1,407 @@ +''[Documentation] robot --outputdir ../../../outputs ./PlatBandwidthManager.robot +... Test Suite to validate Bandwidth Management API (BWA) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem + + +##GET on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations +*** Test Cases *** +TP_MEC_MEC015_SRV_TM_001_OK + [Documentation] + ... Check that the IUT responds with the list of configured bandwidth allocations when queried by a MEC Application + ... Reference ETSI GS MEC 015 V2.1.1, clause 8.4.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Retrieve the list of configured bandwidth allocations + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is BwInfo + FOR ${bwInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${bwInfo['appInsId']} ${APP_INSTANCE_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + + +TP_MEC_MEC015_SRV_TM_002_OK + [Documentation] + ... Check that the IUT responds with a configured bandwidth allocation when queried by a MEC Application + ... Reference ETSI GS MEC 015 V2.1.1, clause 8.4.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Retrieve the list of configured bandwidth using filter ${CORRECT_FILTER} ${APP_INSTANCE_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is BwInfo + FOR ${bwInfo} IN @{response['body']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${bwInfo['appInsId']} ${APP_INSTANCE_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + +TP_MEC_MEC015_SRV_TM_002_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... Reference ETSI GS MEC 015 V2.1.1, clause 8.4.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Retrieve the list of configured bandwidth using filter ${BAD_FILTER} ${APP_INSTANCE_ID} + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC015_SRV_TM_002_NF + [Documentation] + ... Check that the IUT responds with an error when a request with an unknown resource URI is sent by a MEC Application + ... Reference ETSI GS MEC 015 V2.1.1, clause 8.4.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Retrieve the list of configured bandwidth using filter ${CORRECT_FILTER} ${NON_EXISTENT_APP_INSTANCE_ID} + Check HTTP Response Status Code Is 404 + + + +##POST on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations +TP_MEC_MEC015_SRV_TM_003_OK_01 + [Documentation] + ... Check that the IUT responds with a registration and initialisation approval for the requested bandwidth requirements sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.4.3.4 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Register Bandwidth Management Service BwInfoApplicationSpecific ${REQUEST_TYPE_APPLICATION} + +TP_MEC_MEC015_SRV_TM_003_OK_02 + [Documentation] + ... Check that the IUT responds with a registration and initialisation approval for the requested bandwidth requirements sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.4.3.4 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Register Bandwidth Management Service BwInfoSessionSpecific ${REQUEST_TYPE_SESSION} + + +TP_MEC_MEC015_SRV_TM_003_BR_01 + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.4.3.4 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Register Bandwidth Management Service with incorrect parameters BwInfo_BR ${REQUEST_TYPE_APPLICATION} + +TP_MEC_MEC015_SRV_TM_003_BR_02 + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.4.3.4 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Register Bandwidth Management Service with incorrect parameters BwInfo_BR2 ${REQUEST_TYPE_APPLICATION} + +TP_MEC_MEC015_SRV_TM_003_BR_03 + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.4.3.4 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Register Bandwidth Management Service with incorrect parameters BwInfo_BR3 ${REQUEST_TYPE_APPLICATION} + + + + +##GET on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/{ALLOCATION_ID} +TP_MEC_MEC015_SRV_TM_004_OK + [Documentation] + ... Check that the IUT responds with the configured bandwidth allocation when queried by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Get a bandwidth allocation ${ALLOCATION_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is BwInfo + Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} + + +TP_MEC_MEC015_SRV_TM_004_NF + [Documentation] + ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Get a bandwidth allocation ${NON_EXISTENT_ALLOCATION_ID} + Check HTTP Response Status Code Is 404 + + +##PUT on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/{ALLOCATION_ID} +TP_MEC_MEC015_SRV_TM_005_OK + [Documentation] + ... Check that the IUT updates the requested bandwidth requirements when commanded by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.2 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Update a bandwidth allocation ${ALLOCATION_ID} BwInfoUpdate + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is BwInfo + Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} + Should Be Equal As Strings ${response['body']['fixedAllocation']} ${FIXED_ALLOCATION} + Should Be Equal As Strings ${response['body']['allocationDirection']} ${ALLOCATION_DIRECTION} + + +TP_MEC_MEC015_SRV_TM_005_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.2 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Update a bandwidth allocation ${ALLOCATION_ID} BwInfoUpdate_BR + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC015_SRV_TM_005_NF + [Documentation] + ... Check that the IUT responds with an error when a request sent by a MEC Application doesn't comply with a required condition + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.2 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Update a bandwidth allocation ${NON_EXISTENT_ALLOCATION_ID} BwInfoUpdate + Check HTTP Response Status Code Is 404 + + + +TP_MEC_MEC015_SRV_TM_005_PF + [Documentation] + ... Check that the IUT updates the requested bandwidth requirements when commanded by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.2 + ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + Update a bandwidth allocation with invalid ETAG ${ALLOCATION_ID} BwInfoUpdate + Check HTTP Response Status Code Is 412 + +##PATCH on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/{ALLOCATION_ID} +TP_MEC_MEC015_SRV_TM_006_OK + [Documentation] + ... Check that the IUT when provided with just the changes (deltas) updates the requested bandwidth requirements when commanded by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.3 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + # Preamble + Register Bandwidth Management Service BwInfoApplicationSpecific ${REQUEST_TYPE_APPLICATION} + # Test body + Request a deltas changes ${ALLOCATION_ID} BwInfoDeltas + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is BwInfo + Should be Equal ${response['body']['appInsId']} ${APP_INSTANCE_ID} + # Postamble + #Unregister Bandwidth Management Service ${ALLOCATION_ID} + +TP_MEC_MEC015_SRV_TM_006_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.3 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + # Preamble + Register Bandwidth Management Service BwInfoApplicationSpecific ${REQUEST_TYPE_APPLICATION} + # Test body + Request a deltas changes ${ALLOCATION_ID} BwInfoDeltas_BR + Check HTTP Response Status Code Is 400 + # Postamble + #Unregister Bandwidth Management Service ${ALLOCATION_ID} + +TP_MEC_MEC015_SRV_TM_006_NF + [Documentation] + ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.3 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Request a deltas changes ${NON_EXISTENT_ALLOCATION_ID} BwInfoDeltas_BR + Check HTTP Response Status Code Is 400 + # Postamble + #Unregister Bandwidth Management Service ${ALLOCATION_ID} + + + +TP_MEC_MEC015_SRV_TM_006_PF + [Documentation] + ... Check that the IUT responds with an error when a request sent by a MEC Application doesn't comply with a required condition + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.3 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + # Preamble + Register Bandwidth Management Service BwInfoApplicationSpecific ${REQUEST_TYPE_APPLICATION} + # Test body + Request a deltas changes with invalid ETAG ${ALLOCATION_ID} BwInfoDeltas + Check HTTP Response Status Code Is 412 + # Postamble + #Unregister Bandwidth Management Service ${ALLOCATION_ID} + +##DELETE on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/{ALLOCATION_ID} +TP_MEC_MEC015_SRV_TM_007_OK + [Documentation] + ... Check that the IUT unregisters from the Bandwidth Management Service when commanded by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.5 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Unregister Bandwidth Management Service ${ALLOCATION_ID} + Check HTTP Response Status Code Is 204 + +TP_MEC_MEC015_SRV_TM_007_NF + [Documentation] + ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.5 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Unregister Bandwidth Management Service ${NON_EXISTENT_ALLOCATION_ID} + Check HTTP Response Status Code Is 404 + + + +*** Keywords *** +Retrieve the list of configured bandwidth allocations + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + GET ${apiRoot}/${apiName}/${apiVersion}/bw_allocations + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve the list of configured bandwidth using filter + [Arguments] ${filter} ${value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/${apiName}/${apiVersion}/bw_allocations?${filter}=${value} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve a configured bandwidth allocations + [Arguments] ${app_instance_id} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${app_instance_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Registration for bandwidth services + [Arguments] ${app_instance_id} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${app_instance_id} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get a bandwidth allocation + [Arguments] ${allocation_id} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Update a bandwidth allocation + [Arguments] ${allocation_id} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"If-Match":"${ETAG_VALUE}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Put ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Update a bandwidth allocation with invalid ETAG + [Arguments] ${allocation_id} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"If-Match":"${INVALID_ETAG}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Put ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Request a deltas changes + [Arguments] ${allocation_id} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"If-Match":"${ETAG}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Patch ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Request a deltas changes with invalid ETAG + [Arguments] ${allocation_id} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"If-Match":"${INVALID_ETAG}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Patch ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Register Bandwidth Management Service with incorrect parameters + [Arguments] ${content} ${request_type} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/bw_allocations ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 400 + +Register Bandwidth Management Service + [Arguments] ${content} ${request_type} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/bw_allocations ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is BwInfo + Should Not Be Empty ${response['headers']['Location']} + Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} + Should Be Equal As Strings ${response['body']['requestType']} ${request_type} + Should Be Equal As Strings ${response['body']['fixedAllocation']} ${FIXED_ALLOCATION} + Should Be Equal As Strings ${response['body']['allocationDirection']} ${ALLOCATION_DIRECTION} + + # Extract ETAG_VALUE + Set Suite Variable ${ETAG_VALUE} ${response['headers']['ETag']} + Should Not Be Empty ${ETAG_VALUE} + + + +Unregister Bandwidth Management Service + [Arguments] ${value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${value} + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/SRV/BWA/PlatBandwidthManager.robot b/MEC015/SRV/TM/PlatBandwidthManager_OLD.robot similarity index 100% rename from SRV/BWA/PlatBandwidthManager.robot rename to MEC015/SRV/TM/PlatBandwidthManager_OLD.robot diff --git a/SRV/BWA/jsons/BwInfo.json b/MEC015/SRV/TM/README.md similarity index 100% rename from SRV/BWA/jsons/BwInfo.json rename to MEC015/SRV/TM/README.md diff --git a/SRV/BWA/environment/variables.txt b/MEC015/SRV/TM/environment/variables.txt similarity index 70% rename from SRV/BWA/environment/variables.txt rename to MEC015/SRV/TM/environment/variables.txt index a7cd80a..e4bea3d 100644 --- a/SRV/BWA/environment/variables.txt +++ b/MEC015/SRV/TM/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 -${PORT} 8081 +${HOST} 127.0.0.1 +${PORT} 8082 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} @@ -14,14 +14,21 @@ ${apiVersion} v1 - +${CORRECT_FILTER} app_instance_id +${BAD_FILTER} app_id ${APP_INSTANCE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f ${NON_EXISTENT_APP_INSTANCE_ID} NON_EXISTENT_INSTANCE_ID + +${REQUEST_TYPE_APPLICATION} 0 +${REQUEST_TYPE_SESSION} 1 +${FIXED_ALLOCATION} 32 +${ALLOCATION_DIRECTION} 00 + ${APP_SRVSUB_NOTIF_CALLBACK_URI} http://127.0.0.1/subscribe ${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 ${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID ${ALLOCATION_ID} 59ab1593-d330-4087-85ec-4e484092f306 ${NON_EXISTENT_ALLOCATION_ID} NON_EXISTENT_ALLOCATION_ID -${INVALID_ETAG} +${INVALID_ETAG} INVALID_ETAG ${ETAG_VALUE} ${ETAG} \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json b/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json new file mode 100644 index 0000000..511b36f --- /dev/null +++ b/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json @@ -0,0 +1,6 @@ +{ +"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", + "requestType": 0, + "fixedAllocation": "32", + "allocationDirection": "00" +} \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfoDeltas.json b/MEC015/SRV/TM/jsons/BwInfoDeltas.json new file mode 100644 index 0000000..6560b8b --- /dev/null +++ b/MEC015/SRV/TM/jsons/BwInfoDeltas.json @@ -0,0 +1,6 @@ +{ +"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", + "requestType": "0", + "fixedAllocation": "32", + "allocationDirection": "01" +} \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfoDeltas_BR.json b/MEC015/SRV/TM/jsons/BwInfoDeltas_BR.json new file mode 100644 index 0000000..fca0e97 --- /dev/null +++ b/MEC015/SRV/TM/jsons/BwInfoDeltas_BR.json @@ -0,0 +1,6 @@ +{ +"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", + "requestType": "INVALID_VALUE", + "fixedAllocation": "32", + "allocationDirection": "01" +} \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfoSessionSpecific.json b/MEC015/SRV/TM/jsons/BwInfoSessionSpecific.json new file mode 100644 index 0000000..3f80a53 --- /dev/null +++ b/MEC015/SRV/TM/jsons/BwInfoSessionSpecific.json @@ -0,0 +1,6 @@ +{ +"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", + "requestType": 1, + "fixedAllocation": "32", + "allocationDirection": "00" +} \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfoUpdate.json b/MEC015/SRV/TM/jsons/BwInfoUpdate.json new file mode 100644 index 0000000..28d4b0a --- /dev/null +++ b/MEC015/SRV/TM/jsons/BwInfoUpdate.json @@ -0,0 +1,6 @@ +{ +"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", + "requestType": 0, + "fixedAllocation": "32", + "allocationDirection": "01" +} \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfoUpdate_BR.json b/MEC015/SRV/TM/jsons/BwInfoUpdate_BR.json new file mode 100644 index 0000000..2ccb051 --- /dev/null +++ b/MEC015/SRV/TM/jsons/BwInfoUpdate_BR.json @@ -0,0 +1,6 @@ +{ +"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", + "requestType": 0, + "fixedAllocation": "64", + "allocationDirection": "INVALID_VALUE" +} \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfo_BR.json b/MEC015/SRV/TM/jsons/BwInfo_BR.json new file mode 100644 index 0000000..b783529 --- /dev/null +++ b/MEC015/SRV/TM/jsons/BwInfo_BR.json @@ -0,0 +1,6 @@ +{ +"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", + "requestType": 0, + "fixedAllocation": "INVALID_VALUE", + "allocationDirection": "00" +} \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfo_BR2.json b/MEC015/SRV/TM/jsons/BwInfo_BR2.json new file mode 100644 index 0000000..470f466 --- /dev/null +++ b/MEC015/SRV/TM/jsons/BwInfo_BR2.json @@ -0,0 +1,6 @@ +{ +"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", + "requestType": 0, + "fixedAllocation": "-30", + "allocationDirection": "00" +} \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfo_BR3.json b/MEC015/SRV/TM/jsons/BwInfo_BR3.json new file mode 100644 index 0000000..9ee9c00 --- /dev/null +++ b/MEC015/SRV/TM/jsons/BwInfo_BR3.json @@ -0,0 +1,7 @@ +{ +"appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", + "requestType": 1, + "sessionFilter":"", + "fixedAllocation": "10", + "allocationDirection": "00" +} \ No newline at end of file diff --git a/SRV/BWA/schemas/BandwidthManagementAPI.schema.json b/MEC015/SRV/TM/schemas/BandwidthManagementAPI.schema.json similarity index 100% rename from SRV/BWA/schemas/BandwidthManagementAPI.schema.json rename to MEC015/SRV/TM/schemas/BandwidthManagementAPI.schema.json diff --git a/MEC015/SRV/TM/schemas/BwInfo.schema.json b/MEC015/SRV/TM/schemas/BwInfo.schema.json new file mode 100644 index 0000000..66ca806 --- /dev/null +++ b/MEC015/SRV/TM/schemas/BwInfo.schema.json @@ -0,0 +1,127 @@ +{ + "items": { + "properties": { + "allocationDirection": { + "description": "The direction of the requested BW allocation: 00 = Downlink (towards the UE) 01 = Uplink (towards the application/session) 10 = Symmetrical", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appInsId": { + "description": "Application instance identifier", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "fixedAllocation": { + "description": "Size of requested fixed BW allocation in [bps]", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "fixedBWPriority": { + "description": "Indicates the allocation priority when dealing with several applications or sessions in parallel. Values are not defined in the present document", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Enum" + }, + "requestType": { + "description": "Numeric value (0 - 255) corresponding to specific type of consumer as following: 0 = APPLICATION_SPECIFIC_BW_ALLOCATION 1 = SESSION_SPECIFIC_BW_ALLOCATION", + "type": "integer", + "enum": [ + 0, + 1 + ], + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "sessionFilter": { + "description": "Session filtering criteria, applicable when requestType is set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall define a single session only. In case multiple sessions match sessionFilter the request shall be rejected", + "items": { + "type": "object", + "properties": { + "dstAddress": { + "description": "Destination address identity of session (including range)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "dstPort": { + "description": "Destination port identity of session", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "protocol": { + "description": "Protocol number", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "sourceIp": { + "description": "Source address identity of session (including range)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "sourcePort": { + "description": "Source port identity of session", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + } + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "timeStamp": { + "description": "Time stamp to indicate when the corresponding information elements are sent", + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "format": "uint32", + "type": "integer", + "description": "The seconds part of the Time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "appInsId", + "requestType", + "fixedAllocation", + "allocationDirection" + ], + "type": "object", + "x-etsi-ref": "7.2.2" +} +} \ No newline at end of file diff --git a/SRV/BWA/jsons/BwInfoError.json b/SRV/BWA/jsons/BwInfoError.json deleted file mode 100644 index e69de29..0000000 diff --git a/SRV/BWA/jsons/BwInfoUpdate.json b/SRV/BWA/jsons/BwInfoUpdate.json deleted file mode 100644 index e69de29..0000000 diff --git a/SRV/BWA/jsons/BwInfoUpdateDelta.json b/SRV/BWA/jsons/BwInfoUpdateDelta.json deleted file mode 100644 index e69de29..0000000 diff --git a/SRV/BWA/jsons/BwInfoUpdateDeltaError.json b/SRV/BWA/jsons/BwInfoUpdateDeltaError.json deleted file mode 100644 index e69de29..0000000 diff --git a/SRV/BWA/schemas/BwInfo.schema.json b/SRV/BWA/schemas/BwInfo.schema.json deleted file mode 100644 index e69de29..0000000 -- GitLab From 523d9d5feb47dc2c481852054cdc6a4784fd4bfb Mon Sep 17 00:00:00 2001 From: piscione Date: Fri, 14 May 2021 10:39:06 +0200 Subject: [PATCH 38/63] Added robot tests for MEC030. --- MEC030/VIS/README.md | 0 MEC030/VIS/V2XInformationService.robot | 768 ++++++++++++++++++ MEC030/VIS/environment/variables.txt | 40 + MEC030/VIS/jsons/PredictedQoS.json | 41 + MEC030/VIS/jsons/PredictedQoS_BR.json | 41 + MEC030/VIS/jsons/PredictedQoS_NF.json | 41 + MEC030/VIS/jsons/ProvChgPc5Subscription.json | 22 + .../jsons/ProvChgPc5SubscriptionUpdate.json | 27 + .../VIS/jsons/ProvChgUuMbmsSubscription.json | 33 + .../ProvChgUuMbmsSubscriptionUpdate.json | 38 + .../jsons/ProvChgUuMbmsSubscription_BR.json | 33 + .../VIS/jsons/ProvChgUuUniSubscription.json | 25 + .../jsons/ProvChgUuUniSubscriptionUpdate.json | 30 + .../ProvChgUuUniSubscriptionUpdate_BR.json | 30 + MEC030/VIS/jsons/V2xMsgPublication.json | 6 + MEC030/VIS/jsons/V2xMsgPublication_BR.json | 6 + MEC030/VIS/jsons/V2xMsgSubscription.json | 7 + .../VIS/jsons/V2xMsgSubscriptionUpdate.json | 12 + .../schemas/Pc5ProvisioningInfo.schema.json | 221 +++++ MEC030/VIS/schemas/PredictedQoS.schema.json | 174 ++++ .../ProvChgPc5Subscription.schema.json | 259 ++++++ .../ProvChgUuMbmsSubscription.schema.json | 485 +++++++++++ .../ProvChgUuUniSubscription.schema.json | 422 ++++++++++ .../schemas/SubscriptionLinkList.schema.json | 59 ++ .../UuMbmsProvisioningInfo.schema.json | 444 ++++++++++ .../UuUnicastProvisioningInfo.schema.json | 385 +++++++++ .../schemas/V2xMsgSubscription.schema.json | 102 +++ .../vProvChgUuUniSubscription.schema.json | 422 ++++++++++ 28 files changed, 4173 insertions(+) create mode 100644 MEC030/VIS/README.md create mode 100644 MEC030/VIS/V2XInformationService.robot create mode 100644 MEC030/VIS/environment/variables.txt create mode 100644 MEC030/VIS/jsons/PredictedQoS.json create mode 100644 MEC030/VIS/jsons/PredictedQoS_BR.json create mode 100644 MEC030/VIS/jsons/PredictedQoS_NF.json create mode 100644 MEC030/VIS/jsons/ProvChgPc5Subscription.json create mode 100644 MEC030/VIS/jsons/ProvChgPc5SubscriptionUpdate.json create mode 100644 MEC030/VIS/jsons/ProvChgUuMbmsSubscription.json create mode 100644 MEC030/VIS/jsons/ProvChgUuMbmsSubscriptionUpdate.json create mode 100644 MEC030/VIS/jsons/ProvChgUuMbmsSubscription_BR.json create mode 100644 MEC030/VIS/jsons/ProvChgUuUniSubscription.json create mode 100644 MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate.json create mode 100644 MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate_BR.json create mode 100644 MEC030/VIS/jsons/V2xMsgPublication.json create mode 100644 MEC030/VIS/jsons/V2xMsgPublication_BR.json create mode 100644 MEC030/VIS/jsons/V2xMsgSubscription.json create mode 100644 MEC030/VIS/jsons/V2xMsgSubscriptionUpdate.json create mode 100644 MEC030/VIS/schemas/Pc5ProvisioningInfo.schema.json create mode 100644 MEC030/VIS/schemas/PredictedQoS.schema.json create mode 100644 MEC030/VIS/schemas/ProvChgPc5Subscription.schema.json create mode 100644 MEC030/VIS/schemas/ProvChgUuMbmsSubscription.schema.json create mode 100644 MEC030/VIS/schemas/ProvChgUuUniSubscription.schema.json create mode 100644 MEC030/VIS/schemas/SubscriptionLinkList.schema.json create mode 100644 MEC030/VIS/schemas/UuMbmsProvisioningInfo.schema.json create mode 100644 MEC030/VIS/schemas/UuUnicastProvisioningInfo.schema.json create mode 100644 MEC030/VIS/schemas/V2xMsgSubscription.schema.json create mode 100644 MEC030/VIS/schemas/vProvChgUuUniSubscription.schema.json diff --git a/MEC030/VIS/README.md b/MEC030/VIS/README.md new file mode 100644 index 0000000..e69de29 diff --git a/MEC030/VIS/V2XInformationService.robot b/MEC030/VIS/V2XInformationService.robot new file mode 100644 index 0000000..606ec7e --- /dev/null +++ b/MEC030/VIS/V2XInformationService.robot @@ -0,0 +1,768 @@ +''[Documentation] robot --outputdir ../../../outputs ./V2XInformationService.robot +... Test Suite to validate V2X Information Service API (VIS) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../pics.txt +Resource ../../GenericKeywords.robot +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem + +##GET on ${apiRoot}/${apiName}/${apiVersion}/queries/uu_unicast_provisioning_info +*** Test Cases *** +TP_MEC_MEC030_SRV_V2X_001_OK_01 + [Documentation] + ... Check that the IUT responds with a configured provisioning information over Uu unicast when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over Uu unicast using ecgi filter ${ECGI} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is UuUnicastProvisioningInfo + + +TP_MEC_MEC030_SRV_V2X_001_OK_02 + [Documentation] + ... Check that the IUT responds with a configured provisioning information over Uu unicast when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over Uu unicast using geographical filter ${LAT_VALUE} ${LON_VALUE} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is UuUnicastProvisioningInfo + +TP_MEC_MEC030_SRV_V2X_001_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over Uu unicast using geographical filter wrong parameter ${LAT_VALUE} ${LON_VALUE} + Check HTTP Response Status Code Is 400 + + + +TP_MEC_MEC030_SRV_V2X_001_NF + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over Uu unicast using ecgi filter ${UNKNOWN_ECGI} + Check HTTP Response Status Code Is 404 + + + +##GET on ${apiRoot}/${apiName}/${apiVersion}/queries/uu_mbms_provisioning_info +TP_MEC_MEC030_SRV_V2X_002_OK_01 + [Documentation] + ... Check that the IUT responds with a configured provisioning information over Uu MBM when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.4.3.1 + Retrieve configured provisioning information over Uu MBM using ecgi filter ${ECGI} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is UuMbmsProvisioningInfo + +TP_MEC_MEC030_SRV_V2X_002_OK_02 + [Documentation] + ... Check that the IUT responds with a configured provisioning information over Uu MBMS when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over Uu MBM using geographical filter ${LAT_VALUE} ${LON_VALUE} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is UuMbmsProvisioningInfo + +TP_MEC_MEC030_SRV_V2X_002_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over Uu MBM using geographical filter wrong parameter ${LAT_VALUE} ${LON_VALUE} + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC030_SRV_V2X_002_NF + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over Uu MBM using geographical filter ${UNKNOWN_LAT_VALUE} ${LON_VALUE} + Check HTTP Response Status Code Is 404 + + + +##GET on ${apiRoot}/${apiName}/${apiVersion}/queries/pc5_provisioning_info +TP_MEC_MEC030_SRV_V2X_003_OK_01 + [Documentation] + ... Check that the IUT responds with a configured provisioning information over PC5 when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over PC5 using ecgi filter ${ECGI} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Pc5ProvisioningInfo + +TP_MEC_MEC030_SRV_V2X_003_OK_02 + [Documentation] + ... Check that the IUT responds with a configured provisioning information over Uu MBMS when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over PC5 using geographical filter ${LAT_VALUE} ${LON_VALUE} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Pc5ProvisioningInfo + +TP_MEC_MEC030_SRV_V2X_003_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over PC5 using geographical filter wrong parameter ${LAT_VALUE} ${LON_VALUE} + Check HTTP Response Status Code Is 400 + + +TP_MEC_MEC030_SRV_V2X_003_NF + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Retrieve configured provisioning information over PC5 using ecgi filter ${UNKNOWN_ECGI} + Check HTTP Response Status Code Is 404 + + +##POST on ${apiRoot}/${apiName}/${apiVersion}/provide_predicted_qos +TP_MEC_MEC030_SRV_V2X_004_OK + [Documentation] + ... Check that the IUT sends a request about QoS information for a vehicular UE when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.6.3.4 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Request predicted QoS PredictedQoS.json + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PredictedQoS + +TP_MEC_MEC030_SRV_V2X_004_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.6.3.4 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + ##Wrong parameter into JSON: locality instead of locationGranularity + Request predicted QoS PredictedQoS_BR.json + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC030_SRV_V2X_004_NF + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.6.3.4 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Request predicted QoS PredictedQoS_NF.json + Check HTTP Response Status Code Is 404 + + + +##POST on ${apiRoot}/${apiName}/${apiVersion}/publish_v2x_message +TP_MEC_MEC030_SRV_V2X_005_OK + [Documentation] + ... Check that the IUT processes properly a request to publish a V2X message + ... ETSI GS MEC 030 V2.1.1, clause 7.7.3.4 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Publish V2X message V2xMsgPublication.json + Check HTTP Response Status Code Is 204 + +TP_MEC_MEC030_SRV_V2X_005_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.7.3.4 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Publish V2X message V2xMsgPublication_BR.json + Check HTTP Response Status Code Is 400 + + + +##GET on ${apiRoot}/${apiName}/${apiVersion}/subscription +TP_MEC_MEC030_SRV_V2X_006_OK_01 + [Documentation] + ... Check that the IUT responds with the requested list of subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve subscription list information ${SUB_TYPE_PROV_CHG_UU_UNI} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + FOR ${sub} IN @{response['body']['_links']['subscriptions']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${sub['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_UU_UNI} + Exit For Loop If ${passed}==False + END + Should Be True ${passed} + +TP_MEC_MEC030_SRV_V2X_006_OK_02 + [Documentation] + ... Check that the IUT responds with the requested list of subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve subscription list information ${SUB_TYPE_PROV_CHG_UU_MBMS} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + FOR ${sub} IN @{response['body']['_links']['subscriptions']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${sub['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_UU_MBMS} + Exit For Loop If ${passed} + END + Should Be True ${passed} + +TP_MEC_MEC030_SRV_V2X_006_OK_03 + [Documentation] + ... Check that the IUT responds with the requested list of subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve subscription list information ${SUB_TYPE_PROV_CHG_PC5} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + FOR ${sub} IN @{response['body']['_links']['subscriptions']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${sub['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_PC5} + Exit For Loop If ${passed} + END + Should Be True ${passed} + +TP_MEC_MEC030_SRV_V2X_006_OK_04 + [Documentation] + ... Check that the IUT responds with the requested list of subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve subscription list information ${SUB_TYPE_V2X_MSG} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + FOR ${sub} IN @{response['body']['_links']['subscriptions']} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${sub['subscriptionType']} ${SUB_TYPE_RESP_V2X_MSG} + Exit For Loop If ${passed} + END + Should Be True ${passed} + + +TP_MEC_MEC030_SRV_V2X_006_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve subscription list information ${SUB_TYPE_INVALID} + Check HTTP Response Status Code Is 400 + + +##Below test not done yet. See this issue: https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/9 +#TP_MEC_MEC030_SRV_V2X_006_NF +# [Documentation] +# ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application +# ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.1 +# ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml +# +# Should Be True ${PIC_MEC_SYSTEM} == 1 +# Should Be True ${PIC_SERVICES} == 1 +# Retrieve subscription list information ${SUB_TYPE_INVALID} +# Check HTTP Response Status Code Is 404 + +##POST on ${apiRoot}/${apiName}/${apiVersion}/subscription +TP_MEC_MEC030_SRV_V2X_007_OK_01 + [Documentation] + ... Check that the IUT responds with the requested to create a subscription + ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.4 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ ProvChgUuUniSubscription.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Send a request for creating a subscription ${body} + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is ProvChgUuUniSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_UU_UNI} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Be Equal As Strings ${json_object['filterCriteria']} ${response['body']['filterCriteria']} + Should Not Be Empty ${response['body']['_links']['self']['href']} + +TP_MEC_MEC030_SRV_V2X_007_OK_02 + [Documentation] + ... Check that the IUT responds with the requested to create a subscription + ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.4 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ ProvChgUuMbmsSubscription.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Send a request for creating a subscription ${body} + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is ProvChgUuMbmsSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_UU_MBMS} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Be Equal As Strings ${json_object['filterCriteria']} ${response['body']['filterCriteria']} + Should Not Be Empty ${response['body']['_links']['self']['href']} + + +TP_MEC_MEC030_SRV_V2X_007_OK_03 + [Documentation] + ... Check that the IUT responds with the requested to create a subscription + ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.4 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ ProvChgPc5Subscription.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Send a request for creating a subscription ${body} + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is ProvChgPc5Subscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_PC5} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Be Equal As Strings ${json_object['filterCriteria']} ${response['body']['filterCriteria']} + Should Not Be Empty ${response['body']['_links']['self']['href']} + +TP_MEC_MEC030_SRV_V2X_007_OK_04 + [Documentation] + ... Check that the IUT responds with the requested to create a subscription + ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.4 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ V2xMsgSubscription.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Send a request for creating a subscription ${body} + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is V2xMsgSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_V2X_MSG} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Be Equal As Strings ${json_object['filterCriteria']} ${response['body']['filterCriteria']} + Should Not Be Empty ${response['body']['_links']['self']['href']} + + +TP_MEC_MEC030_SRV_V2X_007_BR + [Documentation] + ... Check that the IUT responds with the requested to create a subscription + ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.4 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ ProvChgUuMbmsSubscription_BR.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Send a request for creating a subscription ${body} + Check HTTP Response Status Code Is 400 + + +##GET on ${apiRoot}/${apiName}/${apiVersion}/subscriptions/{subscriptionId} +TP_MEC_MEC030_SRV_V2X_008_OK_01 + [Documentation] + ... Check that the IUT responds with the requested of subscription information when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve a subscription ${SUB_PROV_CHG_UU_UNI_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ProvChgUuUniSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_UU_UNI} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Not Be Empty ${response['body']['filterCriteria']} + Should Not Be Empty ${response['body']['_links']['self']['href']} + +TP_MEC_MEC030_SRV_V2X_008_OK_02 + [Documentation] + ... Check that the IUT responds with the requested of subscription information when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve a subscription ${SUB_PROV_CHG_UU_MBMS_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ProvChgUuMbmsSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_UU_MBMS} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Not Be Empty ${response['body']['filterCriteria']} + Should Not Be Empty ${response['body']['_links']['self']['href']} + + +TP_MEC_MEC030_SRV_V2X_008_OK_03 + [Documentation] + ... Check that the IUT responds with the requested of subscription information when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve a subscription ${SUB_PROV_CHG_PC5_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ProvChgPc5Subscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_PC5} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Not Be Empty ${response['body']['filterCriteria']} + Should Not Be Empty ${response['body']['_links']['self']['href']} + +TP_MEC_MEC030_SRV_V2X_008_OK_04 + [Documentation] + ... Check that the IUT responds with the requested of subscription information when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve a subscription ${SUB_V2X_MSG_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is V2xMsgSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_V2X_MSG} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Not Be Empty ${response['body']['filterCriteria']} + Should Not Be Empty ${response['body']['_links']['self']['href']} + +TP_MEC_MEC030_SRV_V2X_008_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve a subscription ${SUB_WRONG_PARAM} + Check HTTP Response Status Code Is 400 + + +TP_MEC_MEC030_SRV_V2X_008_NF + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.1 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve a subscription ${NOT_EXISTING_SUB_ID} + Check HTTP Response Status Code Is 404 + + + +##PUT on ${apiRoot}/${apiName}/${apiVersion}/subscriptions/{subscriptionId} +TP_MEC_MEC030_SRV_V2X_009_OK_01 + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ ProvChgUuUniSubscriptionUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update existing subscription ${SUB_PROV_CHG_UU_UNI_ID} ${body} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ProvChgUuUniSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_UU_UNI} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Not Be Empty ${response['body']['_links']['self']['href']} + Should Be Equal As Strings ${json_object['filterCriteria']} ${response['body']['filterCriteria']} + +TP_MEC_MEC030_SRV_V2X_009_OK_02 + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ ProvChgUuMbmsSubscriptionUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update existing subscription ${SUB_PROV_CHG_UU_MBMS_ID} ${body} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ProvChgUuMbmsSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_UU_MBMS} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Not Be Empty ${response['body']['_links']['self']['href']} + Should Be Equal As Strings ${json_object['filterCriteria']} ${response['body']['filterCriteria']} + +TP_MEC_MEC030_SRV_V2X_009_OK_03 + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ ProvChgPc5SubscriptionUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update existing subscription ${SUB_PROV_CHG_PC5_ID} ${body} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ProvChgPc5Subscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_PROV_CHG_PC5} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Not Be Empty ${response['body']['_links']['self']['href']} + Should Be Equal As Strings ${json_object['filterCriteria']} ${response['body']['filterCriteria']} + +TP_MEC_MEC030_SRV_V2X_009_OK_04 + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ V2xMsgSubscriptionUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update existing subscription ${SUB_V2X_MSG_ID} ${body} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is V2xMsgSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE_RESP_V2X_MSG} + Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URL} + Should Not Be Empty ${response['body']['_links']['self']['href']} + Should Be Equal As Strings ${json_object['filterCriteria']} ${response['body']['filterCriteria']} + +TP_MEC_MEC030_SRV_V2X_009_BR + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ ProvChgUuUniSubscriptionUpdate_BR.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update existing subscription ${SUB_PROV_CHG_UU_UNI_ID} ${body} + Check HTTP Response Status Code Is 400 + + +##Below test not done yet. See issue https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/10 +#TP_MEC_MEC030_SRV_V2X_009_NF +# [Documentation] +# ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application +# ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 +# ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml +# Should Be True ${PIC_MEC_SYSTEM} == 1 +# Should Be True ${PIC_SERVICES} == 1 +# ${path} Catenate SEPARATOR= jsons/ ProvChgUuUniSubscriptionUpdate_NF.json +# ${body} Get File ${path} +# ${json_object}= Evaluate json.loads('''${body}''') json +# Update existing subscription ${SUB_PROV_CHG_UU_UNI_ID} ${body} +# Check HTTP Response Status Code Is 404 + +##DELETE on ${apiRoot}/${apiName}/${apiVersion}/subscriptions/{subscriptionId} + +##Different implementation respect to the TP. See issue: https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/7 +TP_MEC_MEC030_SRV_V2X_010_OK_01 + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Remove existing subscription ${SUB_PROV_CHG_UU_UNI_ID} + Check HTTP Response Status Code Is 204 + + +##Different implementation respect to the TP. See issue: https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/7 +TP_MEC_MEC030_SRV_V2X_010_NF_01 + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Remove existing subscription ${NOT_EXISTING_SUB_ID} + Check HTTP Response Status Code Is 404 + +##TP_MEC_MEC030_SRV_V2X_010_OK_02, TP_MEC_MEC030_SRV_V2X_010_OK_03 and TP_MEC_MEC030_SRV_V2X_010_OK_04 are missing because issue +## https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/7 + +##TP with identifier TP_MEC_MEC030_SRV_V2X_010_BR is missing because of following issue: +## https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/8 +*** Keywords *** +Retrieve configured provisioning information over Uu unicast using ecgi filter + [Arguments] ${value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/uu_unicast_provisioning_info?location_info=ecgi,${value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Retrieve configured provisioning information over Uu unicast using geographical filter + [Arguments] ${latitude_value} ${longitude_value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/uu_unicast_provisioning_info?location_info=latitude,${latitude_value},longitude,${longitude_value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + Retrieve configured provisioning information over Uu unicast using geographical filter wrong parameter + [Arguments] ${latitude_value} ${longitude_value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + #wrong parameter lattitude instead of latitude + GET ${apiRoot}/${apiName}/${apiVersion}/queries/uu_unicast_provisioning_info?location_info=lattitude,${latitude_value},longitude,${longitude_value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Retrieve configured provisioning information over Uu MBM using ecgi filter + [Arguments] ${value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/uu_mbms_provisioning_info?location_info=ecgi,${value} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve configured provisioning information over Uu MBM using geographical filter + [Arguments] ${latitude_value} ${longitude_value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/uu_mbms_provisioning_info?location_info=latitude,${latitude_value},longitude,${longitude_value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + Retrieve configured provisioning information over Uu MBM using geographical filter wrong parameter + [Arguments] ${latitude_value} ${longitude_value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + #wrong parameter: lattitude instead of latitude + GET ${apiRoot}/${apiName}/${apiVersion}/queries/uu_mbms_provisioning_info?location_info=lattitude,${latitude_value},longitude,${longitude_value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Retrieve configured provisioning information over PC5 using ecgi filter + [Arguments] ${value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/pc5_provisioning_info?location_info=ecgi,${value} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve configured provisioning information over PC5 using geographical filter + [Arguments] ${latitude_value} ${longitude_value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/pc5_provisioning_info?location_info=latitude,${latitude_value},longitude,${longitude_value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + Retrieve configured provisioning information over PC5 using geographical filter wrong parameter + [Arguments] ${latitude_value} ${longitude_value} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + #wrong parameter: lattitude instead of latitude + GET ${apiRoot}/${apiName}/${apiVersion}/queries/pc5_provisioning_info?location_info=lattitude,${latitude_value},longitude,${longitude_value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Request predicted QoS + [Arguments] ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/provide_predicted_qos ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Publish V2X message + [Arguments] ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/publish_v2x_message ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Retrieve subscription list information + [Arguments] ${subscription_type} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send a request for creating a subscription + [Arguments] ${body} + Log Creating a new subscription + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve a subscription + [Arguments] ${subscriptionId} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Update existing subscription + [Arguments] ${subscriptionId} ${body} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${body} + Log ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Remove existing subscription + [Arguments] ${subscriptionId} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC030/VIS/environment/variables.txt b/MEC030/VIS/environment/variables.txt new file mode 100644 index 0000000..198cebb --- /dev/null +++ b/MEC030/VIS/environment/variables.txt @@ -0,0 +1,40 @@ +*** Variables *** +# Generic variables +${SCHEMA} http +${HOST} 127.0.0.1 +${PORT} 8082 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} vis +${apiVersion} v1 + +# Specific variables +${LOCATION_INFO_QUERY_PARAM} location_info +${ECGI} 1357924680 +${UNKNOWN_ECGI} 1357924689 + +${LAT_VALUE} 43.7228 +${LON_VALUE} 10.4017 +${UNKNOWN_LAT_VALUE} 10.10 + +${SUB_TYPE_PROV_CHG_UU_UNI} prov_chg_uu_uni +${SUB_TYPE_PROV_CHG_UU_MBMS} prov_chg_uu_mbms +${SUB_TYPE_PROV_CHG_PC5} prov_chg_uu_pc5 +${SUB_TYPE_V2X_MSG} v2x_msg +${SUB_TYPE_INVALID} INVALID_SUB_TYPE + +${SUB_TYPE_RESP_PROV_CHG_UU_UNI} ProvChgUuUniSubscription +${SUB_TYPE_RESP_PROV_CHG_UU_MBMS} ProvChgUuMbmsSubscription +${SUB_TYPE_RESP_PROV_CHG_PC5} ProvChgPc5Subscription +${SUB_TYPE_RESP_V2X_MSG} V2xMsgSubscription + +${SUB_PROV_CHG_UU_UNI_ID} 1 +${SUB_PROV_CHG_UU_MBMS_ID} 2 +${SUB_PROV_CHG_PC5_ID} 3 +${SUB_V2X_MSG_ID} 4 +${SUB_WRONG_PARAM} WRONG_PARAM +${NOT_EXISTING_SUB_ID} NOT_EXISTING_SUB_ID + +${CALLBACK_URL} http://callback.uri/1 + diff --git a/MEC030/VIS/jsons/PredictedQoS.json b/MEC030/VIS/jsons/PredictedQoS.json new file mode 100644 index 0000000..e0ff681 --- /dev/null +++ b/MEC030/VIS/jsons/PredictedQoS.json @@ -0,0 +1,41 @@ +{ + "locationGranularity": "10", + "routes": [{ + "routeinfo": [ + { + "location": { + "geoArea": { + "latitude": 43.7228, + "longitude": 10.4017 + }, + "ecgi": { + "plmn": { + "mcc": "135", + "mnc": "792" + }, + "cellId": { + "cellId": "4680" + } + } + } + }, + { + "location": { + "geoArea": { + "latitude": 43.73, + "longitude": 10.41 + }, + "ecgi": { + "plmn": { + "mcc": "135", + "mnc": "792" + }, + "cellId": { + "cellId": "4685" + } + } + } + } + ] + }] +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/PredictedQoS_BR.json b/MEC030/VIS/jsons/PredictedQoS_BR.json new file mode 100644 index 0000000..1ddbf46 --- /dev/null +++ b/MEC030/VIS/jsons/PredictedQoS_BR.json @@ -0,0 +1,41 @@ +{ + "localityGranularity": "10", + "routes": [{ + "routeinfo": [ + { + "location": { + "geoArea": { + "latitude": 43.7228, + "longitude": 10.4017 + }, + "ecgi": { + "plmn": { + "mcc": "135", + "mnc": "792" + }, + "cellId": { + "cellId": "4680" + } + } + } + }, + { + "location": { + "geoArea": { + "latitude": 43.73, + "longitude": 10.41 + }, + "ecgi": { + "plmn": { + "mcc": "135", + "mnc": "792" + }, + "cellId": { + "cellId": "4685" + } + } + } + } + ] + }] +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/PredictedQoS_NF.json b/MEC030/VIS/jsons/PredictedQoS_NF.json new file mode 100644 index 0000000..3086833 --- /dev/null +++ b/MEC030/VIS/jsons/PredictedQoS_NF.json @@ -0,0 +1,41 @@ +{ + "locationGranularity": "10", + "routes": [{ + "routeinfo": [ + { + "location": { + "geoArea": { + "latitude": 40, + "longitude": 10 + }, + "ecgi": { + "plmn": { + "mcc": "135", + "mnc": "792" + }, + "cellId": { + "cellId": "4680" + } + } + } + }, + { + "location": { + "geoArea": { + "latitude": 43, + "longitude": 11 + }, + "ecgi": { + "plmn": { + "mcc": "135", + "mnc": "792" + }, + "cellId": { + "cellId": "4685" + } + } + } + } + ] + }] +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/ProvChgPc5Subscription.json b/MEC030/VIS/jsons/ProvChgPc5Subscription.json new file mode 100644 index 0000000..8774d99 --- /dev/null +++ b/MEC030/VIS/jsons/ProvChgPc5Subscription.json @@ -0,0 +1,22 @@ +{ + "subscriptionType": "ProvChgPc5Subscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": { + "locationInfo": { + "ecgi": { + "plmn": { + "mcc": "001", + "mnc": "001" + }, + "cellId": { + "cellId": "001" + } + }, + "geoArea": { + "latitude": 42, + "longitude": 10.3 + } + }, + "dstLayer2Id": "1" + } +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/ProvChgPc5SubscriptionUpdate.json b/MEC030/VIS/jsons/ProvChgPc5SubscriptionUpdate.json new file mode 100644 index 0000000..1795bf7 --- /dev/null +++ b/MEC030/VIS/jsons/ProvChgPc5SubscriptionUpdate.json @@ -0,0 +1,27 @@ +{ + "subscriptionType": "ProvChgPc5Subscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": { + "locationInfo": { + "ecgi": { + "plmn": { + "mcc": "003", + "mnc": "002" + }, + "cellId": { + "cellId": "005" + } + }, + "geoArea": { + "latitude": 42, + "longitude": 10.3 + } + }, + "dstLayer2Id": "1" + }, + "_links": { + "self": { + "href": "https://127.0.0.1/v1/vai/subscriptions/3" + } + } +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/ProvChgUuMbmsSubscription.json b/MEC030/VIS/jsons/ProvChgUuMbmsSubscription.json new file mode 100644 index 0000000..01c7373 --- /dev/null +++ b/MEC030/VIS/jsons/ProvChgUuMbmsSubscription.json @@ -0,0 +1,33 @@ +{ + "subscriptionType": "ProvChgUuMbmsSubscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": { + "locationInfo": { + "ecgi": { + "plmn": { + "mcc": "001", + "mnc": "001" + }, + "cellId": { + "cellId": "001" + } + }, + "geoArea": { + "latitude": 42.1, + "longitude": 10.3 + } + }, + "v2xServerUsd": { + "tmgi": { + "mbmsServiceId": "serviceId", + "mcc": "002", + "mnc": "002" + }, + "serviceAreaIdentifier": ["id01"], + "sdpInfo": { + "ipMulticastAddress": "10.10.0.255", + "portNumber": "1234" + } + } + } +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/ProvChgUuMbmsSubscriptionUpdate.json b/MEC030/VIS/jsons/ProvChgUuMbmsSubscriptionUpdate.json new file mode 100644 index 0000000..8157fab --- /dev/null +++ b/MEC030/VIS/jsons/ProvChgUuMbmsSubscriptionUpdate.json @@ -0,0 +1,38 @@ +{ + "subscriptionType": "ProvChgUuMbmsSubscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": { + "locationInfo": { + "ecgi": { + "plmn": { + "mcc": "001", + "mnc": "001" + }, + "cellId": { + "cellId": "001" + } + }, + "geoArea": { + "latitude": 43.10, + "longitude": 10.2 + } + }, + "v2xServerUsd": { + "tmgi": { + "mbmsServiceId": "newServiceId", + "mcc": "002", + "mnc": "002" + }, + "serviceAreaIdentifier": ["id01"], + "sdpInfo": { + "ipMulticastAddress": "10.10.0.255", + "portNumber": "1234" + } + } + }, + "_links": { + "self": { + "href": "https://127.0.0.1/v1/vai/subscriptions/1" + } + } +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/ProvChgUuMbmsSubscription_BR.json b/MEC030/VIS/jsons/ProvChgUuMbmsSubscription_BR.json new file mode 100644 index 0000000..02d6066 --- /dev/null +++ b/MEC030/VIS/jsons/ProvChgUuMbmsSubscription_BR.json @@ -0,0 +1,33 @@ +{ + "subscriptionType": "InvalidProvChgUuMbmsSubscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": { + "locationInfo": { + "ecgi": { + "plmn": { + "mcc": "001", + "mnc": "001" + }, + "cellId": { + "cellId": "001" + } + }, + "geoArea": { + "latitude": -36495271.093864456, + "longitude": -68485808.83181348 + } + }, + "v2xServerUsd": { + "tmgi": { + "mbmsServiceId": "serviceId", + "mcc": "002", + "mnc": "002" + }, + "serviceAreaIdentifier": ["id01"], + "sdpInfo": { + "ipMulticastAddress": "10.10.0.255", + "portNumber": "1234" + } + } + } +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/ProvChgUuUniSubscription.json b/MEC030/VIS/jsons/ProvChgUuUniSubscription.json new file mode 100644 index 0000000..586a0f0 --- /dev/null +++ b/MEC030/VIS/jsons/ProvChgUuUniSubscription.json @@ -0,0 +1,25 @@ +{ + "subscriptionType": "ProvChgUuUniSubscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": { + "locationInfo": { + "ecgi": { + "plmn": { + "mcc": "001", + "mnc": "002" + }, + "cellId": { + "cellId": "002" + } + }, + "geoArea": { + "latitude": 42.1, + "longitude": 10.5 + } + }, + "v2xApplicationServer": { + "ipAddress": "10.10.0.32", + "udpPort": "12345" + } + } +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate.json b/MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate.json new file mode 100644 index 0000000..40c61b4 --- /dev/null +++ b/MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate.json @@ -0,0 +1,30 @@ +{ + "subscriptionType": "ProvChgUuUniSubscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": { + "locationInfo": { + "ecgi": { + "plmn": { + "mcc": "005", + "mnc": "006" + }, + "cellId": { + "cellId": "007" + } + }, + "geoArea": { + "latitude": 43, + "longitude": 11 + } + }, + "v2xApplicationServer": { + "ipAddress": "10.10.0.33", + "udpPort": "12345" + } + }, + "_links": { + "self": { + "href": "https://127.0.0.1/vis/v1/subscription/1" + } + } +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate_BR.json b/MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate_BR.json new file mode 100644 index 0000000..afe63e1 --- /dev/null +++ b/MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate_BR.json @@ -0,0 +1,30 @@ +{ + "subscriptionType": "InvalidProvChgUuUniSubscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": { + "locationInfo": { + "ecgi": { + "plmn": { + "mcc": "005", + "mnc": "006" + }, + "cellId": { + "cellId": "007" + } + }, + "geoArea": { + "latitude": 43, + "longitude": 11 + } + }, + "v2xApplicationServer": { + "ipAddress": "10.10.0.33", + "udpPort": "12345" + } + }, + "_links": { + "self": { + "href": "https://127.0.0.1/vis/v1/subscription/1" + } + } +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/V2xMsgPublication.json b/MEC030/VIS/jsons/V2xMsgPublication.json new file mode 100644 index 0000000..f987a51 --- /dev/null +++ b/MEC030/VIS/jsons/V2xMsgPublication.json @@ -0,0 +1,6 @@ +{ + "stdOrganization": "ETSI", + "msgType": 2, + "msgEncodeFormat": "base64", + "msgContent": "V2X message content" +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/V2xMsgPublication_BR.json b/MEC030/VIS/jsons/V2xMsgPublication_BR.json new file mode 100644 index 0000000..638f906 --- /dev/null +++ b/MEC030/VIS/jsons/V2xMsgPublication_BR.json @@ -0,0 +1,6 @@ +{ + "stdOrganization": "UNKNOWN_ORG", + "msgType": 2, + "msgEncodeFormat": "base64", + "msgContent": "V2X message content" +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/V2xMsgSubscription.json b/MEC030/VIS/jsons/V2xMsgSubscription.json new file mode 100644 index 0000000..86b60c7 --- /dev/null +++ b/MEC030/VIS/jsons/V2xMsgSubscription.json @@ -0,0 +1,7 @@ +{ + "subscriptionType": "V2xMsgSubscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": { + "stdOrganization": "ETSI" + } +} \ No newline at end of file diff --git a/MEC030/VIS/jsons/V2xMsgSubscriptionUpdate.json b/MEC030/VIS/jsons/V2xMsgSubscriptionUpdate.json new file mode 100644 index 0000000..3aa9348 --- /dev/null +++ b/MEC030/VIS/jsons/V2xMsgSubscriptionUpdate.json @@ -0,0 +1,12 @@ +{ + "subscriptionType": "V2xMsgSubscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": { + "stdOrganization": "ETSI" + }, + "_links": { + "self": { + "href": "https://127.0.0.1/v1/vai/subscriptions/1" + } + } +} \ No newline at end of file diff --git a/MEC030/VIS/schemas/Pc5ProvisioningInfo.schema.json b/MEC030/VIS/schemas/Pc5ProvisioningInfo.schema.json new file mode 100644 index 0000000..f6d972d --- /dev/null +++ b/MEC030/VIS/schemas/Pc5ProvisioningInfo.schema.json @@ -0,0 +1,221 @@ +{ + "properties": { + "proInfoPc5": { + "type": "array", + "items": { + "description": "The provisioning information per location as defined below.", + "properties": { + "dstLayer2Id": { + "description": "For sidelink communication, the Destination Layer-2 ID is set to the ProSe Layer-2 Group ID or Prose UE ID, see ETSI TS 136 321 [i.12].\nPLMN operators coordinate to make sure Destination Layer-2 ID(s) for different V2X services are configured in a consistent manner.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "locationInfo": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "geoArea": { + "description": "Information of a geographical area.", + "properties": { + "latitude": { + "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Longitude (DATUM = WGS84)-180 to 180 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.", + "x-etsi-ref": "6.5.3" + }, + "neighbourCellInfo": { + "description": "The information of the neighbour cells in a visiting PLMN that support V2X communication over PC5.", + "items": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "siV2xConfig": { + "description": "V2X sidelink communication configuration, as defined in ETSI TS 136 331 [i.11].", + "type": "string" + } + }, + "required": [ + "plmn", + "ecgi", + "siV2xConfig" + ], + "type": "object", + "x-etsi-ref": "6.5.12" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Pc5NeighbourCellInfo" + } + }, + "required": [ + "locationInfo", + "dstLayer2Id" + ] + } + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + }, + "required": [ + "proInfoPc5" + ], + "type": "object", + "x-etsi-ref": "6.2.4" +} \ No newline at end of file diff --git a/MEC030/VIS/schemas/PredictedQoS.schema.json b/MEC030/VIS/schemas/PredictedQoS.schema.json new file mode 100644 index 0000000..045f7e3 --- /dev/null +++ b/MEC030/VIS/schemas/PredictedQoS.schema.json @@ -0,0 +1,174 @@ +{ + "description": "predicted QoS of a vehicular UE", + "properties": { + "timeGranularity": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "locationGranularity": { + "description": "Granularity of visited location. Measured in meters", + "type": "string" + }, + "routes": { + "type": "array", + "items": { + "properties": { + "routeinfo": { + "description": "Information relating to a specific route. The first structure shall relate to the route origin and the last to the route destination. Intermediate waypoint locations may also be provided. ", + "type": "array", + "minItems": 2, + "items": { + "required": [ + "location" + ], + "properties": { + "location": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "geoArea": { + "description": "Information of a geographical area.", + "properties": { + "latitude": { + "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Longitude (DATUM = WGS84)-180 to 180 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.", + "x-etsi-ref": "6.5.3" + }, + "time": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "rsrp": { + "description": "Reference Signal Received Quality as defined in ETSI TS 136 214 [i.13]. Shall only be included in the response", + "type": "integer", + "format": "Uint8" + }, + "rsrq": { + "description": "Reference Signal Received Quality as defined in ETSI TS 136 214 [i.13]. Shall only be included in the response", + "type": "integer", + "format": "Uint8" + } + } + } + } + }, + "required": [ + "routeinfo" + ] + } + } + }, + "required": [ + "locationGranularity", + "routes" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" +} \ No newline at end of file diff --git a/MEC030/VIS/schemas/ProvChgPc5Subscription.schema.json b/MEC030/VIS/schemas/ProvChgPc5Subscription.schema.json new file mode 100644 index 0000000..73d48df --- /dev/null +++ b/MEC030/VIS/schemas/ProvChgPc5Subscription.schema.json @@ -0,0 +1,259 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "description": "'This data type represents a type of link'", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "format": "uri" + } + } + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed VIS information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "filterCriteria": { + "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.", + "properties": { + "dstLayer2Id": { + "description": "For sidelink communication, the Destination Layer-2 ID is set to the ProSe Layer-2 Group ID or Prose UE ID, see ETSI TS 136 321 [i.12].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "locationInfo": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "geoArea": { + "description": "Information of a geographical area.", + "properties": { + "latitude": { + "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Longitude (DATUM = WGS84)-180 to 180 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.", + "x-etsi-ref": "6.5.3" + }, + "neighbourCellInfo": { + "description": "The information of the neighbour cells in a visiting PLMN that support V2X communication over PC5.", + "items": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "siV2xConfig": { + "description": "V2X sidelink communication configuration, as defined in ETSI TS 136 331 [i.11].", + "type": "string" + } + }, + "required": [ + "plmn", + "ecgi", + "siV2xConfig" + ], + "type": "object", + "x-etsi-ref": "6.5.12" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Pc5NeighbourCellInfo" + } + }, + "required": [ + "locationInfo", + "dstLayer2Id" + ], + "type": "object", + "x-etsi-mec-cardinality": "1" + }, + "subscriptionType": { + "description": "Shall be set to \"ProvChgPc5Subscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "filterCriteria" + ], + "type": "object", + "x-etsi-ref": "6.3.4" +} \ No newline at end of file diff --git a/MEC030/VIS/schemas/ProvChgUuMbmsSubscription.schema.json b/MEC030/VIS/schemas/ProvChgUuMbmsSubscription.schema.json new file mode 100644 index 0000000..262c1e2 --- /dev/null +++ b/MEC030/VIS/schemas/ProvChgUuMbmsSubscription.schema.json @@ -0,0 +1,485 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "description": "'This data type represents a type of link'", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "format": "uri" + } + } + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed VIS information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "filterCriteria": { + "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.", + "properties": { + "locationInfo": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "geoArea": { + "description": "Information of a geographical area.", + "properties": { + "latitude": { + "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Longitude (DATUM = WGS84)-180 to 180 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.", + "x-etsi-ref": "6.5.3" + }, + "neighbourCellInfo": { + "description": "The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu MBMS.", + "items": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "fddInfo": { + "properties": { + "dlEarfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "dlTransmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + }, + "ulEarfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "ulTransmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + } + }, + "required": [ + "ulEarfcn", + "dlEarfcn", + "ulTransmissionBandwidth", + "dlTransmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "mbmsServiceAreaIdentity": { + "description": "Supported MBMS Service Area Identities in the cell.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "pci": { + "description": "Physical Cell Identifier.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "tddInfo": { + "properties": { + "earfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "subframeAssignment": { + "description": "Uplink-downlink subframe configuration information.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "transmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + } + }, + "required": [ + "earfcn", + "transmissionBandwidth", + "subframeAssignment" + ], + "type": "object", + "x-etsi-ref": "6.5.7" + } + }, + "required": [ + "plmn", + "ecgi", + "pci", + "fddInfo", + "tddInfo", + "mbmsServiceAreaIdentity" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UuMbmsNeighbourCellInfo" + }, + "v2xServerUsd": { + "properties": { + "sdpInfo": { + "description": "SDP with IP multicast address and port number used for V2X communication via MBMS.", + "properties": { + "ipMulticastAddress": { + "description": "", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "portNumber": { + "description": "", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "ipMulticastAddress", + "portNumber" + ], + "type": "object", + "x-etsi-mec-cardinality": "1" + }, + "serviceAreaIdentifier": { + "description": "A list of service area identifier for the applicable MBMS broadcast area.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "tmgi": { + "description": "Temporary Mobile Group Identity (TMGI), which is used within MBMS to uniquely identify Multicast and Broadcast bearer services.", + "properties": { + "mbmsServiceId": { + "description": "MBMS Service ID consisting of three octets.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mbmsServiceId", + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-mec-cardinality": "" + } + }, + "required": [ + "tmgi", + "serviceAreaIdentifier", + "sdpInfo" + ], + "type": "object", + "x-etsi-ref": "6.5.10" + } + }, + "required": [ + "locationInfo", + "v2xServerUsd" + ], + "type": "object", + "x-etsi-mec-cardinality": "1" + }, + "subscriptionType": { + "description": "Shall be set to \"ProvChgUuMbmsSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "filterCriteria" + ], + "type": "object", + "x-etsi-ref": "6.3.3" + } \ No newline at end of file diff --git a/MEC030/VIS/schemas/ProvChgUuUniSubscription.schema.json b/MEC030/VIS/schemas/ProvChgUuUniSubscription.schema.json new file mode 100644 index 0000000..82c2490 --- /dev/null +++ b/MEC030/VIS/schemas/ProvChgUuUniSubscription.schema.json @@ -0,0 +1,422 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "description": "'This data type represents a type of link'", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "format": "uri" + } + } + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed VIS information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "filterCriteria": { + "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.", + "properties": { + "locationInfo": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "geoArea": { + "description": "Information of a geographical area.", + "properties": { + "latitude": { + "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Longitude (DATUM = WGS84)-180 to 180 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.", + "x-etsi-ref": "6.5.3" + }, + "neighbourCellInfo": { + "description": "The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu unicast.", + "items": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "fddInfo": { + "properties": { + "dlEarfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "dlTransmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + }, + "ulEarfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "ulTransmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + } + }, + "required": [ + "ulEarfcn", + "dlEarfcn", + "ulTransmissionBandwidth", + "dlTransmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "pci": { + "description": "Physical Cell Identifier.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "tddInfo": { + "properties": { + "earfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "subframeAssignment": { + "description": "Uplink-downlink subframe configuration information.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "transmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + } + }, + "required": [ + "earfcn", + "transmissionBandwidth", + "subframeAssignment" + ], + "type": "object", + "x-etsi-ref": "6.5.7" + } + }, + "required": [ + "plmn", + "ecgi", + "pci", + "fddInfo", + "tddInfo" + ], + "type": "object", + "x-etsi-ref": "6.5.9" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UuUniNeighbourCellInfo" + }, + "v2xApplicationServer": { + "properties": { + "ipAddress": { + "description": "", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "udpPort": { + "description": "", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "ipAddress", + "udpPort" + ], + "type": "object", + "x-etsi-ref": "6.5.8" + } + }, + "required": [ + "locationInfo", + "v2xApplicationServer" + ], + "type": "object", + "x-etsi-mec-cardinality": "1" + }, + "subscriptionType": { + "description": "Shall be set to \"ProvChgUuUniSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "filterCriteria" + ], + "type": "object", + "x-etsi-ref": "6.3.2" + } \ No newline at end of file diff --git a/MEC030/VIS/schemas/SubscriptionLinkList.schema.json b/MEC030/VIS/schemas/SubscriptionLinkList.schema.json new file mode 100644 index 0000000..c2892e1 --- /dev/null +++ b/MEC030/VIS/schemas/SubscriptionLinkList.schema.json @@ -0,0 +1,59 @@ +{ + "properties": { + "_links": { + "description": "List of hyperlinks related to the resource.", + "properties": { + "self": { + "description": "'This data type represents a type of link'", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "format": "uri" + } + } + }, + "subscriptions": { + "type": "array", + "items": { + "description": "The service consumer’s subscriptions.", + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "subscriptionType": { + "description": "Type of the subscription. The values are as defined in the \\\"subscriptionType\\\" attribute for each different V2X information event subscription data type.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href", + "subscriptionType" + ], + "x-etsi-mec-cardinality": "0..N" + } + } + }, + "type": "object", + "required": [ + "self" + ], + "x-etsi-mec-cardinality": "1" + } + }, + "required": [ + "_links" + ], + "type": "object", + "x-etsi-ref": "6.3.6" +} \ No newline at end of file diff --git a/MEC030/VIS/schemas/UuMbmsProvisioningInfo.schema.json b/MEC030/VIS/schemas/UuMbmsProvisioningInfo.schema.json new file mode 100644 index 0000000..49aa131 --- /dev/null +++ b/MEC030/VIS/schemas/UuMbmsProvisioningInfo.schema.json @@ -0,0 +1,444 @@ +{ + "properties": { + "proInfoUuMbms": { + "description": "The provisioning information per location as defined below.", + "properties": { + "locationInfo": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "geoArea": { + "description": "Information of a geographical area.", + "properties": { + "latitude": { + "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Longitude (DATUM = WGS84)-180 to 180 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.", + "x-etsi-ref": "6.5.3" + }, + "neighbourCellInfo": { + "description": "The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu MBMS.", + "type": "array", + "items": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "fddInfo": { + "properties": { + "dlEarfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "dlTransmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + }, + "ulEarfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "ulTransmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + } + }, + "required": [ + "ulEarfcn", + "dlEarfcn", + "ulTransmissionBandwidth", + "dlTransmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "mbmsServiceAreaIdentity": { + "description": "Supported MBMS Service Area Identities in the cell.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "pci": { + "description": "Physical Cell Identifier.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "tddInfo": { + "properties": { + "earfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "subframeAssignment": { + "description": "Uplink-downlink subframe configuration information.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "transmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + } + }, + "required": [ + "earfcn", + "transmissionBandwidth", + "subframeAssignment" + ], + "type": "object", + "x-etsi-ref": "6.5.7" + } + }, + "required": [ + "plmn", + "ecgi", + "pci", + "fddInfo", + "tddInfo", + "mbmsServiceAreaIdentity" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + }, + "minItems": 0, + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UuMbmsNeighbourCellInfo" + }, + "v2xServerUsd": { + "properties": { + "sdpInfo": { + "description": "SDP with IP multicast address and port number used for V2X communication via MBMS.", + "properties": { + "ipMulticastAddress": { + "description": "", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "portNumber": { + "description": "", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "ipMulticastAddress", + "portNumber" + ], + "type": "object", + "x-etsi-mec-cardinality": "1" + }, + "serviceAreaIdentifier": { + "description": "A list of service area identifier for the applicable MBMS broadcast area.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "tmgi": { + "description": "Temporary Mobile Group Identity (TMGI), which is used within MBMS to uniquely identify Multicast and Broadcast bearer services.", + "properties": { + "mbmsServiceId": { + "description": "MBMS Service ID consisting of three octets.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mbmsServiceId", + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-mec-cardinality": "" + } + }, + "required": [ + "tmgi", + "serviceAreaIdentifier", + "sdpInfo" + ], + "type": "object", + "x-etsi-ref": "6.5.10" + } + }, + "required": [ + "locationInfo", + "v2xServerUsd" + ] + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + }, + "required": [ + "proInfoUuMbms" + ], + "type": "object", + "x-etsi-ref": "6.2.3" + } \ No newline at end of file diff --git a/MEC030/VIS/schemas/UuUnicastProvisioningInfo.schema.json b/MEC030/VIS/schemas/UuUnicastProvisioningInfo.schema.json new file mode 100644 index 0000000..1cde221 --- /dev/null +++ b/MEC030/VIS/schemas/UuUnicastProvisioningInfo.schema.json @@ -0,0 +1,385 @@ +{ + "properties": { + "proInfoUuUnicast": { + "type": "array", + "items": { + "description": "The provisioning information per location as defined below.", + "properties": { + "locationInfo": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "geoArea": { + "description": "Information of a geographical area.", + "properties": { + "latitude": { + "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Longitude (DATUM = WGS84)-180 to 180 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.", + "x-etsi-ref": "6.5.3" + }, + "neighbourCellInfo": { + "description": "The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu unicast.", + "items": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "fddInfo": { + "properties": { + "dlEarfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "dlTransmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + }, + "ulEarfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "ulTransmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + } + }, + "required": [ + "ulEarfcn", + "dlEarfcn", + "ulTransmissionBandwidth", + "dlTransmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "pci": { + "description": "Physical Cell Identifier.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "tddInfo": { + "properties": { + "earfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "subframeAssignment": { + "description": "Uplink-downlink subframe configuration information.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "transmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + } + }, + "required": [ + "earfcn", + "transmissionBandwidth", + "subframeAssignment" + ], + "type": "object", + "x-etsi-ref": "6.5.7" + } + }, + "required": [ + "plmn", + "ecgi", + "pci", + "fddInfo", + "tddInfo" + ], + "type": "object", + "x-etsi-ref": "6.5.9" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UuUniNeighbourCellInfo" + }, + "v2xApplicationServer": { + "properties": { + "ipAddress": { + "description": "", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "udpPort": { + "description": "", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "ipAddress", + "udpPort" + ], + "type": "object", + "x-etsi-ref": "6.5.8" + } + }, + "required": [ + "locationInfo", + "v2xApplicationServer" + ], + "x-etsi-mec-cardinality": "1..N" + } + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + }, + "required": [ + "proInfoUuUnicast" + ], + "type": "object", + "x-etsi-ref": "6.2.2" +} \ No newline at end of file diff --git a/MEC030/VIS/schemas/V2xMsgSubscription.schema.json b/MEC030/VIS/schemas/V2xMsgSubscription.schema.json new file mode 100644 index 0000000..5cba0d7 --- /dev/null +++ b/MEC030/VIS/schemas/V2xMsgSubscription.schema.json @@ -0,0 +1,102 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "description": "'This data type represents a type of link'", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "format": "uri" + } + } + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed V2X message. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "filterCriteria": { + "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.", + "properties": { + "msgType": { + "description": "Subscribed V2X message type. Its value is defined by the standardization organization indicated by the attribute stdOrganization. See note 2.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Enum" + }, + "stdOrganization": { + "description": "Standardization organization which defines the subscribed V2X message type: \nETSI: European Telecommunications Standards Institute. \nSee note 1.", + "enum": [ + "ETSI" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "stdOrganization" + ], + "type": "object", + "x-etsi-mec-cardinality": "1" + }, + "subscriptionType": { + "description": "Shall be set to \"V2xMsgSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "filterCriteria" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tOther standardization organizations could be added as needed.\nNOTE 2:\tThe V2X message types of ETSI shall be used as specified in ETSI TS 102 894-2 [6], clause A.114.", + "x-etsi-ref": "6.3.5" +} \ No newline at end of file diff --git a/MEC030/VIS/schemas/vProvChgUuUniSubscription.schema.json b/MEC030/VIS/schemas/vProvChgUuUniSubscription.schema.json new file mode 100644 index 0000000..82c2490 --- /dev/null +++ b/MEC030/VIS/schemas/vProvChgUuUniSubscription.schema.json @@ -0,0 +1,422 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "description": "'This data type represents a type of link'", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "format": "uri" + } + } + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed VIS information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "filterCriteria": { + "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.", + "properties": { + "locationInfo": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "geoArea": { + "description": "Information of a geographical area.", + "properties": { + "latitude": { + "description": "Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Longitude (DATUM = WGS84)-180 to 180 in decimal degree format DDD.ddd", + "format": "Float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tEither ecgi or geoArea shall be present, but not both.", + "x-etsi-ref": "6.5.3" + }, + "neighbourCellInfo": { + "description": "The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu unicast.", + "items": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "properties": { + "cellId": { + "description": "E-UTRAN Cell Identity as a bit string (size (28)).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.6.2" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "fddInfo": { + "properties": { + "dlEarfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "dlTransmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + }, + "ulEarfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "ulTransmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + } + }, + "required": [ + "ulEarfcn", + "dlEarfcn", + "ulTransmissionBandwidth", + "dlTransmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "pci": { + "description": "Physical Cell Identifier.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "tddInfo": { + "properties": { + "earfcn": { + "properties": { + "earfcn": { + "description": "E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535)", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "earfcn" + ], + "type": "object", + "x-etsi-ref": "6.6.3" + }, + "subframeAssignment": { + "description": "Uplink-downlink subframe configuration information.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "transmissionBandwidth": { + "properties": { + "transmissionBandwidth": { + "description": "Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows:1 = bw6 (6 resource blocks)2 = bw15 (15 resource blocks) 3 = bw25 (25 resource blocks) 4 = bw50 (50 resource blocks) 5 = bw75 (75 resource blocks) 6 = bw100 (100 resource blocks)", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + } + }, + "required": [ + "transmissionBandwidth" + ], + "type": "object", + "x-etsi-ref": "6.6.4" + } + }, + "required": [ + "earfcn", + "transmissionBandwidth", + "subframeAssignment" + ], + "type": "object", + "x-etsi-ref": "6.5.7" + } + }, + "required": [ + "plmn", + "ecgi", + "pci", + "fddInfo", + "tddInfo" + ], + "type": "object", + "x-etsi-ref": "6.5.9" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "UuUniNeighbourCellInfo" + }, + "v2xApplicationServer": { + "properties": { + "ipAddress": { + "description": "", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "udpPort": { + "description": "", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "ipAddress", + "udpPort" + ], + "type": "object", + "x-etsi-ref": "6.5.8" + } + }, + "required": [ + "locationInfo", + "v2xApplicationServer" + ], + "type": "object", + "x-etsi-mec-cardinality": "1" + }, + "subscriptionType": { + "description": "Shall be set to \"ProvChgUuUniSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "filterCriteria" + ], + "type": "object", + "x-etsi-ref": "6.3.2" + } \ No newline at end of file -- GitLab From 15e1d8b6c9c784b88199b06ee3e9f9d0587e5915 Mon Sep 17 00:00:00 2001 From: piscione Date: Fri, 14 May 2021 15:49:20 +0200 Subject: [PATCH 39/63] Update Robot tests of MEC015. --- .../SRV/MTS/MultiAccessTrafficSteering.robot | 213 ++++++++-- MEC015/SRV/MTS/environment/variables.txt | 10 +- .../MtsSessionInfoApplicationSpecific.json | 9 - ...sSessionInfoApplicationSpecificUpdate.json | 12 + ...ssionInfoApplicationSpecificUpdate_BR.json | 21 + .../MtsSessionInfoApplicationSpecific_BR.json | 21 + MEC015/SRV/TM/PlatBandwidthManager_OLD.robot | 378 ------------------ ...hManager.robot => TrafficManagement.robot} | 145 ++++--- MEC015/SRV/TM/environment/variables.txt | 4 +- .../SRV/TM/jsons/BwInfoSessionSpecific.json | 15 +- MEC015/SRV/TM/jsons/BwInfo_BR2.json | 15 +- 11 files changed, 332 insertions(+), 511 deletions(-) create mode 100644 MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json create mode 100644 MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate_BR.json create mode 100644 MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific_BR.json delete mode 100644 MEC015/SRV/TM/PlatBandwidthManager_OLD.robot rename MEC015/SRV/TM/{PlatBandwidthManager.robot => TrafficManagement.robot} (82%) diff --git a/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot b/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot index 105a706..ce819b5 100644 --- a/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot +++ b/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot @@ -21,11 +21,10 @@ TP_MEC_MEC015_SRV_MTS_001_OK Check HTTP Response Body Json Schema Is MtsCapabilityInfo - ##GET on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions TP_MEC_MEC015_SRV_MTS_002_OK [Documentation] - ... Check that the IUT responds with the list of configured Multi-access Traffic Steering when queried by a MEC Application + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.1 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml Retrieve MTS session list information @@ -37,35 +36,17 @@ TP_MEC_MEC015_SRV_MTS_002_OK END Should Be True ${passed} - -TP_MEC_MEC015_SRV_MTS_003_OK +TP_MEC_MEC015_SRV_MTS_002_BR [Documentation] - ... Check that the IUT responds with a configured Multi-access Traffic Steering when queried by a MEC Application - ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.1 - ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml - Retrieve MTS session list information using filter ${CORRECT_FILTER} ${APP_INSTANCE_ID} - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is MtsSessionInfo - FOR ${mstSessionInfo} IN @{response['body']} - ${passed} Run Keyword And Return Status Should Be Equal As Strings ${mstSessionInfo['appInsId']} ${APP_INSTANCE_ID} - Exit For Loop If ${passed} - END - Should Be True ${passed} - - - -TP_MEC_MEC015_SRV_MTS_003_BR - [Documentation] - ... 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 the list of configured Multi-access Traffic Steering when queried by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.1 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml Retrieve MTS session list information using filter ${BAD_FILTER} ${APP_INSTANCE_ID} Check HTTP Response Status Code Is 400 - -TP_MEC_MEC015_SRV_MTS_003_NF +TP_MEC_MEC015_SRV_MTS_002_NF [Documentation] - ... Check that the IUT responds with an error when a request with an unknown resource URI is sent by a MEC Application + ... Check that the IUT responds with the list of configured Multi-access Traffic Steering when queried by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.1 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml Retrieve MTS session list information using filter ${CORRECT_FILTER} ${NOT_EXISTING_APP_INSTANCE_ID} @@ -73,34 +54,152 @@ TP_MEC_MEC015_SRV_MTS_003_NF ##POST on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions -TP_MEC_MEC015_SRV_MTS_004_OK_01 +TP_MEC_MEC015_SRV_MTS_003_OK_01 + [Documentation] + ... Check that the IUT creates a MTS session when queried by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.2 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + ${path} Catenate SEPARATOR= jsons/ MtsSessionInfoApplicationSpecific.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Register MTS session ${body} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is MtsSessionInfo + Should Be Equal As Strings ${response['body']['appInsId']} ${json_object['appInsId']} + Should Be Equal As Strings ${response['body']['requestType']} ${json_object['requestType']} + Should Be Equal As Strings ${response['body']['qosD']} ${json_object['qosD']} + Should Be Equal As Strings ${response['body']['mtsMode']} ${json_object['mtsMode']} + Should Be Equal As Strings ${response['body']['trafficDirection']} ${json_object['trafficDirection']} + + +TP_MEC_MEC015_SRV_MTS_003_OK_02 [Documentation] - ... Check that the IUT responds with a registration and initialisation approval for the requested MTS session requirements sent by a MEC Application + ... Check that the IUT creates a MTS session when queried by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.2 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml - Register MTS session MtsSessionInfoApplicationSpecific.json + ${path} Catenate SEPARATOR= jsons/ MtsSessionInfoSessionSpecific.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Register MTS session ${body} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsSessionInfo - Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} + Should Be Equal As Strings ${response['body']['appInsId']} ${json_object['appInsId']} + Should Be Equal As Strings ${response['body']['requestType']} ${json_object['requestType']} + Should Be Equal As Strings ${response['body']['flowFilter']} ${json_object['flowFilter']} + Should Be Equal As Strings ${response['body']['qosD']} ${json_object['qosD']} + Should Be Equal As Strings ${response['body']['mtsMode']} ${json_object['mtsMode']} + Should Be Equal As Strings ${response['body']['trafficDirection']} ${json_object['trafficDirection']} -TP_MEC_MEC015_SRV_MTS_004_OK_02 + +TP_MEC_MEC015_SRV_MTS_003_BR [Documentation] - ... Check that the IUT responds with a registration and initialisation approval for the requested MTS session requirements 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 ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.2 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml - Register MTS session MtsSessionInfoSessionSpecific.json + ${path} Catenate SEPARATOR= jsons/ MtsSessionInfoApplicationSpecific_BR.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Register MTS session ${body} + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is MtsSessionInfo + Should Be Equal As Strings ${response['body']['appInsId']} ${json_object['appInsId']} + Should Be Equal As Strings ${response['body']['requestType']} ${json_object['requestType']} + Should Be Equal As Strings ${response['body']['qosD']} ${json_object['qosD']} + Should Be Equal As Strings ${response['body']['mtsMode']} ${json_object['mtsMode']} + Should Be Equal As Strings ${response['body']['trafficDirection']} ${json_object['trafficDirection']} + + +##GET on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions/{sessionId} +TP_MEC_MEC015_SRV_MTS_004_OK + [Documentation] + ... Check that the IUT responds with a configured Multi-access Traffic Steering session when queried by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.4.3.1 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Retrieve single MTS session ${SESSION_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsSessionInfo - Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} + Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} + Should Be Equal As Strings ${response['body']['requestType']} ${REQUEST_TYPE_SESSION} + Should Be Equal As Strings ${response['body']['mtsMode']} ${MTS_LOW_MODE_COST} + Should Be Equal As Strings ${response['body']['trafficDirection']} ${TRAFFIC_DIRECTION_DL} + +TP_MEC_MEC015_SRV_MTS_004_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.4.3.1 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Retrieve single MTS session ${WRONG_SESSION_ID} + Check HTTP Response Status Code Is 400 TP_MEC_MEC015_SRV_MTS_004_NF [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.2 + ... ETSI GS MEC 015 V2.1.1, clause 9.4.3.1 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml - Register MTS session wrong URI MtsSessionInfoSessionSpecific.json + Retrieve single MTS session ${NOT_EXISTING_SESSION_ID} Check HTTP Response Status Code Is 404 + + +##PUT on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions/{sessionId} +TP_MEC_MEC015_SRV_MTS_005_OK + [Documentation] + ... Check that the IUT updates the information about an individual MTS session when commanded by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.4.3.2 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + ${path} Catenate SEPARATOR= jsons/ MtsSessionInfoApplicationSpecificUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update requested requirements on the MTS Service ${SESSION_ID} ${body} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is MtsSessionInfo + Should Be Equal As Strings ${response['body']['appInsId']} ${json_object['appInsId']} + Should Be Equal As Strings ${response['body']['requestType']} ${json_object['requestType']} + Should Be Equal As Strings ${response['body']['qosD']} ${json_object['qosD']} + Should Be Equal As Strings ${response['body']['mtsMode']} ${json_object['mtsMode']} + Should Be Equal As Strings ${response['body']['trafficDirection']} ${json_object['trafficDirection']} +TP_MEC_MEC015_SRV_MTS_005_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.4.3.2 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + ${path} Catenate SEPARATOR= jsons/ MtsSessionInfoApplicationSpecificUpdate_BR.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update requested requirements on the MTS Service ${SESSION_ID} ${body} + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC015_SRV_MTS_005_NF + [Documentation] + ... Check that the IUT responds with an error when a request with an unknown resource URI is sent by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.4.3.2 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + ${path} Catenate SEPARATOR= jsons/ MtsSessionInfoApplicationSpecificUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update requested requirements on the MTS Service ${NOT_EXISTING_SESSION_ID} ${body} + Check HTTP Response Status Code Is 404 + +##DELETE on ${apiRoot}/${apiName}/${apiVersion}/mts_sessions/{sessionId} +TP_MEC_MEC015_SRV_MTS_006_OK + [Documentation] + ... Check that the IUT deregisters a MTS session when commanded by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.4.3.3 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Unregister from the MTS Service ${SESSION_ID} + Check HTTP Response Status Code Is 204 + +##TP_MEC_MEC015_SRV_MTS_006_BR missing. +#See issues https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/11 for further details. + +TP_MEC_MEC015_SRV_MTS_006_NF + [Documentation] + ... Check that the IUT deregisters a MTS session when commanded by a MEC Application + ... ETSI GS MEC 015 V2.1.1, clause 9.4.3.3 + ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml + Unregister from the MTS Service ${NOT_EXISTING_SESSION_ID} + Check HTTP Response Status Code Is 404 + *** Keywords *** Retrieve MTS capability information Should Be True ${PIC_MEC_PLAT} == 1 @@ -120,7 +219,7 @@ Retrieve MTS session list information Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get ${apiRoot}/${apiName}/${apiVersion}/mts_session + Get ${apiRoot}/${apiName}/${apiVersion}/mts_sessions ${output}= Output response Set Suite Variable ${response} ${output} @@ -133,21 +232,19 @@ Retrieve MTS session list information using filter Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get ${apiRoot}/${apiName}/${apiVersion}/mts_session?${filter}=${value} + Get ${apiRoot}/${apiName}/${apiVersion}/mts_sessions?${filter}=${value} ${output}= Output response Set Suite Variable ${response} ${output} Register MTS session - [Arguments] ${content} + [Arguments] ${body} Should Be True ${PIC_MEC_PLAT} == 1 Should Be True ${PIC_SERVICES} == 1 Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - ${path} Catenate SEPARATOR= jsons/ ${content} - ${body} Get File ${path} - POST ${apiRoot}/${apiName}/${apiVersion}/mts_session ${body} + POST ${apiRoot}/${apiName}/${apiVersion}/mts_sessions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -162,6 +259,40 @@ Register MTS session wrong URI Set Headers {"Content-Length":"0"} ${path} Catenate SEPARATOR= jsons/ ${content} ${body} Get File ${path} - POST ${apiRoot}/${apiName}/v0/mts_session ${body} + POST ${apiRoot}/${apiName}/v0/mts_sessions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve single MTS session + [Arguments] ${sessionId} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/mts_sessions/${sessionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Update requested requirements on the MTS Service + [Arguments] ${sessionId} ${body} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + PUT ${apiRoot}/${apiName}/${apiVersion}/mts_sessions/${sessionId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Unregister from the MTS Service + [Arguments] ${sessionId} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + LOG ${sessionId} + DELETE ${apiRoot}/${apiName}/${apiVersion}/mts_sessions/${sessionId} ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC015/SRV/MTS/environment/variables.txt b/MEC015/SRV/MTS/environment/variables.txt index 8031473..cceeac3 100644 --- a/MEC015/SRV/MTS/environment/variables.txt +++ b/MEC015/SRV/MTS/environment/variables.txt @@ -13,4 +13,12 @@ ${apiVersion} v1 ${APP_INSTANCE_ID} appInstId01 ${NOT_EXISTING_APP_INSTANCE_ID} NOT_EXISTING_APP_INS_ID ${CORRECT_FILTER} app_instance_id -${BAD_FILTER} app_id \ No newline at end of file +${BAD_FILTER} appInsId + +${SESSION_ID} 1 +${WRONG_SESSION_ID} WRONG_SESSION_ID +${NOT_EXISTING_SESSION_ID} NOT_EXISTING_SESSION_ID + +${REQUEST_TYPE_SESSION} 0 +${MTS_LOW_MODE_COST} 0 +${TRAFFIC_DIRECTION_DL} 00 diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json index 8723de3..f8ec281 100644 --- a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json +++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json @@ -6,15 +6,6 @@ }, "mtsMode": 0, "trafficDirection": "00", - "flowFilter": [{ - "dstPort": [8081], - "protocol": 41, - "sourcePort": [8081], - "dstIp": "10.10.0.10", - "dscp": 40, - "sourceIp": "10.10.0.30" - } - ], "qosD":{ "minTpt":10 } diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json new file mode 100644 index 0000000..16d8774 --- /dev/null +++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json @@ -0,0 +1,12 @@ +{ + "appInsId": "myAppInstId", + "requestType": 0, + "qosD": { + "minTpt": 30 + }, + "mtsMode": 0, + "trafficDirection": "00", + "qosD":{ + "minTpt":10 + } +} \ No newline at end of file diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate_BR.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate_BR.json new file mode 100644 index 0000000..814cd50 --- /dev/null +++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate_BR.json @@ -0,0 +1,21 @@ +{ + "appInsId": "myAppInstId", + "requestType": 0, + "qosD": { + "minTpt": 30 + }, + "mtsMode": 0, + "trafficDirection": "00", + "flowFilter": [{ + "dstPort": [8081], + "protocol": 41, + "sourcePort": [8081], + "dstIp": "10.10.0.10", + "dscp": 40, + "sourceIp": "10.10.0.30" + } + ], + "qosD":{ + "minTpt":10 + } +} \ No newline at end of file diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific_BR.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific_BR.json new file mode 100644 index 0000000..814cd50 --- /dev/null +++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific_BR.json @@ -0,0 +1,21 @@ +{ + "appInsId": "myAppInstId", + "requestType": 0, + "qosD": { + "minTpt": 30 + }, + "mtsMode": 0, + "trafficDirection": "00", + "flowFilter": [{ + "dstPort": [8081], + "protocol": 41, + "sourcePort": [8081], + "dstIp": "10.10.0.10", + "dscp": 40, + "sourceIp": "10.10.0.30" + } + ], + "qosD":{ + "minTpt":10 + } +} \ No newline at end of file diff --git a/MEC015/SRV/TM/PlatBandwidthManager_OLD.robot b/MEC015/SRV/TM/PlatBandwidthManager_OLD.robot deleted file mode 100644 index 664f54a..0000000 --- a/MEC015/SRV/TM/PlatBandwidthManager_OLD.robot +++ /dev/null @@ -1,378 +0,0 @@ -''[Documentation] robot --outputdir ../../outputs ./PlatBandwidthManager.robot -... Test Suite to validate Bandwidth Management API (BWA) operations. - -*** Settings *** -Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot -Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false -Library OperatingSystem - - -*** Test Cases *** -Request the list of configured bandwidth allocations - [Documentation] TC_MEC_SRV_BWA_001_OK - ... Check that the IUT responds with the list of configured bandwidth allocations when queried by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.4.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Retrieve the list of configured bandwidth allocations ${APP_INSTANCE_ID} - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is BwInfo - Check AppInstanceId ${APP_INSTANCE_ID} - - -Request the list of configured bandwidth allocations with wrong app instance id - [Documentation] TC_MEC_SRV_BWA_001_BR - ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.4.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Retrieve the list of configured bandwidth allocations ${NON_EXISTENT_APP_INSTANCE_ID} - Check HTTP Response Status Code Is 400 - #Check ProblemDetails 400 - - -Request to register Bandwidth Management Services - [Documentation] TC_MEC_SRV_BWA_002_OK - ... Check that the IUT responds with a registration and initialisation approval for the requested bandwidth requirements sent by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.4.3.4 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Registration for bandwidth services ${APP_INSTANCE_ID} BwInfo - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is BwInfo - Check AppInstanceId ${APP_INSTANCE_ID} - - -Request to register Bandwidth Management Services using wrong parameters - [Documentation] TC_MEC_SRV_BWA_002_BR - ... Check that the IUT responds with a registration and initialisation approval for the requested bandwidth requirements sent by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.4.3.4 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Registration for bandwidth services ${APP_INSTANCE_ID} BwInfoError - Check HTTP Response Status Code Is 400 - - -Request for a bandwidth allocation - [Documentation] TC_MEC_SRV_BWA_003_OK - ... Check that the IUT responds with the configured bandwidth allocation when queried by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Get a bandwidth allocation ${ALLOCATION_ID} - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is BwInfo - Check AppInstanceId ${APP_INSTANCE_ID} - - -Request for a bandwidth allocation using wrong parameters - [Documentation] TC_MEC_SRV_BWA_003_NF - ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Get a bandwidth allocation ${NON_EXISTENT_ALLOCATION_ID} - Check HTTP Response Status Code Is 404 - - -Updates the requested bandwidth requirements - [Documentation] TC_MEC_SRV_BWA_004_OK - ... Check that the IUT updates the requested bandwidth requirements when commanded by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - # Preamble - Register Bandwidth Management Service BwInfo - # Test body - Update a bandwidth allocation ${ALLOCATION_ID} BwInfoUpdate - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is BwInfo - Check AppInstanceId ${APP_INSTANCE_ID} - # Postamble - Unregister Bandwidth Management Service ${ALLOCATION_ID} - -Updates the requested bandwidth requirements using wrong allocationDirection - [Documentation] TC_MEC_SRV_BWA_004_BR - ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - # Preamble - Register Bandwidth Management Service BwInfo - # Test body - Update a bandwidth allocation ${ALLOCATION_ID} BwInfoError - Check HTTP Response Status Code Is 400 - # Postamble - Unregister Bandwidth Management Service ${ALLOCATION_ID} - - -Updates the requested bandwidth requirements using wrong allocationId - [Documentation] TC_MEC_SRV_BWA_004_NF - ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Update a bandwidth allocation ${NON_EXISTENT_ALLOCATION_ID} BwInfoUpdate - Check HTTP Response Status Code Is 404 - Check ProblemDetails 404 - - -Updates the requested bandwidth requirements using wrong parameters - [Documentation] TC_MEC_SRV_BWA_004_PF - ... Check that the IUT responds with an error when a request sent by a MEC Application doesn't comply with a required condition - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - # TODO Application doesn't comply with a required condition??? - # Preamble - Register Bandwidth Management Service BwInfo - # Test body - Update a bandwidth allocation with invalid ETAG ${ALLOCATION_ID} BwInfoUpdate - Check HTTP Response Status Code Is 412 - # Postamble - Unregister Bandwidth Management Service ${ALLOCATION_ID} - - - - -Request for deltas changes - [Documentation] TC_MEC_SRV_BWA_005_OK - ... Check that the IUT when provided with just the changes (deltas) updates the requested bandwidth requirements when commanded by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.3 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - # Preamble - Register Bandwidth Management Service BwInfo - # Test body - Request a deltas changes ${ALLOCATION_ID} BwInfoUpdateDelta - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is bwInfo - Check AppInstanceId ${APP_INSTANCE_ID} - # Postamble - Unregister Bandwidth Management Service ${ALLOCATION_ID} - - -Request for deltas changes using invalid requestType - [Documentation] TC_MEC_SRV_BWA_005_BR - ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.3 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - # Preamble - Register Bandwidth Management Service BwInfo - # Test body - Request a deltas changes ${ALLOCATION_ID} BwInfoUpdateDeltaError - Check HTTP Response Status Code Is 400 - # Postamble - Unregister Bandwidth Management Service ${ALLOCATION_ID} - - -Request for deltas changes using an unknown URI - [Documentation] TC_MEC_SRV_BWA_005_NF - ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.3 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Request a deltas changes ${NON_EXISTENT_ALLOCATION_ID} BwInfoUpdateDelta - Check HTTP Response Status Code Is 404 - - -Request for deltas changes using wrong parameters - [Documentation] TC_MEC_SRV_BWA_005_PF - ... Check that the IUT responds with an error when a request sent by a MEC Application doesn't comply with a required condition - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.3 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - # Preamble - Register Bandwidth Management Service BwInfo - # Test body - Request a deltas changes with invalid ETAG ${ALLOCATION_ID} BwInfoUpdateDelta - Check HTTP Response Status Code Is 412 - # Postamble - Unregister Bandwidth Management Service ${ALLOCATION_ID} - - -Request to unregister bandwidth Management Service - [Documentation] TC_MEC_SRV_BWA_006_OK - ... Check that the IUT unregisters from the Bandwidth Management Service when commanded by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.5 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - # Preamble - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Register Bandwidth Management Service BwInfo - # Test body - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Delete ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${ALLOCATION_ID} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 204 - - -Request to unregister bandwidth Management Service with wrong parameters - [Documentation] TC_MEC_SRV_BWA_006_NF - ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.5 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - # Preamble - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - # Test body - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Delete ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${NON_EXISTENT_ALLOCATION_ID} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - Check ProblemDetails 404 - - -*** Keywords *** -Retrieve the list of configured bandwidth allocations - [Arguments] ${app_instance_id} - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Get ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${app_instance_id} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Registration for bandwidth services - [Arguments] ${app_instance_id} ${content} - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - ${file}= Catenate SEPARATOR= jsons/ ${content} .json - ${body}= Get File ${file} - Post ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${app_instance_id} ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Get a bandwidth allocation - [Arguments] ${allocation_id} - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Get ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Update a bandwidth allocation - [Arguments] ${allocation_id} ${content} - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"If-Match":"${ETAG_VALUE}"} - Set Headers {"Content-Length":"0"} - ${file}= Catenate SEPARATOR= jsons/ ${content} .json - ${body}= Get File ${file} - Put ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Update a bandwidth allocation with invalid ETAG - [Arguments] ${allocation_id} ${content} - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"If-Match":"${INVALID_ETAG}"} - Set Headers {"Content-Length":"0"} - ${file}= Catenate SEPARATOR= jsons/ ${content} .json - ${body}= Get File ${file} - Put ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Request a deltas changes - [Arguments] ${allocation_id} ${content} - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"If-Match":"${ETAG}"} - Set Headers {"Content-Length":"0"} - ${file}= Catenate SEPARATOR= jsons/ ${content} .json - ${body}= Get File ${file} - Patch ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Request a deltas changes with invalid ETAG - [Arguments] ${allocation_id} ${content} - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"If-Match":"${INVALID_ETAG}"} - Set Headers {"Content-Length":"0"} - ${file}= Catenate SEPARATOR= jsons/ ${content} .json - ${body}= Get File ${file} - Patch ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - - - -Register Bandwidth Management Service - [Arguments] ${content} - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - ${file}= Catenate SEPARATOR= jsons/ ${content} .json - ${body}= Get File ${file} - Post ${apiRoot}/${apiName}/${apiVersion}/bw_allocations ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is BwInfo - # Extract ETAG_VALUE - Set Suite Variable ${ETAG_VALUE} ${response['status']['ETag']} - Should Not Be Empty ${ETAG_VALUE} - # TODO Extract allocationId not possible, information is missing in the standard doc - Set Suite Variable ${ALLOCATION_ID} ${response['body']['bwInfo']['allocationId']} - Should Not Be Empty ${ALLOCATION_ID} - - -Unregister Bandwidth Management Service - [Arguments] ${value} - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Delete ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${value} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 204 - - -Check AppInstanceId - [Arguments] ${value} - Log Check AppInstanceId for bwInfo element - Should be Equal ${response['body']['bwInfo']['appInsId']} ${value} - Log AppInstanceId OK - - -Check AllocationId - [Arguments] ${value} - Log Check AllocationId for bwInfo element - Should be Equal ${response['body']['bwInfo']['fixedAllocation']} ${value} - Log AllocationId OK diff --git a/MEC015/SRV/TM/PlatBandwidthManager.robot b/MEC015/SRV/TM/TrafficManagement.robot similarity index 82% rename from MEC015/SRV/TM/PlatBandwidthManager.robot rename to MEC015/SRV/TM/TrafficManagement.robot index c62e406..21f4779 100644 --- a/MEC015/SRV/TM/PlatBandwidthManager.robot +++ b/MEC015/SRV/TM/TrafficManagement.robot @@ -1,4 +1,4 @@ -''[Documentation] robot --outputdir ../../../outputs ./PlatBandwidthManager.robot +''[Documentation] robot --outputdir ../../../outputs ./TrafficManagement.robot ... Test Suite to validate Bandwidth Management API (BWA) operations. *** Settings *** @@ -64,14 +64,15 @@ TP_MEC_MEC015_SRV_TM_003_OK_01 ... Check that the IUT responds with a registration and initialisation approval for the requested bandwidth requirements sent by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 8.4.3.4 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Register Bandwidth Management Service BwInfoApplicationSpecific ${REQUEST_TYPE_APPLICATION} + Register Bandwidth Management Service Application specific BwInfoApplicationSpecific TP_MEC_MEC015_SRV_TM_003_OK_02 [Documentation] ... Check that the IUT responds with a registration and initialisation approval for the requested bandwidth requirements sent by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 8.4.3.4 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Register Bandwidth Management Service BwInfoSessionSpecific ${REQUEST_TYPE_SESSION} + Register Bandwidth Management Service Session specific BwInfoSessionSpecific + TP_MEC_MEC015_SRV_TM_003_BR_01 @@ -79,21 +80,21 @@ TP_MEC_MEC015_SRV_TM_003_BR_01 ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 8.4.3.4 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Register Bandwidth Management Service with incorrect parameters BwInfo_BR ${REQUEST_TYPE_APPLICATION} + Register Bandwidth Management Service with incorrect parameters BwInfo_BR TP_MEC_MEC015_SRV_TM_003_BR_02 [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 8.4.3.4 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Register Bandwidth Management Service with incorrect parameters BwInfo_BR2 ${REQUEST_TYPE_APPLICATION} + Register Bandwidth Management Service with incorrect parameters BwInfo_BR2 TP_MEC_MEC015_SRV_TM_003_BR_03 [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 8.4.3.4 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Register Bandwidth Management Service with incorrect parameters BwInfo_BR3 ${REQUEST_TYPE_APPLICATION} + Register Bandwidth Management Service with incorrect parameters BwInfo_BR3 @@ -125,12 +126,15 @@ TP_MEC_MEC015_SRV_TM_005_OK ... Check that the IUT updates the requested bandwidth requirements when commanded by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.2 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Update a bandwidth allocation ${ALLOCATION_ID} BwInfoUpdate + ${path} Catenate SEPARATOR= jsons/ BwInfoUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update a bandwidth allocation ${ALLOCATION_ID} ${body} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is BwInfo - Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} - Should Be Equal As Strings ${response['body']['fixedAllocation']} ${FIXED_ALLOCATION} - Should Be Equal As Strings ${response['body']['allocationDirection']} ${ALLOCATION_DIRECTION} + Should Be Equal As Strings ${response['body']['appInsId']} ${json_object['appInsId']} + Should Be Equal As Strings ${response['body']['fixedAllocation']} ${json_object['fixedAllocation']} + Should Be Equal As Strings ${response['body']['allocationDirection']} ${json_object['allocationDirection']} TP_MEC_MEC015_SRV_TM_005_BR @@ -138,27 +142,25 @@ TP_MEC_MEC015_SRV_TM_005_BR ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.2 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Update a bandwidth allocation ${ALLOCATION_ID} BwInfoUpdate_BR + ${path} Catenate SEPARATOR= jsons/ BwInfoUpdate_BR.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update a bandwidth allocation ${ALLOCATION_ID} ${body} Check HTTP Response Status Code Is 400 + TP_MEC_MEC015_SRV_TM_005_NF [Documentation] ... Check that the IUT responds with an error when a request sent by a MEC Application doesn't comply with a required condition ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.2 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json + ${path} Catenate SEPARATOR= jsons/ BwInfoUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json Update a bandwidth allocation ${NON_EXISTENT_ALLOCATION_ID} BwInfoUpdate Check HTTP Response Status Code Is 404 - -TP_MEC_MEC015_SRV_TM_005_PF - [Documentation] - ... Check that the IUT updates the requested bandwidth requirements when commanded by a MEC Application - ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json - Update a bandwidth allocation with invalid ETAG ${ALLOCATION_ID} BwInfoUpdate - Check HTTP Response Status Code Is 412 - ##PATCH on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/{ALLOCATION_ID} TP_MEC_MEC015_SRV_TM_006_OK [Documentation] @@ -166,14 +168,17 @@ TP_MEC_MEC015_SRV_TM_006_OK ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.3 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml # Preamble - Register Bandwidth Management Service BwInfoApplicationSpecific ${REQUEST_TYPE_APPLICATION} + Register Bandwidth Management Service Application specific BwInfoApplicationSpecific # Test body - Request a deltas changes ${ALLOCATION_ID} BwInfoDeltas + ${path} Catenate SEPARATOR= jsons/ BwInfoUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Request a deltas changes ${ALLOCATION_ID} ${body} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is BwInfo - Should be Equal ${response['body']['appInsId']} ${APP_INSTANCE_ID} - # Postamble - #Unregister Bandwidth Management Service ${ALLOCATION_ID} + Should Be Equal As Strings ${response['body']['appInsId']} ${json_object['appInsId']} + Should Be Equal As Strings ${response['body']['fixedAllocation']} ${json_object['fixedAllocation']} + Should Be Equal As Strings ${response['body']['allocationDirection']} ${json_object['allocationDirection']} TP_MEC_MEC015_SRV_TM_006_BR [Documentation] @@ -181,38 +186,25 @@ TP_MEC_MEC015_SRV_TM_006_BR ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.3 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml # Preamble - Register Bandwidth Management Service BwInfoApplicationSpecific ${REQUEST_TYPE_APPLICATION} + Register Bandwidth Management Service Application specific BwInfoApplicationSpecific # Test body - Request a deltas changes ${ALLOCATION_ID} BwInfoDeltas_BR + ${path} Catenate SEPARATOR= jsons/ BwInfoDeltas_BR.json + ${body} Get File ${path} + Request a deltas changes ${ALLOCATION_ID} ${body} Check HTTP Response Status Code Is 400 - # Postamble - #Unregister Bandwidth Management Service ${ALLOCATION_ID} + TP_MEC_MEC015_SRV_TM_006_NF [Documentation] ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.3 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml - Request a deltas changes ${NON_EXISTENT_ALLOCATION_ID} BwInfoDeltas_BR + ${path} Catenate SEPARATOR= jsons/ BwInfoDeltas_BR.json + ${body} Get File ${path} + Request a deltas changes ${NON_EXISTENT_ALLOCATION_ID} ${body} Check HTTP Response Status Code Is 400 - # Postamble - #Unregister Bandwidth Management Service ${ALLOCATION_ID} - - -TP_MEC_MEC015_SRV_TM_006_PF - [Documentation] - ... Check that the IUT responds with an error when a request sent by a MEC Application doesn't comply with a required condition - ... ETSI GS MEC 015 V2.1.1, clause 8.3.3.3 - ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml - # Preamble - Register Bandwidth Management Service BwInfoApplicationSpecific ${REQUEST_TYPE_APPLICATION} - # Test body - Request a deltas changes with invalid ETAG ${ALLOCATION_ID} BwInfoDeltas - Check HTTP Response Status Code Is 412 - # Postamble - #Unregister Bandwidth Management Service ${ALLOCATION_ID} - + ##DELETE on ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/{ALLOCATION_ID} TP_MEC_MEC015_SRV_TM_007_OK [Documentation] @@ -296,43 +288,36 @@ Get a bandwidth allocation Update a bandwidth allocation - [Arguments] ${allocation_id} ${content} + [Arguments] ${allocation_id} ${body} Should Be True ${PIC_MEC_PLAT} == 1 Should Be True ${PIC_SERVICES} == 1 Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"If-Match":"${ETAG_VALUE}"} - ${file}= Catenate SEPARATOR= jsons/ ${content} .json - ${body}= Get File ${file} Put ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} ${output}= Output response Set Suite Variable ${response} ${output} -Update a bandwidth allocation with invalid ETAG - [Arguments] ${allocation_id} ${content} +Request a deltas changes + [Arguments] ${allocation_id} ${body} Should Be True ${PIC_MEC_PLAT} == 1 Should Be True ${PIC_SERVICES} == 1 Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"If-Match":"${INVALID_ETAG}"} - ${file}= Catenate SEPARATOR= jsons/ ${content} .json - ${body}= Get File ${file} - Put ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} + Patch ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} ${output}= Output response Set Suite Variable ${response} ${output} -Request a deltas changes +Request a deltas changes with invalid ETAG [Arguments] ${allocation_id} ${content} Should Be True ${PIC_MEC_PLAT} == 1 Should Be True ${PIC_SERVICES} == 1 Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"If-Match":"${ETAG}"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} Patch ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} @@ -340,23 +325,22 @@ Request a deltas changes Set Suite Variable ${response} ${output} -Request a deltas changes with invalid ETAG - [Arguments] ${allocation_id} ${content} +Register Bandwidth Management Service with incorrect parameters + [Arguments] ${content} Should Be True ${PIC_MEC_PLAT} == 1 Should Be True ${PIC_SERVICES} == 1 Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"If-Match":"${INVALID_ETAG}"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} - Patch ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} + Post ${apiRoot}/${apiName}/${apiVersion}/bw_allocations ${body} ${output}= Output response Set Suite Variable ${response} ${output} + Check HTTP Response Status Code Is 400 - -Register Bandwidth Management Service with incorrect parameters - [Arguments] ${content} ${request_type} +Register Bandwidth Management Service Session specific + [Arguments] ${content} Should Be True ${PIC_MEC_PLAT} == 1 Should Be True ${PIC_SERVICES} == 1 Set Headers {"Accept":"application/json"} @@ -364,13 +348,22 @@ Register Bandwidth Management Service with incorrect parameters Set Headers {"Authorization":"${TOKEN}"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} + ${json_object}= Evaluate json.loads('''${body}''') json Post ${apiRoot}/${apiName}/${apiVersion}/bw_allocations ${body} ${output}= Output response Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 400 + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is BwInfo + Should Not Be Empty ${response['headers']['Location']} + Should Be Equal As Strings ${response['body']['appInsId']} ${json_object['appInsId']} + Should Be Equal As Strings ${response['body']['requestType']} ${json_object['requestType']} + Should Be Equal As Strings ${response['body']['sessionFilter']} ${json_object['sessionFilter']} + Should Be Equal As Strings ${response['body']['fixedAllocation']} ${json_object['fixedAllocation']} + Should Be Equal As Strings ${response['body']['allocationDirection']} ${json_object['allocationDirection']} -Register Bandwidth Management Service - [Arguments] ${content} ${request_type} + +Register Bandwidth Management Service Application specific + [Arguments] ${content} Should Be True ${PIC_MEC_PLAT} == 1 Should Be True ${PIC_SERVICES} == 1 Set Headers {"Accept":"application/json"} @@ -383,15 +376,13 @@ Register Bandwidth Management Service Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is BwInfo + ${json_object}= Evaluate json.loads('''${body}''') json Should Not Be Empty ${response['headers']['Location']} - Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} - Should Be Equal As Strings ${response['body']['requestType']} ${request_type} - Should Be Equal As Strings ${response['body']['fixedAllocation']} ${FIXED_ALLOCATION} - Should Be Equal As Strings ${response['body']['allocationDirection']} ${ALLOCATION_DIRECTION} - - # Extract ETAG_VALUE - Set Suite Variable ${ETAG_VALUE} ${response['headers']['ETag']} - Should Not Be Empty ${ETAG_VALUE} + Should Be Equal As Strings ${response['body']['appInsId']} ${json_object['appInsId']} + Should Be Equal As Strings ${response['body']['requestType']} ${json_object['requestType']} + Should Be Equal As Strings ${response['body']['fixedAllocation']} ${json_object['fixedAllocation']} + Should Be Equal As Strings ${response['body']['allocationDirection']} ${json_object['allocationDirection']} + diff --git a/MEC015/SRV/TM/environment/variables.txt b/MEC015/SRV/TM/environment/variables.txt index e4bea3d..4a9a19d 100644 --- a/MEC015/SRV/TM/environment/variables.txt +++ b/MEC015/SRV/TM/environment/variables.txt @@ -15,12 +15,10 @@ ${apiVersion} v1 ${CORRECT_FILTER} app_instance_id -${BAD_FILTER} app_id +${BAD_FILTER} appInsId ${APP_INSTANCE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f ${NON_EXISTENT_APP_INSTANCE_ID} NON_EXISTENT_INSTANCE_ID -${REQUEST_TYPE_APPLICATION} 0 -${REQUEST_TYPE_SESSION} 1 ${FIXED_ALLOCATION} 32 ${ALLOCATION_DIRECTION} 00 diff --git a/MEC015/SRV/TM/jsons/BwInfoSessionSpecific.json b/MEC015/SRV/TM/jsons/BwInfoSessionSpecific.json index 3f80a53..d81e4f3 100644 --- a/MEC015/SRV/TM/jsons/BwInfoSessionSpecific.json +++ b/MEC015/SRV/TM/jsons/BwInfoSessionSpecific.json @@ -2,5 +2,18 @@ "appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", "requestType": 1, "fixedAllocation": "32", - "allocationDirection": "00" + "allocationDirection": "00", + "sessionFilter": [{ + "protocol": "123", + "sourceIp": "10.10.0.3", + "dstAddress": "1234", + "dstPort": [ + "1234", + "1334" + ], + "sourcePort": [ + "8080", + "8082" + ] + }] } \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfo_BR2.json b/MEC015/SRV/TM/jsons/BwInfo_BR2.json index 470f466..c08fbf8 100644 --- a/MEC015/SRV/TM/jsons/BwInfo_BR2.json +++ b/MEC015/SRV/TM/jsons/BwInfo_BR2.json @@ -2,5 +2,18 @@ "appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", "requestType": 0, "fixedAllocation": "-30", - "allocationDirection": "00" + "allocationDirection": "00", + "sessionFilter": [{ + "protocol": "123", + "sourceIp": "10.10.0.3", + "dstAddress": "1234", + "dstPort": [ + "1234", + "1334" + ], + "sourcePort": [ + "8080", + "8082" + ] + }] } \ No newline at end of file -- GitLab From a2d3bfe07c33b6b4c9c2d99f13d42fc159efbd33 Mon Sep 17 00:00:00 2001 From: piscione Date: Fri, 14 May 2021 18:30:00 +0200 Subject: [PATCH 40/63] Minor. --- MEC030/VIS/V2XInformationService.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MEC030/VIS/V2XInformationService.robot b/MEC030/VIS/V2XInformationService.robot index 606ec7e..dc6a6d9 100644 --- a/MEC030/VIS/V2XInformationService.robot +++ b/MEC030/VIS/V2XInformationService.robot @@ -1,4 +1,4 @@ -''[Documentation] robot --outputdir ../../../outputs ./V2XInformationService.robot +Y''[Documentation] robot --outputdir ../../../outputs ./V2XInformationService.robot ... Test Suite to validate V2X Information Service API (VIS) operations. *** Settings *** @@ -554,7 +554,7 @@ TP_MEC_MEC030_SRV_V2X_010_OK_01 ##Different implementation respect to the TP. See issue: https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/7 -TP_MEC_MEC030_SRV_V2X_010_NF_01 +TP_MEC_MEC030_SRV_V2X_010_NF [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 -- GitLab From 28f9c7347450e1e478b3e6051637fe56c6b20af9 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Mon, 17 May 2021 21:23:42 +0200 Subject: [PATCH 41/63] Update TC naming in MEC010p2 and MEC012. Refactor MEC030 --- {MEO => MEC010p2/MEO}/GRANT/Grant.robot | 16 +++---- {MEC030/VIS => MEC010p2/MEO/GRANT}/README.md | 0 .../MEO}/GRANT/environment/variables.txt | 0 .../GRANT/jsons/grantRejectedRequest.json | 0 .../MEO}/GRANT/jsons/grantRequests.json | 0 .../MEO}/GRANT/schemas/Grant.json | 0 .../MEO}/PKGM/PackageManagement.robot | 48 +++++++++---------- {MEO/GRANT => MEC010p2/MEO/PKGM}/README.md | 0 .../MEO}/PKGM/environment/variables.txt | 0 .../MEO}/PKGM/jsons/AppPkgSubscription.json | 0 .../MEO}/PKGM/jsons/CreateAppPackage.json | 0 .../MEO}/PKGM/jsons/MalformedAppPkg.json | 0 .../jsons/MalformedAppPkgSubscription.json | 0 .../PKGM/schemas/AppPkgSubscriptionInfo.json | 0 .../schemas/AppPkgSubscriptionLinkList.json | 0 .../PKGM/schemas/OnboardedAppPkgInfo.json | 0 .../PKGM/schemas/OnboardedAppPkgInfos.json | 0 .../MEPM}/PKGM/PackageManagement.robot | 35 +++++++------- {MEO => MEC010p2/MEPM}/PKGM/README.md | 0 .../MEPM}/PKGM/environment/variables.txt | 0 .../MEPM}/PKGM/jsons/AppPkgSubscription.json | 0 .../MEPM}/PKGM/jsons/CreateAppPackage.json | 0 .../MEPM}/PKGM/jsons/MalformedAppPkg.json | 0 .../jsons/MalformedAppPkgSubscription.json | 0 .../PKGM/schemas/AppPkgSubscriptionInfo.json | 0 .../schemas/AppPkgSubscriptionLinkList.json | 0 .../PKGM/schemas/OnboardedAppPkgInfo.json | 0 .../PKGM/schemas/OnboardedAppPkgInfos.json | 0 {MEPM/PKGM => MEC012/SRV/RNIS}/README.md | 0 .../SRV}/RNIS/RnisNotifications.robot | 32 ++++++------- .../SRV}/RNIS/RnisQuery_BI_BO.robot | 32 ++++++------- {SRV => MEC012/SRV}/RNIS/RnisQuery_BV.robot | 17 +++---- .../SRV}/RNIS/RnisSubscriptions_BI_BO.robot | 8 ++-- .../SRV}/RNIS/RnisSubscriptions_BV.robot | 21 ++++---- {SRV => MEC012/SRV}/RNIS/environment/pics.txt | 0 .../SRV}/RNIS/environment/variables.txt | 0 .../jsons/CellChangeSubscriptionRequest.json | 0 .../UpdateCellChangeSubscriptionRequest.json | 0 .../SRV}/RNIS/resources/LocationAPI.robot | 0 .../RadioNetworkInformationAPI.robot | 0 .../schemas/CaReconfSubscription.schema.json | 0 .../CellChangeNotification.schema.json | 0 .../CellChangeSubscription.schema.json | 0 .../SRV}/RNIS/schemas/L2Meas.schema.json | 0 .../SRV}/RNIS/schemas/L2MeasInfos.schema.json | 0 .../schemas/MeasRepUeNotification.schema.json | 0 .../schemas/MeasTaSubscription.schema.json | 0 .../NrMeasRepUeSubscription.schema.json | 0 .../SRV}/RNIS/schemas/PlmnInfo.schema.json | 0 .../SRV}/RNIS/schemas/PlmnInfos.schema.json | 0 .../schemas/RabEstNotification.schema.json | 0 .../SRV}/RNIS/schemas/RabInfo.schema.json | 0 .../SRV}/RNIS/schemas/RabInfos.schema.json | 0 .../schemas/RabModNotification.schema.json | 0 .../schemas/RabRelNotification.schema.json | 0 .../RNIS/schemas/S1BearerInfo.schema.json | 0 .../RNIS/schemas/S1BearerInfos.schema.json | 0 .../schemas/S1BearerSubscription.schema.json | 0 .../schemas/SubscriptionLinkList.schema.json | 0 {SRV/RNIS => MEC030/SRV/V2X}/README.md | 0 .../V2X}/V2XInformationService.robot | 4 +- .../V2X}/environment/variables.txt | 0 .../{VIS => SRV/V2X}/jsons/PredictedQoS.json | 0 .../V2X}/jsons/PredictedQoS_BR.json | 0 .../V2X}/jsons/PredictedQoS_NF.json | 0 .../V2X}/jsons/ProvChgPc5Subscription.json | 0 .../jsons/ProvChgPc5SubscriptionUpdate.json | 0 .../V2X}/jsons/ProvChgUuMbmsSubscription.json | 0 .../ProvChgUuMbmsSubscriptionUpdate.json | 0 .../jsons/ProvChgUuMbmsSubscription_BR.json | 0 .../V2X}/jsons/ProvChgUuUniSubscription.json | 0 .../jsons/ProvChgUuUniSubscriptionUpdate.json | 0 .../ProvChgUuUniSubscriptionUpdate_BR.json | 0 .../V2X}/jsons/V2xMsgPublication.json | 0 .../V2X}/jsons/V2xMsgPublication_BR.json | 0 .../V2X}/jsons/V2xMsgSubscription.json | 0 .../V2X}/jsons/V2xMsgSubscriptionUpdate.json | 0 .../schemas/Pc5ProvisioningInfo.schema.json | 0 .../V2X}/schemas/PredictedQoS.schema.json | 0 .../ProvChgPc5Subscription.schema.json | 0 .../ProvChgUuMbmsSubscription.schema.json | 0 .../ProvChgUuUniSubscription.schema.json | 0 .../schemas/SubscriptionLinkList.schema.json | 0 .../UuMbmsProvisioningInfo.schema.json | 0 .../UuUnicastProvisioningInfo.schema.json | 0 .../schemas/V2xMsgSubscription.schema.json | 0 .../vProvChgUuUniSubscription.schema.json | 0 87 files changed, 107 insertions(+), 106 deletions(-) rename {MEO => MEC010p2/MEO}/GRANT/Grant.robot (91%) rename {MEC030/VIS => MEC010p2/MEO/GRANT}/README.md (100%) rename {MEO => MEC010p2/MEO}/GRANT/environment/variables.txt (100%) rename {MEO => MEC010p2/MEO}/GRANT/jsons/grantRejectedRequest.json (100%) rename {MEO => MEC010p2/MEO}/GRANT/jsons/grantRequests.json (100%) rename {MEO => MEC010p2/MEO}/GRANT/schemas/Grant.json (100%) rename {MEO => MEC010p2/MEO}/PKGM/PackageManagement.robot (93%) rename {MEO/GRANT => MEC010p2/MEO/PKGM}/README.md (100%) rename {MEO => MEC010p2/MEO}/PKGM/environment/variables.txt (100%) rename {MEO => MEC010p2/MEO}/PKGM/jsons/AppPkgSubscription.json (100%) rename {MEO => MEC010p2/MEO}/PKGM/jsons/CreateAppPackage.json (100%) rename {MEO => MEC010p2/MEO}/PKGM/jsons/MalformedAppPkg.json (100%) rename {MEO => MEC010p2/MEO}/PKGM/jsons/MalformedAppPkgSubscription.json (100%) rename {MEO => MEC010p2/MEO}/PKGM/schemas/AppPkgSubscriptionInfo.json (100%) rename {MEO => MEC010p2/MEO}/PKGM/schemas/AppPkgSubscriptionLinkList.json (100%) rename {MEO => MEC010p2/MEO}/PKGM/schemas/OnboardedAppPkgInfo.json (100%) rename {MEO => MEC010p2/MEO}/PKGM/schemas/OnboardedAppPkgInfos.json (100%) rename {MEPM => MEC010p2/MEPM}/PKGM/PackageManagement.robot (93%) rename {MEO => MEC010p2/MEPM}/PKGM/README.md (100%) rename {MEPM => MEC010p2/MEPM}/PKGM/environment/variables.txt (100%) rename {MEPM => MEC010p2/MEPM}/PKGM/jsons/AppPkgSubscription.json (100%) rename {MEPM => MEC010p2/MEPM}/PKGM/jsons/CreateAppPackage.json (100%) rename {MEPM => MEC010p2/MEPM}/PKGM/jsons/MalformedAppPkg.json (100%) rename {MEPM => MEC010p2/MEPM}/PKGM/jsons/MalformedAppPkgSubscription.json (100%) rename {MEPM => MEC010p2/MEPM}/PKGM/schemas/AppPkgSubscriptionInfo.json (100%) rename {MEPM => MEC010p2/MEPM}/PKGM/schemas/AppPkgSubscriptionLinkList.json (100%) rename {MEPM => MEC010p2/MEPM}/PKGM/schemas/OnboardedAppPkgInfo.json (100%) rename {MEPM => MEC010p2/MEPM}/PKGM/schemas/OnboardedAppPkgInfos.json (100%) rename {MEPM/PKGM => MEC012/SRV/RNIS}/README.md (100%) rename {SRV => MEC012/SRV}/RNIS/RnisNotifications.robot (94%) rename {SRV => MEC012/SRV}/RNIS/RnisQuery_BI_BO.robot (91%) rename {SRV => MEC012/SRV}/RNIS/RnisQuery_BV.robot (91%) rename {SRV => MEC012/SRV}/RNIS/RnisSubscriptions_BI_BO.robot (92%) rename {SRV => MEC012/SRV}/RNIS/RnisSubscriptions_BV.robot (91%) rename {SRV => MEC012/SRV}/RNIS/environment/pics.txt (100%) rename {SRV => MEC012/SRV}/RNIS/environment/variables.txt (100%) rename {SRV => MEC012/SRV}/RNIS/jsons/CellChangeSubscriptionRequest.json (100%) rename {SRV => MEC012/SRV}/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json (100%) rename {SRV => MEC012/SRV}/RNIS/resources/LocationAPI.robot (100%) rename {SRV => MEC012/SRV}/RNIS/resources/RadioNetworkInformationAPI.robot (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/CaReconfSubscription.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/CellChangeNotification.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/CellChangeSubscription.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/L2Meas.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/L2MeasInfos.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/MeasRepUeNotification.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/MeasTaSubscription.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/NrMeasRepUeSubscription.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/PlmnInfo.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/PlmnInfos.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/RabEstNotification.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/RabInfo.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/RabInfos.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/RabModNotification.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/RabRelNotification.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/S1BearerInfo.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/S1BearerInfos.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/S1BearerSubscription.schema.json (100%) rename {SRV => MEC012/SRV}/RNIS/schemas/SubscriptionLinkList.schema.json (100%) rename {SRV/RNIS => MEC030/SRV/V2X}/README.md (100%) rename MEC030/{VIS => SRV/V2X}/V2XInformationService.robot (99%) rename MEC030/{VIS => SRV/V2X}/environment/variables.txt (100%) rename MEC030/{VIS => SRV/V2X}/jsons/PredictedQoS.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/PredictedQoS_BR.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/PredictedQoS_NF.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/ProvChgPc5Subscription.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/ProvChgPc5SubscriptionUpdate.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/ProvChgUuMbmsSubscription.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/ProvChgUuMbmsSubscriptionUpdate.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/ProvChgUuMbmsSubscription_BR.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/ProvChgUuUniSubscription.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/ProvChgUuUniSubscriptionUpdate.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/ProvChgUuUniSubscriptionUpdate_BR.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/V2xMsgPublication.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/V2xMsgPublication_BR.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/V2xMsgSubscription.json (100%) rename MEC030/{VIS => SRV/V2X}/jsons/V2xMsgSubscriptionUpdate.json (100%) rename MEC030/{VIS => SRV/V2X}/schemas/Pc5ProvisioningInfo.schema.json (100%) rename MEC030/{VIS => SRV/V2X}/schemas/PredictedQoS.schema.json (100%) rename MEC030/{VIS => SRV/V2X}/schemas/ProvChgPc5Subscription.schema.json (100%) rename MEC030/{VIS => SRV/V2X}/schemas/ProvChgUuMbmsSubscription.schema.json (100%) rename MEC030/{VIS => SRV/V2X}/schemas/ProvChgUuUniSubscription.schema.json (100%) rename MEC030/{VIS => SRV/V2X}/schemas/SubscriptionLinkList.schema.json (100%) rename MEC030/{VIS => SRV/V2X}/schemas/UuMbmsProvisioningInfo.schema.json (100%) rename MEC030/{VIS => SRV/V2X}/schemas/UuUnicastProvisioningInfo.schema.json (100%) rename MEC030/{VIS => SRV/V2X}/schemas/V2xMsgSubscription.schema.json (100%) rename MEC030/{VIS => SRV/V2X}/schemas/vProvChgUuUniSubscription.schema.json (100%) diff --git a/MEO/GRANT/Grant.robot b/MEC010p2/MEO/GRANT/Grant.robot similarity index 91% rename from MEO/GRANT/Grant.robot rename to MEC010p2/MEO/GRANT/Grant.robot index 735841f..878c4ff 100644 --- a/MEO/GRANT/Grant.robot +++ b/MEC010p2/MEO/GRANT/Grant.robot @@ -3,7 +3,7 @@ *** Settings *** Resource environment/variables.txt -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Library REST ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT} ssl_verify=false Library OperatingSystem @@ -11,8 +11,8 @@ Library OperatingSystem *** Test Cases *** -Request a new Grant - Synchronous mode - [Documentation] TP_MEC_MEO_GRANT_001_OK +TC_MEC_MEC010p2_MEO_GRANT_001_OK + [Documentation] ... Check that MEO sends a synchronous grant response when a grant request is requested ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.1 ... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.2.2-1 (GrantRequest) @@ -25,7 +25,7 @@ Request a new Grant - Synchronous mode -Request a new Grant - Malformed request +TC_MEC_MEC010p2_MEO_GRANT_001_BR [Documentation] TP_MEC_MEO_GRANT_001_BR ... Check that MEO responds with an error when it receives a malformed request when a new grant request is performed ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2 @@ -36,7 +36,7 @@ Request a new Grant - Malformed request -Request a new Grant - Asynchronous mode +TC_MEC_MEC010p2_MEO_GRANT_002_OK [Documentation] TP_MEC_MEO_GRANT_002_OK ... Check that MEO sends a asynchronous grant response when a grant request is requested ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.1 @@ -48,7 +48,7 @@ Request a new Grant - Asynchronous mode Check HTTP Response Body is Empty -Request an individual grant - Ongoing process +TC_MEC_MEC010p2_MEO_GRANT_003_OK [Documentation] TP_MEC_MEO_GRANT_003_OK ... Check that MEO sends the status of a grant request when a query on a granting ID is performed. ... The process of creating the grant is ongoing, no grant is available yet @@ -61,7 +61,7 @@ Request an individual grant - Ongoing process -Request an individual grant using non existant grant identifier +TC_MEC_MEC010p2_MEO_GRANT_003_NF [Documentation] TP_MEC_MEO_GRANT_003_NF ... Check that MEO responds with an error when it receives a request for returning a grant referred with a wrong ID ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2 @@ -71,7 +71,7 @@ Request an individual grant using non existant grant identifier -Request an individual grant - Successful +TC_MEC_MEC010p2_MEO_GRANT_004_OK [Documentation] TP_MEC_MEO_GRANT_004_OK ... Check that MEO sends the status of a grant request when a query on a granting ID is performed ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2 diff --git a/MEC030/VIS/README.md b/MEC010p2/MEO/GRANT/README.md similarity index 100% rename from MEC030/VIS/README.md rename to MEC010p2/MEO/GRANT/README.md diff --git a/MEO/GRANT/environment/variables.txt b/MEC010p2/MEO/GRANT/environment/variables.txt similarity index 100% rename from MEO/GRANT/environment/variables.txt rename to MEC010p2/MEO/GRANT/environment/variables.txt diff --git a/MEO/GRANT/jsons/grantRejectedRequest.json b/MEC010p2/MEO/GRANT/jsons/grantRejectedRequest.json similarity index 100% rename from MEO/GRANT/jsons/grantRejectedRequest.json rename to MEC010p2/MEO/GRANT/jsons/grantRejectedRequest.json diff --git a/MEO/GRANT/jsons/grantRequests.json b/MEC010p2/MEO/GRANT/jsons/grantRequests.json similarity index 100% rename from MEO/GRANT/jsons/grantRequests.json rename to MEC010p2/MEO/GRANT/jsons/grantRequests.json diff --git a/MEO/GRANT/schemas/Grant.json b/MEC010p2/MEO/GRANT/schemas/Grant.json similarity index 100% rename from MEO/GRANT/schemas/Grant.json rename to MEC010p2/MEO/GRANT/schemas/Grant.json diff --git a/MEO/PKGM/PackageManagement.robot b/MEC010p2/MEO/PKGM/PackageManagement.robot similarity index 93% rename from MEO/PKGM/PackageManagement.robot rename to MEC010p2/MEO/PKGM/PackageManagement.robot index f8a767a..4741401 100644 --- a/MEO/PKGM/PackageManagement.robot +++ b/MEC010p2/MEO/PKGM/PackageManagement.robot @@ -3,7 +3,7 @@ *** Settings *** Resource environment/variables.txt -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Library REST ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT} ssl_verify=false Library BuiltIn Library OperatingSystem @@ -11,8 +11,8 @@ Library MockServerLibrary *** Test Cases *** -Create new App Package Resource - [Documentation] TP_MEC_MEO_PKGM_001_OK +TC_MEC_MEC010p2_MEO_PKGM_001_OK + [Documentation] ... Check that MEO creates a new App Package when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.1 ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo) @@ -29,8 +29,8 @@ Create new App Package Resource Check Result Contains ${response} usageState ${USAGE_STATE} -Create new App Package Resource using malformed request - [Documentation] TP_MEC_MEO_PKGM_001_BR +TC_MEC_MEC010p2_MEO_PKGM_001_BR + [Documentation] ... Check that MEO creates a new App Package when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.1 ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.2.2-1 (AppPkg) @@ -39,7 +39,7 @@ Create new App Package Resource using malformed request Check HTTP Response Status Code Is 400 -Request all APP Packages +TC_MEC_MEC010p2_MEO_PKGM_002_OK [Documentation] TP_MEC_MEO_PKGM_002_OK ... Check that MEO returns the list of App Packages when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.2 @@ -52,7 +52,7 @@ Request all APP Packages Check Result Contains ${response} appDId ${APPD_ID} -Request all APP Packages using bad attribute-based filtering parameter +TC_MEC_MEC010p2_MEO_PKGM_002_BR [Documentation] TP_MEC_MEO_PKGM_002_BR ... Check that MEO responds with an error when it receives ... a malformed request for retrieving the list of existing App Packages @@ -62,7 +62,7 @@ Request all APP Packages using bad attribute-based filtering parameter Check HTTP Response Status Code Is 400 -Request an individual APP Package +TC_MEC_MEC010p2_MEO_PKGM_003_OK [Documentation] TP_MEC_MEO_PKGM_003_OK ... Check that MEO returns the list of App Packages when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.2 @@ -75,7 +75,7 @@ Request an individual APP Package Check Result Contains ${response} appDId ${APPD_ID} -Request an individual APP Package using wrong identifier +TC_MEC_MEC010p2_MEO_PKGM_003_NF [Documentation] TP_MEC_MEO_PKGM_003_NF ... Check that MEO responds with an error when it receives ... a request for retrieving a App Package referred with a wrong ID @@ -86,7 +86,7 @@ Request an individual APP Package using wrong identifier Check HTTP Response Status Code Is 404 -Remove an individual APP Package +TC_MEC_MEC010p2_MEO_PKGM_004_OK [Documentation] TP_MEC_MEO_PKGM_004_OK ... Check that MEO deletes an App Package when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.4 @@ -96,7 +96,7 @@ Remove an individual APP Package Check HTTP Response Body is Empty -Remove an individual APP Package using wrong identifier +TC_MEC_MEC010p2_MEO_PKGM_004_NF [Documentation] TP_MEC_MEO_PKGM_004_NF ... Check that MEO responds with an error when it receives ... a request for deleting an App Package referred with a wrong ID @@ -106,7 +106,7 @@ Remove an individual APP Package using wrong identifier Check HTTP Response Status Code Is 404 -Request a Operational state update on an APP Package +TC_MEC_MEC010p2_MEO_PKGM_005_OK [Documentation] TP_MEC_MEO_PKGM_005_OK ... Check that MEO changes the status of an App Package from INITIAL_OP_STATE with an operation of type OPERATION_VALUE when requested, with the following possible combinations: ... - ENABLED, DISABLE @@ -119,7 +119,7 @@ Request a Operational state update on an APP Package Check HTTP Response Body is Empty -Request a Operational state update on an APP Package using wrong operation value +TC_MEC_MEC010p2_MEO_PKGM_005_BR [Documentation] TP_MEC_MEO_PKGM_005_BR ... Check that MEO sends an error when it receives a malformed request to modify the operational state of an application package ... ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.3 @@ -128,7 +128,7 @@ Request a Operational state update on an APP Package using wrong operation value Check HTTP Response Status Code Is 400 -Request a Operational state update on a non onboarded APP Package +TC_MEC_MEC010p2_MEO_PKGM_005_NF [Documentation] TP_MEC_MEO_PKGM_005_NF ... Check that MEO responds with an error when it receives a request for updating an App Package referred with a wrong ID ... ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.3 @@ -137,7 +137,7 @@ Request a Operational state update on a non onboarded APP Package Check HTTP Response Status Code Is 404 -Request the App Descriptor of an App Package +TC_MEC_MEC010p2_MEO_PKGM_006_OK [Documentation] TP_MEC_MEO_PKGM_006_OK ... Check that MEO returns the Application Descriptor contained on a on-boarded Application Package when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.3.6.3.2 @@ -147,7 +147,7 @@ Request the App Descriptor of an App Package Check HTTP Response Contain Header with value Content-Type ${ACCEPTED_CONTENT_TYPE} -Request the App Descriptor of an App Package using a non onboarded APP Package +TC_MEC_MEC010p2_MEO_PKGM_006_NF [Documentation] TP_MEC_MEO_PKGM_006_NF ... Check that MEO responds with an error when it receives a request to retrieve an application descriptor referred with a wrong app package ID ... ETSI GS MEC 010-2 2.0.10, clause 7.3.6.3.2 @@ -156,7 +156,7 @@ Request the App Descriptor of an App Package using a non onboarded APP Package Check HTTP Response Status Code Is 404 -Create a new App Packages Subscription +TC_MEC_MEC010p2_MEO_PKGM_007_OK [Documentation] TP_MEC_MEO_PKGM_007_OK ... Check that MEO service sends a Application Package Subscription when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.3.3.3.1 @@ -170,7 +170,7 @@ Create a new App Packages Subscription Check Result Contains ${response} callbackUri ${CALLBACK_URI} -Create a new App Packages Subscription with malformed parameter +TC_MEC_MEC010p2_MEO_PKGM_007_BR [Documentation] TP_MEC_MEO_PKGM_007_BR ... Check that MEO service sends an error when it receives a malformed request for creating a new subscription on AppPackages ... ETSI GS MEC 010-2 2.0.10, clause 7.3.3.3.1 @@ -180,7 +180,7 @@ Create a new App Packages Subscription with malformed parameter Check HTTP Response Status Code Is 400 -Request all App Package subscriptions +TC_MEC_MEC010p2_MEO_PKGM_008_OK [Documentation] TP_MEC_MEO_PKGM_008_OK ... Check that MEO service returns the list of Application Package Subscriptions when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.3.3.3.2 @@ -192,7 +192,7 @@ Request all App Package subscriptions Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID} -Request a specific App Package subscription +TC_MEC_MEC010p2_MEO_PKGM_009_OK [Documentation] TP_MEC_MEO_PKGM_009_OK ... Check that MEO service returns an Application Package Subscription when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.2 @@ -204,7 +204,7 @@ Request a specific App Package subscription Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID} -Request a specific App Package subscription using non existant subscription identifier +TC_MEC_MEC010p2_MEO_PKGM_009_NF [Documentation] TP_MEC_MEO_PKGM_009_NF ... Check that MEO service sends an error when it receives a query for a subscription ... on AppPackages with a wrong identifier @@ -214,7 +214,7 @@ Request a specific App Package subscription using non existant subscription iden Check HTTP Response Status Code Is 404 -Remove a APP Package subscription +TC_MEC_MEC010p2_MEO_PKGM_010_OK [Documentation] TP_MEC_MEO_PKGM_010_OK ... Check that MEO service deletes an Application Package Subscription when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.4 @@ -224,7 +224,7 @@ Remove a APP Package subscription Check HTTP Response Body is Empty -Remove a APP Package subscription using non existant subscription id +TC_MEC_MEC010p2_MEO_PKGM_010_NF [Documentation] TP_MEC_MEO_PKGM_010_NF ... Check that MEO service sends an error when it receives a deletion request ... for a subscription on AppPackages with a wrong identifier @@ -234,7 +234,7 @@ Remove a APP Package subscription using non existant subscription id Check HTTP Response Status Code Is 404 -Post Application Package Notification +TC_MEC_MEC010p2_MEO_PKGM_011_OK [Documentation] TP_MEC_MEO_PKGM_011_OK ... Check that the MEO service sends a application package notification ... if the MEO service has an associated subscription and the event is generated diff --git a/MEO/GRANT/README.md b/MEC010p2/MEO/PKGM/README.md similarity index 100% rename from MEO/GRANT/README.md rename to MEC010p2/MEO/PKGM/README.md diff --git a/MEO/PKGM/environment/variables.txt b/MEC010p2/MEO/PKGM/environment/variables.txt similarity index 100% rename from MEO/PKGM/environment/variables.txt rename to MEC010p2/MEO/PKGM/environment/variables.txt diff --git a/MEO/PKGM/jsons/AppPkgSubscription.json b/MEC010p2/MEO/PKGM/jsons/AppPkgSubscription.json similarity index 100% rename from MEO/PKGM/jsons/AppPkgSubscription.json rename to MEC010p2/MEO/PKGM/jsons/AppPkgSubscription.json diff --git a/MEO/PKGM/jsons/CreateAppPackage.json b/MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json similarity index 100% rename from MEO/PKGM/jsons/CreateAppPackage.json rename to MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json diff --git a/MEO/PKGM/jsons/MalformedAppPkg.json b/MEC010p2/MEO/PKGM/jsons/MalformedAppPkg.json similarity index 100% rename from MEO/PKGM/jsons/MalformedAppPkg.json rename to MEC010p2/MEO/PKGM/jsons/MalformedAppPkg.json diff --git a/MEO/PKGM/jsons/MalformedAppPkgSubscription.json b/MEC010p2/MEO/PKGM/jsons/MalformedAppPkgSubscription.json similarity index 100% rename from MEO/PKGM/jsons/MalformedAppPkgSubscription.json rename to MEC010p2/MEO/PKGM/jsons/MalformedAppPkgSubscription.json diff --git a/MEO/PKGM/schemas/AppPkgSubscriptionInfo.json b/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionInfo.json similarity index 100% rename from MEO/PKGM/schemas/AppPkgSubscriptionInfo.json rename to MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionInfo.json diff --git a/MEO/PKGM/schemas/AppPkgSubscriptionLinkList.json b/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionLinkList.json similarity index 100% rename from MEO/PKGM/schemas/AppPkgSubscriptionLinkList.json rename to MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionLinkList.json diff --git a/MEO/PKGM/schemas/OnboardedAppPkgInfo.json b/MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfo.json similarity index 100% rename from MEO/PKGM/schemas/OnboardedAppPkgInfo.json rename to MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfo.json diff --git a/MEO/PKGM/schemas/OnboardedAppPkgInfos.json b/MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfos.json similarity index 100% rename from MEO/PKGM/schemas/OnboardedAppPkgInfos.json rename to MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfos.json diff --git a/MEPM/PKGM/PackageManagement.robot b/MEC010p2/MEPM/PKGM/PackageManagement.robot similarity index 93% rename from MEPM/PKGM/PackageManagement.robot rename to MEC010p2/MEPM/PKGM/PackageManagement.robot index 526b5ea..188df53 100644 --- a/MEPM/PKGM/PackageManagement.robot +++ b/MEC010p2/MEPM/PKGM/PackageManagement.robot @@ -3,7 +3,7 @@ *** Settings *** Resource environment/variables.txt -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Library REST ${MEPM_SCHEMA}://${MEPM_HOST}:${MEPM_PORT} ssl_verify=false Library BuiltIn Library OperatingSystem @@ -11,7 +11,7 @@ Library MockServerLibrary *** Test Cases *** -Request all APP Packages +TC_MEC_MEC010p2_MEPM_PKGM_001_OK [Documentation] TP_MEC_MEPM_PKGM_001_OK ... Check that MEPM returns the list of App Packages when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.4.1.3.2 @@ -24,7 +24,7 @@ Request all APP Packages Check Result Contains ${response} appDId ${APPD_ID} -Request all APP Packages using bad attribute-based filtering parameter +TC_MEC_MEC010p2_MEPM_PKGM_001_BR [Documentation] TP_MEC_MEPM_PKGM_001_BR ... Check that MEPM responds with an error when it receives ... a malformed request for requesting the list of existing App Packages @@ -34,7 +34,7 @@ Request all APP Packages using bad attribute-based filtering parameter Check HTTP Response Status Code Is 400 -Request an individual APP Package +TC_MEC_MEC010p2_MEPM_PKGM_002_OK [Documentation] TP_MEC_MEPM_PKGM_002_OK ... Check that MEPM returns the an App Package when requested ... EETSI GS MEC 010-2 2.0.10, clause 7.4.2.3.2 @@ -47,7 +47,7 @@ Request an individual APP Package Check Result Contains ${response} appDId ${APPD_ID} - Request an individual APP Package using wrong identifier +TC_MEC_MEC010p2_MEPM_PKGM_002_NF [Documentation] TP_MEC_MEPM_PKGM_002_NF ... Check that MEPM responds with an error when it receives ... a request for returning a App Package referred with a wrong ID @@ -58,7 +58,7 @@ Request an individual APP Package - Request the App Descriptor of an App Package +TC_MEC_MEC010p2_MEPM_PKGM_003_OK [Documentation] TP_MEC_MEPM_PKGM_003_OK ... Check that MEPM returns the Application Descriptor contained on a on-boarded Application Package when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.4.4.3.2 @@ -69,7 +69,7 @@ Request an individual APP Package ##TODO: How to check content returned? -Request the App Descriptor of an App Package using a non onboarded APP Package +TC_MEC_MEC010p2_MEPM_PKGM_003_NF [Documentation] TP_MEC_MEPM_PKGM_003_NF ... Check that MEPM responds with an error when it receives ... a request for returning a App Descriptor referred with a wrong App Package ID @@ -79,7 +79,7 @@ Request the App Descriptor of an App Package using a non onboarded APP Package Check HTTP Response Status Code Is 404 - Request the Content of an onboarded App Package +TC_MEC_MEC010p2_MEPM_PKGM_004_OK [Documentation] TP_MEC_MEPM_PKGM_004_OK ... Check that MEPM returns the content on a on-boarded Application Package when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.4.3.3.2 @@ -88,7 +88,7 @@ Request the App Descriptor of an App Package using a non onboarded APP Package Check HTTP Response Status Code Is 200 ##TODO: How to check content returned? -Request the Content of an App Package using a non onboarded APP Package identifier +TC_MEC_MEC010p2_MEPM_PKGM_004_NF [Documentation] TP_MEC_MEPM_PKGM_004_NF ... Check that MEPM responds with an error when it receives ... a request for returning a application package content referred with a wrong App Package ID @@ -98,7 +98,7 @@ Request the Content of an App Package using a non onboarded APP Package identifi Check HTTP Response Status Code Is 404 -Create a new App Packages Subscription +TC_MEC_MEC010p2_MEPM_PKGM_005_OK [Documentation] TP_MEC_MEPM_PKGM_005_OK ... Check that MEPM service returns an application package subscription when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.4.5.3.1 @@ -111,9 +111,8 @@ Create a new App Packages Subscription Check Result Contains ${response} subscriptionType ON_BOARDING Check Result Contains ${response} callbackUri ${CALLBACK_URI} - -Create a new App Packages Subscription with malformed parameter +TC_MEC_MEC010p2_MEPM_PKGM_005_BR [Documentation] TP_MEC_MEPM_PKGM_005_BR ... Check that MEPM service sends an error when it receives a ... malformed request for creating a new subscription on AppPackages @@ -124,7 +123,7 @@ Create a new App Packages Subscription with malformed parameter Check HTTP Response Status Code Is 400 -Request all App Package subscriptions +TC_MEC_MEC010p2_MEPM_PKGM_006_OK [Documentation] TP_MEC_MEPM_PKGM_006_OK ... Check that MEPM service returns the list of Application Package Subscriptions when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.4.5.3.2 @@ -136,7 +135,7 @@ Request all App Package subscriptions Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID} -Request a specific App Package subscription +TC_MEC_MEC010p2_MEPM_PKGM_007_OK [Documentation] TP_MEC_MEPM_PKGM_007_OK ... Check that MEPM service returns an Application Package Subscription when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.4.6.3.2 @@ -148,7 +147,7 @@ Request a specific App Package subscription Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID} -Request a specific App Package subscription using non existant subscription identifier +TC_MEC_MEC010p2_MEPM_PKGM_007_NF [Documentation] TP_MEC_MEPM_PKGM_007_NF ... Check that MEPM service sends an error when it receives a query for a subscription ... on AppPackages with a wrong identifier @@ -158,7 +157,7 @@ Request a specific App Package subscription using non existant subscription iden Check HTTP Response Status Code Is 404 -Remove a APP Package subscription +TC_MEC_MEC010p2_MEPM_PKGM_008_OK [Documentation] TP_MEC_MEPM_PKGM_008_OK ... Check that MEPM service deletes an Application Package Subscription when requested ... ETSI GS MEC 010-2 2.0.10, clause 7.4.6.3.4 @@ -168,7 +167,7 @@ Remove a APP Package subscription Check HTTP Response Body is Empty -Remove a APP Package subscription using non existant subscription id +TC_MEC_MEC010p2_MEPM_PKGM_008_NF [Documentation] TP_MEC_MEPM_PKGM_008_NF ... Check that MEPM service sends an error when it receives a deletion ... request for a subscription on AppPackages with a wrong identifier @@ -178,7 +177,7 @@ Remove a APP Package subscription using non existant subscription id Check HTTP Response Status Code Is 404 -Post Application Package Notification +TC_MEC_MEC010p2_MEPM_PKGM_009_OK [Documentation] TP_MEC_MEPM_PKGM_009_OK ... Check that the MEPM service sends a application package notification ... if the MEPM service has an associated subscription and the event is generated diff --git a/MEO/PKGM/README.md b/MEC010p2/MEPM/PKGM/README.md similarity index 100% rename from MEO/PKGM/README.md rename to MEC010p2/MEPM/PKGM/README.md diff --git a/MEPM/PKGM/environment/variables.txt b/MEC010p2/MEPM/PKGM/environment/variables.txt similarity index 100% rename from MEPM/PKGM/environment/variables.txt rename to MEC010p2/MEPM/PKGM/environment/variables.txt diff --git a/MEPM/PKGM/jsons/AppPkgSubscription.json b/MEC010p2/MEPM/PKGM/jsons/AppPkgSubscription.json similarity index 100% rename from MEPM/PKGM/jsons/AppPkgSubscription.json rename to MEC010p2/MEPM/PKGM/jsons/AppPkgSubscription.json diff --git a/MEPM/PKGM/jsons/CreateAppPackage.json b/MEC010p2/MEPM/PKGM/jsons/CreateAppPackage.json similarity index 100% rename from MEPM/PKGM/jsons/CreateAppPackage.json rename to MEC010p2/MEPM/PKGM/jsons/CreateAppPackage.json diff --git a/MEPM/PKGM/jsons/MalformedAppPkg.json b/MEC010p2/MEPM/PKGM/jsons/MalformedAppPkg.json similarity index 100% rename from MEPM/PKGM/jsons/MalformedAppPkg.json rename to MEC010p2/MEPM/PKGM/jsons/MalformedAppPkg.json diff --git a/MEPM/PKGM/jsons/MalformedAppPkgSubscription.json b/MEC010p2/MEPM/PKGM/jsons/MalformedAppPkgSubscription.json similarity index 100% rename from MEPM/PKGM/jsons/MalformedAppPkgSubscription.json rename to MEC010p2/MEPM/PKGM/jsons/MalformedAppPkgSubscription.json diff --git a/MEPM/PKGM/schemas/AppPkgSubscriptionInfo.json b/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionInfo.json similarity index 100% rename from MEPM/PKGM/schemas/AppPkgSubscriptionInfo.json rename to MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionInfo.json diff --git a/MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.json b/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.json similarity index 100% rename from MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.json rename to MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.json diff --git a/MEPM/PKGM/schemas/OnboardedAppPkgInfo.json b/MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfo.json similarity index 100% rename from MEPM/PKGM/schemas/OnboardedAppPkgInfo.json rename to MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfo.json diff --git a/MEPM/PKGM/schemas/OnboardedAppPkgInfos.json b/MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfos.json similarity index 100% rename from MEPM/PKGM/schemas/OnboardedAppPkgInfos.json rename to MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfos.json diff --git a/MEPM/PKGM/README.md b/MEC012/SRV/RNIS/README.md similarity index 100% rename from MEPM/PKGM/README.md rename to MEC012/SRV/RNIS/README.md diff --git a/SRV/RNIS/RnisNotifications.robot b/MEC012/SRV/RNIS/RnisNotifications.robot similarity index 94% rename from SRV/RNIS/RnisNotifications.robot rename to MEC012/SRV/RNIS/RnisNotifications.robot index e1b0f77..fce39e0 100644 --- a/SRV/RNIS/RnisNotifications.robot +++ b/MEC012/SRV/RNIS/RnisNotifications.robot @@ -14,8 +14,8 @@ Suite Setup Create Mock Session ${callback_uri}:${callback_port} Test Teardown Reset All Requests *** Test Cases *** -Cell change notification - [Documentation] TC_MEC_SRV_RNIS_001_OK +TC_MEC_MEC012_SRV_RNIS_001_OK + [Documentation] Cell change notification ... Check that the RNIS service sends an RNIS notification about cell change if the RNIS service has an associated subscription and the event is generated ... ETSI GS MEC 012 2.1.1, clause 6.4.2 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml @@ -33,8 +33,8 @@ Cell change notification Clear Requests ${callback_endpoint} -RAB Establishment notification - [Documentation] TC_MEC_SRV_RNIS_002_OK +TC_MEC_MEC012_SRV_RNIS_002_OK + [Documentation] RAB Establishment notification ... Check that the RNIS service sends an RNIS notification about RAB establishment if the RNIS service has an associated subscription and the event is generated ... ETSI GS MEC 012 2.1.1, clause 6.4.3 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml @@ -52,8 +52,8 @@ RAB Establishment notification Clear Requests ${callback_endpoint} -RAB modification notification - [Documentation] TC_MEC_SRV_RNIS_003_OK +TC_MEC_MEC012_SRV_RNIS_003_OK + [Documentation] RAB modification notification ... Check that the RNIS service sends an RNIS notification about RAB modification if the RNIS service has an associated subscription and the event is generated ... ETSI GS MEC 012 2.1.1, clause 6.4.4 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml @@ -71,8 +71,8 @@ RAB modification notification Clear Requests ${callback_endpoint} -RAB release notification - [Documentation] TC_MEC_SRV_RNIS_004_OK +TC_MEC_MEC012_SRV_RNIS_004_OK + [Documentation] RAB release notification ... Check that the RNIS service sends an RNIS notification about RAB release if the RNIS service has an associated subscription and the event is generated ... ETSI GS MEC 012 2.1.1, clause 6.4.5 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml @@ -90,8 +90,8 @@ RAB release notification Clear Requests ${callback_endpoint} -UE measurement notification - [Documentation] TC_MEC_SRV_RNIS_005_OK +TC_MEC_MEC012_SRV_RNIS_005_OK + [Documentation] UE measurement notification ... Check that the RNIS service sends an RNIS notification about UE measurement report if the RNIS service has an associated subscription and the event is generated ... ETSI GS MEC 012 2.1.1, clause 6.4.6 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml @@ -109,8 +109,8 @@ UE measurement notification Clear Requests ${callback_endpoint} -UE timing advance notification - [Documentation] TC_MEC_SRV_RNIS_006_OK +TC_MEC_MEC012_SRV_RNIS_006_OK + [Documentation] UE timing advance notification ... Check that the RNIS service sends an RNIS notification about UE timing advance if the RNIS service has an associated subscription and the event is generated ... ETSI GS MEC 012 2.1.1, clause 6.4.7 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml @@ -128,8 +128,8 @@ UE timing advance notification Clear Requests ${callback_endpoint} -UE carrier aggregation reconfiguration notification - [Documentation] TC_MEC_SRV_RNIS_007_OK +TC_MEC_MEC012_SRV_RNIS_007_OK + [Documentation] UE carrier aggregation reconfiguration notification ... Check that the RNIS service sends an RNIS notification about UE carrier aggregation reconfiguration if the RNIS service has an associated subscription and the event is generated ... ETSI GS MEC 012 2.1.1, clause 6.4.8 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml @@ -147,8 +147,8 @@ UE carrier aggregation reconfiguration notification Clear Requests ${callback_endpoint} -S1-U bearer notification - [Documentation] TC_MEC_SRV_RNIS_008_OK +TC_MEC_MEC012_SRV_RNIS_008_OK + [Documentation] S1-U bearer notification ... Check that the RNIS service sends an RNIS notification about S1-U bearer if the RNIS service has an associated subscription and the event is generated ... ETSI GS MEC 012 2.1.1, clause 6.4.9 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml diff --git a/SRV/RNIS/RnisQuery_BI_BO.robot b/MEC012/SRV/RNIS/RnisQuery_BI_BO.robot similarity index 91% rename from SRV/RNIS/RnisQuery_BI_BO.robot rename to MEC012/SRV/RNIS/RnisQuery_BI_BO.robot index 5729c48..b499b9e 100644 --- a/SRV/RNIS/RnisQuery_BI_BO.robot +++ b/MEC012/SRV/RNIS/RnisQuery_BI_BO.robot @@ -11,8 +11,8 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v *** Test Cases *** -Request RabInfo info using wrong parameters - [Documentation] TC_MEC_SRV_RNIS_016_BR +TC_MEC_MEC012_SRV_RNIS_016_BR + [Documentation] Request RabInfo info using wrong parameters ... Check that the RNIS service returns an error when the RAB information is requested with a malformatted message ... ETSI GS MEC 012 2.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo @@ -21,8 +21,8 @@ Request RabInfo info using wrong parameters Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 400 -Request RabInfo info using non existing cell id - [Documentation] TC_MEC_SRV_RNIS_016_BR +TC_MEC_MEC012_SRV_RNIS_016_NF + [Documentation] Request RabInfo info using non existing cell id ... Check that the RNIS service returns an error when the RAB information for a not existing element is requested ... ETSI GS MEC 012 2.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo @@ -31,8 +31,8 @@ Request RabInfo info using non existing cell id # TODO Check the returned list is empty # Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 -Request Plmn info using wrong parameters - [Documentation] TC_MEC_SRV_RNIS_017_BR +TC_MEC_MEC012_SRV_RNIS_017_BR + [Documentation] Request Plmn info using wrong parameters ... Check that the RNIS service returns an error when the PLMN information is requested with a malformatted message ... ETSI GS MEC 012 2.1.1, clause 7.4.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo @@ -41,8 +41,8 @@ Request Plmn info using wrong parameters Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 400 -Request Plmn info using non existing application id - [Documentation] TC_MEC_SRV_RNIS_017_NF +TC_MEC_MEC012_SRV_RNIS_017_NF + [Documentation] Request Plmn info using non existing application id ... Check that the RNIS service returns an error when the PLMN information for a not existing element is requested ... ETSI GS MEC 012 2.1.1, clause 7.4.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo @@ -52,8 +52,8 @@ Request Plmn info using non existing application id # Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 -Request S1Bearer info using wrong parameters - [Documentation] TC_MEC_SRV_RNIS_018_BR +TC_MEC_MEC012_SRV_RNIS_018_BR + [Documentation] Request S1Bearer info using wrong parameters ... Check that the RNIS service returns an error when the S1 bearer information is requested with a malformatted message ... ETSI GS MEC 012 2.1.1, clause 7.5.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo @@ -62,8 +62,8 @@ Request S1Bearer info using wrong parameters Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 400 -Request S1Bearer info using non existing cell id - [Documentation] TC_MEC_SRV_RNIS_018_BR +TC_MEC_MEC012_SRV_RNIS_018_NF + [Documentation] Request S1Bearer info using non existing cell id ... Check that the RNIS service returns an error when the S1 bearer information is requested with a malformatted message ... ETSI GS MEC 012 2.1.1, clause 7.5.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo @@ -73,8 +73,8 @@ Request S1Bearer info using non existing cell id #Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 -Request L2Meas info using wrong parameters - [Documentation] TC_MEC_SRV_RNIS_019_BR +TC_MEC_MEC012_SRV_RNIS_019_BR + [Documentation] Request L2Meas info using wrong parameters ... Check that the RNIS service returns an error when the L2 measurements information is requested with a malformatted message ... ETSI GS MEC 012 2.1.1, clause 7.5a.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo @@ -83,8 +83,8 @@ Request L2Meas info using wrong parameters Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 400 -Request L2Meas info using non existing cell id - [Documentation] TC_MEC_SRV_RNIS_019_BR +TC_MEC_MEC012_SRV_RNIS_019_NF + [Documentation] Request L2Meas info using non existing cell id ... Check that the RNIS service returns an error when the L2 measurements information for a not existing element is requested ... ETSI GS MEC 012 2.1.1, clause 7.5a.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo diff --git a/SRV/RNIS/RnisQuery_BV.robot b/MEC012/SRV/RNIS/RnisQuery_BV.robot similarity index 91% rename from SRV/RNIS/RnisQuery_BV.robot rename to MEC012/SRV/RNIS/RnisQuery_BV.robot index 9737aed..b7d726a 100644 --- a/SRV/RNIS/RnisQuery_BV.robot +++ b/MEC012/SRV/RNIS/RnisQuery_BV.robot @@ -11,8 +11,8 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v *** Test Cases *** -Request RabInfo info - [Documentation] TC_MEC_SRV_RNIS_016_OK +TC_MEC_MEC012_SRV_RNIS_016_OK + [Documentation] Request RabInfo info ... Check that the RNIS service returns the RAB information when requested ... ETSI GS MEC 012 2.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo @@ -22,8 +22,8 @@ Request RabInfo info Check RabInfo ${response['body']} -Request Plmn info - [Documentation] TC_MEC_SRV_RNIS_017_OK +TC_MEC_MEC012_SRV_RNIS_017_OK + [Documentation] Request Plmn info ... Check that the RNIS service returns the PLMN information when requested ... ETSI GS MEC 012 2.1.1, clause 7.4.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo @@ -33,8 +33,8 @@ Request Plmn info Check PlmnInfo ${response['body'][0]} -Request S1Bearer info - [Documentation] TC_MEC_SRV_RNIS_018_OK +TC_MEC_MEC012_SRV_RNIS_018_OK + [Documentation] Request S1Bearer info ... Check that the RNIS service returns the S1 bearer information ... ETSI GS MEC 012 2.1.1, clause 7.5.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo @@ -44,8 +44,9 @@ Request S1Bearer info #log ${response['body']} Check S1BearerInfo ${response['body']} -Request L2Meas info - [Documentation] TC_MEC_SRV_RNIS_019_OK + +TC_MEC_MEC012_SRV_RNIS_019_OK + [Documentation] Request L2Meas info ... Check that the RNIS service returns the L2 measurements information ... ETSI GS MEC 012 2.1.1, clause 7.5a.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/L2Meas diff --git a/SRV/RNIS/RnisSubscriptions_BI_BO.robot b/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot similarity index 92% rename from SRV/RNIS/RnisSubscriptions_BI_BO.robot rename to MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot index c47a5bf..94e89b1 100644 --- a/SRV/RNIS/RnisSubscriptions_BI_BO.robot +++ b/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot @@ -9,8 +9,8 @@ Resource resources/RadioNetworkInformationAPI.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false *** Test Cases *** -Request RNIS subscription list using bad parameters - [Documentation] TC_MEC_SRV_RNIS_011_BR +TC_MEC_MEC012_SRV_RNIS_011_BR + [Documentation] Request RNIS subscription list using bad parameters ... Check that the RNIS service responds with an error when it receives a request to get all RNIS subscriptions with a wrong subscription type ... ETSI GS MEC 012 2.1.1, clause 7.6.3.1 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList @@ -18,8 +18,8 @@ Request RNIS subscription list using bad parameters Check HTTP Response Status Code Is 400 -Create RNIS subscription using bad parameters - [Documentation] TC_MEC_SRV_RNIS_012_BR +TC_MEC_MEC012_SRV_RNIS_012_BR + [Documentation] Create RNIS subscription using bad parameters ... Check that the RNIS service responds with an error when it receives a request to create a new RNIS subscription with a wrong format ... ETSI GS MEC 012 2.1.1, clause 7.6.3.4 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml diff --git a/SRV/RNIS/RnisSubscriptions_BV.robot b/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot similarity index 91% rename from SRV/RNIS/RnisSubscriptions_BV.robot rename to MEC012/SRV/RNIS/RnisSubscriptions_BV.robot index 70778bd..5f66dad 100644 --- a/SRV/RNIS/RnisSubscriptions_BV.robot +++ b/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot @@ -12,8 +12,8 @@ Library String *** Test Cases *** -Request RNIS subscription list - [Documentation] TC_MEC_SRV_RNIS_011_OK +TC_MEC_MEC012_SRV_RNIS_011_OK + [Documentation] Request RNIS subscription list ... Check that the RNIS service sends the list of links to the relevant RNIS subscriptions when requested ... ETSI GS MEC 012 2.1.1, clause 7.6.3.1 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList @@ -25,8 +25,8 @@ Request RNIS subscription list # Check Subscription ${response['body']} ${SUBSCRIPTION_VALUE} -Create RNIS subscription - [Documentation] TC_MEC_SRV_RNIS_012_OK +TC_MEC_MEC012_SRV_RNIS_012_OK + [Documentation] Create RNIS subscription ... Check that the RNIS service creates a new RNIS subscription ... ETSI GS MEC 012 2.1.1, clause 7.6.3.4 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml @@ -36,8 +36,8 @@ Create RNIS subscription Check CellChangeSubscription ${response['body']} -Get an Individual RNIS subscription - [Documentation] TC_MEC_SRV_RNIS_013_OK +TC_MEC_MEC012_SRV_RNIS_013_OK + [Documentation] Get an Individual RNIS subscription ... Check that the RNIS service sends a RNIS subscription when requested ... ETSI GS MEC 012 2.1.1, clause 7.8.3.1 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml @@ -46,8 +46,8 @@ Get an Individual RNIS subscription Check HTTP Response Body Json Schema Is CellChangeSubscription -Update an Individual RNIS subscription - [Documentation] TC_MEC_SRV_RNIS_014_OK +TC_MEC_MEC012_SRV_RNIS_014_OK + [Documentation] Update an Individual RNIS subscription ... Check that the RNIS service modifies a RNIS subscription when requested ... ETSI GS MEC 012 2.1.1, clause 7.8.3.2 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml @@ -55,8 +55,9 @@ Update an Individual RNIS subscription Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is CellChangeSubscription -Remove an Individual RNIS subscription - [Documentation] TC_MEC_SRV_RNIS_015_OK + +TC_MEC_MEC012_SRV_RNIS_015_OK + [Documentation] Remove an Individual RNIS subscription ... Check that the RNIS service deletes a RNIS subscription when requested ... ETSI GS MEC 012 2.1.1, clause 7.8.3.5 ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml diff --git a/SRV/RNIS/environment/pics.txt b/MEC012/SRV/RNIS/environment/pics.txt similarity index 100% rename from SRV/RNIS/environment/pics.txt rename to MEC012/SRV/RNIS/environment/pics.txt diff --git a/SRV/RNIS/environment/variables.txt b/MEC012/SRV/RNIS/environment/variables.txt similarity index 100% rename from SRV/RNIS/environment/variables.txt rename to MEC012/SRV/RNIS/environment/variables.txt diff --git a/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json b/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json similarity index 100% rename from SRV/RNIS/jsons/CellChangeSubscriptionRequest.json rename to MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json diff --git a/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json similarity index 100% rename from SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json rename to MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json diff --git a/SRV/RNIS/resources/LocationAPI.robot b/MEC012/SRV/RNIS/resources/LocationAPI.robot similarity index 100% rename from SRV/RNIS/resources/LocationAPI.robot rename to MEC012/SRV/RNIS/resources/LocationAPI.robot diff --git a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot b/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot similarity index 100% rename from SRV/RNIS/resources/RadioNetworkInformationAPI.robot rename to MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot diff --git a/SRV/RNIS/schemas/CaReconfSubscription.schema.json b/MEC012/SRV/RNIS/schemas/CaReconfSubscription.schema.json similarity index 100% rename from SRV/RNIS/schemas/CaReconfSubscription.schema.json rename to MEC012/SRV/RNIS/schemas/CaReconfSubscription.schema.json diff --git a/SRV/RNIS/schemas/CellChangeNotification.schema.json b/MEC012/SRV/RNIS/schemas/CellChangeNotification.schema.json similarity index 100% rename from SRV/RNIS/schemas/CellChangeNotification.schema.json rename to MEC012/SRV/RNIS/schemas/CellChangeNotification.schema.json diff --git a/SRV/RNIS/schemas/CellChangeSubscription.schema.json b/MEC012/SRV/RNIS/schemas/CellChangeSubscription.schema.json similarity index 100% rename from SRV/RNIS/schemas/CellChangeSubscription.schema.json rename to MEC012/SRV/RNIS/schemas/CellChangeSubscription.schema.json diff --git a/SRV/RNIS/schemas/L2Meas.schema.json b/MEC012/SRV/RNIS/schemas/L2Meas.schema.json similarity index 100% rename from SRV/RNIS/schemas/L2Meas.schema.json rename to MEC012/SRV/RNIS/schemas/L2Meas.schema.json diff --git a/SRV/RNIS/schemas/L2MeasInfos.schema.json b/MEC012/SRV/RNIS/schemas/L2MeasInfos.schema.json similarity index 100% rename from SRV/RNIS/schemas/L2MeasInfos.schema.json rename to MEC012/SRV/RNIS/schemas/L2MeasInfos.schema.json diff --git a/SRV/RNIS/schemas/MeasRepUeNotification.schema.json b/MEC012/SRV/RNIS/schemas/MeasRepUeNotification.schema.json similarity index 100% rename from SRV/RNIS/schemas/MeasRepUeNotification.schema.json rename to MEC012/SRV/RNIS/schemas/MeasRepUeNotification.schema.json diff --git a/SRV/RNIS/schemas/MeasTaSubscription.schema.json b/MEC012/SRV/RNIS/schemas/MeasTaSubscription.schema.json similarity index 100% rename from SRV/RNIS/schemas/MeasTaSubscription.schema.json rename to MEC012/SRV/RNIS/schemas/MeasTaSubscription.schema.json diff --git a/SRV/RNIS/schemas/NrMeasRepUeSubscription.schema.json b/MEC012/SRV/RNIS/schemas/NrMeasRepUeSubscription.schema.json similarity index 100% rename from SRV/RNIS/schemas/NrMeasRepUeSubscription.schema.json rename to MEC012/SRV/RNIS/schemas/NrMeasRepUeSubscription.schema.json diff --git a/SRV/RNIS/schemas/PlmnInfo.schema.json b/MEC012/SRV/RNIS/schemas/PlmnInfo.schema.json similarity index 100% rename from SRV/RNIS/schemas/PlmnInfo.schema.json rename to MEC012/SRV/RNIS/schemas/PlmnInfo.schema.json diff --git a/SRV/RNIS/schemas/PlmnInfos.schema.json b/MEC012/SRV/RNIS/schemas/PlmnInfos.schema.json similarity index 100% rename from SRV/RNIS/schemas/PlmnInfos.schema.json rename to MEC012/SRV/RNIS/schemas/PlmnInfos.schema.json diff --git a/SRV/RNIS/schemas/RabEstNotification.schema.json b/MEC012/SRV/RNIS/schemas/RabEstNotification.schema.json similarity index 100% rename from SRV/RNIS/schemas/RabEstNotification.schema.json rename to MEC012/SRV/RNIS/schemas/RabEstNotification.schema.json diff --git a/SRV/RNIS/schemas/RabInfo.schema.json b/MEC012/SRV/RNIS/schemas/RabInfo.schema.json similarity index 100% rename from SRV/RNIS/schemas/RabInfo.schema.json rename to MEC012/SRV/RNIS/schemas/RabInfo.schema.json diff --git a/SRV/RNIS/schemas/RabInfos.schema.json b/MEC012/SRV/RNIS/schemas/RabInfos.schema.json similarity index 100% rename from SRV/RNIS/schemas/RabInfos.schema.json rename to MEC012/SRV/RNIS/schemas/RabInfos.schema.json diff --git a/SRV/RNIS/schemas/RabModNotification.schema.json b/MEC012/SRV/RNIS/schemas/RabModNotification.schema.json similarity index 100% rename from SRV/RNIS/schemas/RabModNotification.schema.json rename to MEC012/SRV/RNIS/schemas/RabModNotification.schema.json diff --git a/SRV/RNIS/schemas/RabRelNotification.schema.json b/MEC012/SRV/RNIS/schemas/RabRelNotification.schema.json similarity index 100% rename from SRV/RNIS/schemas/RabRelNotification.schema.json rename to MEC012/SRV/RNIS/schemas/RabRelNotification.schema.json diff --git a/SRV/RNIS/schemas/S1BearerInfo.schema.json b/MEC012/SRV/RNIS/schemas/S1BearerInfo.schema.json similarity index 100% rename from SRV/RNIS/schemas/S1BearerInfo.schema.json rename to MEC012/SRV/RNIS/schemas/S1BearerInfo.schema.json diff --git a/SRV/RNIS/schemas/S1BearerInfos.schema.json b/MEC012/SRV/RNIS/schemas/S1BearerInfos.schema.json similarity index 100% rename from SRV/RNIS/schemas/S1BearerInfos.schema.json rename to MEC012/SRV/RNIS/schemas/S1BearerInfos.schema.json diff --git a/SRV/RNIS/schemas/S1BearerSubscription.schema.json b/MEC012/SRV/RNIS/schemas/S1BearerSubscription.schema.json similarity index 100% rename from SRV/RNIS/schemas/S1BearerSubscription.schema.json rename to MEC012/SRV/RNIS/schemas/S1BearerSubscription.schema.json diff --git a/SRV/RNIS/schemas/SubscriptionLinkList.schema.json b/MEC012/SRV/RNIS/schemas/SubscriptionLinkList.schema.json similarity index 100% rename from SRV/RNIS/schemas/SubscriptionLinkList.schema.json rename to MEC012/SRV/RNIS/schemas/SubscriptionLinkList.schema.json diff --git a/SRV/RNIS/README.md b/MEC030/SRV/V2X/README.md similarity index 100% rename from SRV/RNIS/README.md rename to MEC030/SRV/V2X/README.md diff --git a/MEC030/VIS/V2XInformationService.robot b/MEC030/SRV/V2X/V2XInformationService.robot similarity index 99% rename from MEC030/VIS/V2XInformationService.robot rename to MEC030/SRV/V2X/V2XInformationService.robot index dc6a6d9..4814e03 100644 --- a/MEC030/VIS/V2XInformationService.robot +++ b/MEC030/SRV/V2X/V2XInformationService.robot @@ -3,8 +3,8 @@ Y''[Documentation] robot --outputdir ../../../outputs ./V2XInformationService. *** Settings *** Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem diff --git a/MEC030/VIS/environment/variables.txt b/MEC030/SRV/V2X/environment/variables.txt similarity index 100% rename from MEC030/VIS/environment/variables.txt rename to MEC030/SRV/V2X/environment/variables.txt diff --git a/MEC030/VIS/jsons/PredictedQoS.json b/MEC030/SRV/V2X/jsons/PredictedQoS.json similarity index 100% rename from MEC030/VIS/jsons/PredictedQoS.json rename to MEC030/SRV/V2X/jsons/PredictedQoS.json diff --git a/MEC030/VIS/jsons/PredictedQoS_BR.json b/MEC030/SRV/V2X/jsons/PredictedQoS_BR.json similarity index 100% rename from MEC030/VIS/jsons/PredictedQoS_BR.json rename to MEC030/SRV/V2X/jsons/PredictedQoS_BR.json diff --git a/MEC030/VIS/jsons/PredictedQoS_NF.json b/MEC030/SRV/V2X/jsons/PredictedQoS_NF.json similarity index 100% rename from MEC030/VIS/jsons/PredictedQoS_NF.json rename to MEC030/SRV/V2X/jsons/PredictedQoS_NF.json diff --git a/MEC030/VIS/jsons/ProvChgPc5Subscription.json b/MEC030/SRV/V2X/jsons/ProvChgPc5Subscription.json similarity index 100% rename from MEC030/VIS/jsons/ProvChgPc5Subscription.json rename to MEC030/SRV/V2X/jsons/ProvChgPc5Subscription.json diff --git a/MEC030/VIS/jsons/ProvChgPc5SubscriptionUpdate.json b/MEC030/SRV/V2X/jsons/ProvChgPc5SubscriptionUpdate.json similarity index 100% rename from MEC030/VIS/jsons/ProvChgPc5SubscriptionUpdate.json rename to MEC030/SRV/V2X/jsons/ProvChgPc5SubscriptionUpdate.json diff --git a/MEC030/VIS/jsons/ProvChgUuMbmsSubscription.json b/MEC030/SRV/V2X/jsons/ProvChgUuMbmsSubscription.json similarity index 100% rename from MEC030/VIS/jsons/ProvChgUuMbmsSubscription.json rename to MEC030/SRV/V2X/jsons/ProvChgUuMbmsSubscription.json diff --git a/MEC030/VIS/jsons/ProvChgUuMbmsSubscriptionUpdate.json b/MEC030/SRV/V2X/jsons/ProvChgUuMbmsSubscriptionUpdate.json similarity index 100% rename from MEC030/VIS/jsons/ProvChgUuMbmsSubscriptionUpdate.json rename to MEC030/SRV/V2X/jsons/ProvChgUuMbmsSubscriptionUpdate.json diff --git a/MEC030/VIS/jsons/ProvChgUuMbmsSubscription_BR.json b/MEC030/SRV/V2X/jsons/ProvChgUuMbmsSubscription_BR.json similarity index 100% rename from MEC030/VIS/jsons/ProvChgUuMbmsSubscription_BR.json rename to MEC030/SRV/V2X/jsons/ProvChgUuMbmsSubscription_BR.json diff --git a/MEC030/VIS/jsons/ProvChgUuUniSubscription.json b/MEC030/SRV/V2X/jsons/ProvChgUuUniSubscription.json similarity index 100% rename from MEC030/VIS/jsons/ProvChgUuUniSubscription.json rename to MEC030/SRV/V2X/jsons/ProvChgUuUniSubscription.json diff --git a/MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate.json b/MEC030/SRV/V2X/jsons/ProvChgUuUniSubscriptionUpdate.json similarity index 100% rename from MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate.json rename to MEC030/SRV/V2X/jsons/ProvChgUuUniSubscriptionUpdate.json diff --git a/MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate_BR.json b/MEC030/SRV/V2X/jsons/ProvChgUuUniSubscriptionUpdate_BR.json similarity index 100% rename from MEC030/VIS/jsons/ProvChgUuUniSubscriptionUpdate_BR.json rename to MEC030/SRV/V2X/jsons/ProvChgUuUniSubscriptionUpdate_BR.json diff --git a/MEC030/VIS/jsons/V2xMsgPublication.json b/MEC030/SRV/V2X/jsons/V2xMsgPublication.json similarity index 100% rename from MEC030/VIS/jsons/V2xMsgPublication.json rename to MEC030/SRV/V2X/jsons/V2xMsgPublication.json diff --git a/MEC030/VIS/jsons/V2xMsgPublication_BR.json b/MEC030/SRV/V2X/jsons/V2xMsgPublication_BR.json similarity index 100% rename from MEC030/VIS/jsons/V2xMsgPublication_BR.json rename to MEC030/SRV/V2X/jsons/V2xMsgPublication_BR.json diff --git a/MEC030/VIS/jsons/V2xMsgSubscription.json b/MEC030/SRV/V2X/jsons/V2xMsgSubscription.json similarity index 100% rename from MEC030/VIS/jsons/V2xMsgSubscription.json rename to MEC030/SRV/V2X/jsons/V2xMsgSubscription.json diff --git a/MEC030/VIS/jsons/V2xMsgSubscriptionUpdate.json b/MEC030/SRV/V2X/jsons/V2xMsgSubscriptionUpdate.json similarity index 100% rename from MEC030/VIS/jsons/V2xMsgSubscriptionUpdate.json rename to MEC030/SRV/V2X/jsons/V2xMsgSubscriptionUpdate.json diff --git a/MEC030/VIS/schemas/Pc5ProvisioningInfo.schema.json b/MEC030/SRV/V2X/schemas/Pc5ProvisioningInfo.schema.json similarity index 100% rename from MEC030/VIS/schemas/Pc5ProvisioningInfo.schema.json rename to MEC030/SRV/V2X/schemas/Pc5ProvisioningInfo.schema.json diff --git a/MEC030/VIS/schemas/PredictedQoS.schema.json b/MEC030/SRV/V2X/schemas/PredictedQoS.schema.json similarity index 100% rename from MEC030/VIS/schemas/PredictedQoS.schema.json rename to MEC030/SRV/V2X/schemas/PredictedQoS.schema.json diff --git a/MEC030/VIS/schemas/ProvChgPc5Subscription.schema.json b/MEC030/SRV/V2X/schemas/ProvChgPc5Subscription.schema.json similarity index 100% rename from MEC030/VIS/schemas/ProvChgPc5Subscription.schema.json rename to MEC030/SRV/V2X/schemas/ProvChgPc5Subscription.schema.json diff --git a/MEC030/VIS/schemas/ProvChgUuMbmsSubscription.schema.json b/MEC030/SRV/V2X/schemas/ProvChgUuMbmsSubscription.schema.json similarity index 100% rename from MEC030/VIS/schemas/ProvChgUuMbmsSubscription.schema.json rename to MEC030/SRV/V2X/schemas/ProvChgUuMbmsSubscription.schema.json diff --git a/MEC030/VIS/schemas/ProvChgUuUniSubscription.schema.json b/MEC030/SRV/V2X/schemas/ProvChgUuUniSubscription.schema.json similarity index 100% rename from MEC030/VIS/schemas/ProvChgUuUniSubscription.schema.json rename to MEC030/SRV/V2X/schemas/ProvChgUuUniSubscription.schema.json diff --git a/MEC030/VIS/schemas/SubscriptionLinkList.schema.json b/MEC030/SRV/V2X/schemas/SubscriptionLinkList.schema.json similarity index 100% rename from MEC030/VIS/schemas/SubscriptionLinkList.schema.json rename to MEC030/SRV/V2X/schemas/SubscriptionLinkList.schema.json diff --git a/MEC030/VIS/schemas/UuMbmsProvisioningInfo.schema.json b/MEC030/SRV/V2X/schemas/UuMbmsProvisioningInfo.schema.json similarity index 100% rename from MEC030/VIS/schemas/UuMbmsProvisioningInfo.schema.json rename to MEC030/SRV/V2X/schemas/UuMbmsProvisioningInfo.schema.json diff --git a/MEC030/VIS/schemas/UuUnicastProvisioningInfo.schema.json b/MEC030/SRV/V2X/schemas/UuUnicastProvisioningInfo.schema.json similarity index 100% rename from MEC030/VIS/schemas/UuUnicastProvisioningInfo.schema.json rename to MEC030/SRV/V2X/schemas/UuUnicastProvisioningInfo.schema.json diff --git a/MEC030/VIS/schemas/V2xMsgSubscription.schema.json b/MEC030/SRV/V2X/schemas/V2xMsgSubscription.schema.json similarity index 100% rename from MEC030/VIS/schemas/V2xMsgSubscription.schema.json rename to MEC030/SRV/V2X/schemas/V2xMsgSubscription.schema.json diff --git a/MEC030/VIS/schemas/vProvChgUuUniSubscription.schema.json b/MEC030/SRV/V2X/schemas/vProvChgUuUniSubscription.schema.json similarity index 100% rename from MEC030/VIS/schemas/vProvChgUuUniSubscription.schema.json rename to MEC030/SRV/V2X/schemas/vProvChgUuUniSubscription.schema.json -- GitLab From 22f440684f2c14468c70104daeab7ce497a81c26 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Mon, 17 May 2021 21:38:20 +0200 Subject: [PATCH 42/63] Refactor TC naming in MEC021 --- {SRV => MEC021/SRV}/AMS/AMSService.robot | 120 +++++++++--------- {SRV => MEC021/SRV}/AMS/README.md | 0 .../SRV}/AMS/environment/variables.txt | 0 3 files changed, 58 insertions(+), 62 deletions(-) rename {SRV => MEC021/SRV}/AMS/AMSService.robot (86%) rename {SRV => MEC021/SRV}/AMS/README.md (100%) rename {SRV => MEC021/SRV}/AMS/environment/variables.txt (100%) diff --git a/SRV/AMS/AMSService.robot b/MEC021/SRV/AMS/AMSService.robot similarity index 86% rename from SRV/AMS/AMSService.robot rename to MEC021/SRV/AMS/AMSService.robot index 201d736..25ed72c 100644 --- a/SRV/AMS/AMSService.robot +++ b/MEC021/SRV/AMS/AMSService.robot @@ -3,8 +3,8 @@ *** Settings *** Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot Library REST ${AMS_SCHEMA}://${AMS_HOST}:${AMS_PORT} ssl_verify=false Library BuiltIn Library OperatingSystem @@ -14,8 +14,8 @@ Library MockServerLibrary *** Test Cases *** -Request Registered AMS information - [Documentation] TP_MEC_SRV_AMS_001_OK +TC_MEC_MEC021_SRV_AMS_001_OK + [Documentation] Request Registered AMS information ... Check that the AMS service returns information about the registered application mobility services when requested ... ETSI GS MEC 021 2.0.8, clause 8.3.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -24,8 +24,8 @@ Request Registered AMS information Check HTTP Response Body Json Schema Is AppMobilityServiceInfos -Request Registered AMS information using attribute-selector - [Documentation] TP_MEC_SRV_AMS_001_OK +TC_MEC_MEC021_SRV_AMS_002_OK + [Documentation] Request Registered AMS information using attribute-selector ... Check that the AMS service returns information about the registered application mobility services when requested ... ETSI GS MEC 021 2.0.8, clause 8.3.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -35,8 +35,8 @@ Request Registered AMS information using attribute-selector Check Result Contains ${response['body']['AppMobilityServiceInfo']} appMobilityServiceId ${APP_MOBILITY_SERVICE_ID} -Request Registered AMS information using bad parameters - [Documentation] TP_MEC_SRV_AMS_001_BR +TC_MEC_MEC021_SRV_AMS_001_BR + [Documentation] Request Registered AMS information using bad parameters ... Check that the AMS service returns an error when receives a query about a registered application mobility service with wrong parameters ... ETSI GS MEC 021 2.0.8, clause 8.3.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -44,8 +44,8 @@ Request Registered AMS information using bad parameters Check HTTP Response Status Code Is 400 -Register a new application mobility services - [Documentation] TP_MEC_SRV_AMS_002_OK +TC_MEC_MEC021_SRV_AMS_003_OK + [Documentation] Register a new application mobility services ... Check that the AMS service creates a new application mobility services when requested ... ETSI GS MEC 021 2.0.8, clause 8.3.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -56,8 +56,8 @@ Register a new application mobility services Check Result Contains ${response['body']['AppMobilityServiceInfo']['registeredAppMobilityService']['serviceConsumerId']['']} appInstanceId ${APP_INS_ID} -Register an UE Identity Tag using invalid parameter - [Documentation] TP_MEC_SRV_AMS_002_BR +TC_MEC_MEC021_SRV_AMS_003_BR + [Documentation] Register an UE Identity Tag using invalid parameter ... Check that the AMS service sends an error when it receives a malformed request to create a new application mobility service ... ETSI GS MEC 021 2.0.8, clause 8.3.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -65,8 +65,8 @@ Register an UE Identity Tag using invalid parameter Check HTTP Response Status Code Is 400 -Request Subscriptions List for the registered AMS services - [Documentation] TP_MEC_SRV_AMS_003_OK +TC_MEC_MEC021_SRV_AMS_004_OK + [Documentation] Request Subscriptions List for the registered AMS services ... Check that the AMS service returns information about the available subscriptions when requested. ... Permitted SUBSCRIPTION_TYPE are: ... - MobilityProcedureSubscription @@ -79,8 +79,8 @@ Request Subscriptions List for the registered AMS services -Request Subscription List for registered AMS Services using wrong attribute parameters - [Documentation] TP_MEC_SRV_AMS_003_BR +TC_MEC_MEC021_SRV_AMS_004_BR + [Documentation] Request Subscription List for registered AMS Services using wrong attribute parameters ... Check that the AMS service sends an error when it receives a malformed query about the available subscriptions [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Get Subscriptions for registered AMS with wrong attbirube parameter @@ -88,8 +88,8 @@ Request Subscription List for registered AMS Services using wrong attribute para -Create a notification subscription - [Documentation] TP_MEC_SRV_AMS_004_OK +TC_MEC_MEC021_SRV_AMS_005_OK + [Documentation] Create a notification subscription ... Check that the AMS service creates a notification subscriptions when requested. ... Permitted SUBSCRIPTION_TYPE are: ... - MobilityProcedureSubscription @@ -101,8 +101,8 @@ Create a notification subscription Check HTTP Response Body Json Schema Is NotificationSubscription -Create a notification subscription with wrong attribute parameter - [Documentation] TP_MEC_SRV_AMS_004_BR +TC_MEC_MEC021_SRV_AMS_005_BR + [Documentation] Create a notification subscription with wrong attribute parameter ... Check that the AMS service creates a notification subscriptions when requested. ... Permitted SUBSCRIPTION_TYPE are: ... - MobilityProcedureSubscription @@ -114,8 +114,8 @@ Create a notification subscription with wrong attribute parameter -Request a specific subscription - [Documentation] TP_MEC_SRV_AMS_005_OK +TC_MEC_MEC021_SRV_AMS_006_OK + [Documentation] Request a specific subscription ... Check that the AMS service returns information about a given subscription when requested. ... Permitted SUBSCRIPTION_TYPE are: ... - MobilityProcedureSubscription @@ -128,9 +128,8 @@ Request a specific subscription - -Request a specific subscription using wrong identifier - [Documentation] TP_MEC_SRV_AMS_005_NF +TC_MEC_MEC021_SRV_AMS_006_NF + [Documentation] Request a specific subscription using wrong identifier ... Check that the AMS service returns an error when receives a query about a not existing subscription ... ETSI GS MEC 021 2.0.8, clause 8.7.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -138,9 +137,8 @@ Request a specific subscription using wrong identifier Check HTTP Response Status Code Is 404 - -Modify a specific subscription - [Documentation] TP_MEC_SRV_AMS_007_OK +TC_MEC_MEC021_SRV_AMS_007_OK + [Documentation] Modify a specific subscription ... Check that the AMS service modifies a given subscription when requested. ... Permitted SUBSCRIPTION_TYPE are: ... - MobilityProcedureSubscription @@ -153,8 +151,8 @@ Modify a specific subscription -Modify a specific subscription using malformed request - [Documentation] TP_MEC_SRV_AMS_007_BR +TC_MEC_MEC021_SRV_AMS_007_BR + [Documentation] Modify a specific subscription using malformed request ... Check that the AMS service sends an error when it receives a malformed modify request for a given subscription. ... Permitted SUBSCRIPTION_TYPE are: ... - MobilityProcedureSubscription @@ -165,8 +163,8 @@ Modify a specific subscription using malformed request Check HTTP Response Status Code Is 400 -Modify a specific subscription using wrong identifier - [Documentation] TP_MEC_SRV_AMS_007_NF +TP_MEC_MEC021_SRV_AMS_007_NF + [Documentation] Modify a specific subscription using wrong identifier ... Check that the AMS service sends an error when it receives a modify request for a not existing subscription. ... ETSI GS MEC 021 2.0.8, clause 8.7.3.2 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -174,8 +172,8 @@ Modify a specific subscription using wrong identifier Check HTTP Response Status Code Is 404 -Remove a specific subscription - [Documentation] TP_MEC_SRV_AMS_006_OK +TC_MEC_MEC021_SRV_AMS_008_OK + [Documentation] Remove a specific subscription ... Check that the AMS service deletes a given subscription when requested ... ETSI GS MEC 021 2.0.8, clause 8.7.3.5 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -183,8 +181,8 @@ Remove a specific subscription Check HTTP Response Status Code Is 204 -Remove a specific subscription using wrong identifier - [Documentation] TP_MEC_SRV_AMS_006_NF +TC_MEC_MEC021_SRV_AMS_008_NF + [Documentation] Remove a specific subscription using wrong identifier ... Check that the AMS service sends an error when it receives a delete request for a not existing subscription ... ETSI GS MEC 021 2.0.8, clause 8.7.3.5 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -192,9 +190,8 @@ Remove a specific subscription using wrong identifier Check HTTP Response Status Code Is 404 - -Post Mobility Procedure Notification - [Documentation] TP_MEC_SRV_AMS_008_OK +TC_MEC_MEC021_SRV_AMS_009_OK + [Documentation] Post Mobility Procedure Notification ... 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 ... ETSI GS MEC 021 2.0.8, clause 7.4.2 @@ -212,8 +209,8 @@ Post Mobility Procedure Notification -Post Adjacent Application Info Notification - [Documentation] TP_MEC_SRV_AMS_009_OK +TC_MEC_MEC021_SRV_AMS_010_OK + [Documentation] Post Adjacent Application Info Notification ... 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 ... ETSI GS MEC 021 2.0.8, clause 7.4.3 @@ -231,8 +228,8 @@ Post Adjacent Application Info Notification -Post Expire Notification - [Documentation] TP_MEC_SRV_AMS_010_OK +TC_MEC_MEC021_SRV_AMS_011_OK + [Documentation] Post Expire Notification ... 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 ... ETSI GS MEC 021 2.0.8, clause 7.4.4 @@ -250,8 +247,8 @@ Post Expire Notification -Request a specific AMS service - [Documentation] TP_MEC_SRV_AMS_011_OK +TC_MEC_MEC021_SRV_AMS_012_OK + [Documentation] Request a specific AMS service ... Check that the AMS service returns information about this individual application mobility service ... ETSI GS MEC 021 2.0.10, clause 8.4.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -261,8 +258,8 @@ Request a specific AMS service -Request a specific AMS Service using non existent identifier - [Documentation] TP_MEC_SRV_AMS_011_NF +TC_MEC_MEC021_SRV_AMS_012_NF + [Documentation] Request a specific AMS Service using non existent identifier ... Check that the AMS service sends an error when receives a query about a not existing individual application mobility service ... ETSI GS MEC 021 2.0.10, clause 8.4.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -271,8 +268,8 @@ Request a specific AMS Service using non existent identifier -Modify a specific AMS service - [Documentation] TP_MEC_SRV_AMS_012_OK +TC_MEC_MEC021_SRV_AMS_013_OK + [Documentation] Modify a specific AMS service ... Check that the AMS service modifies the individual application mobility service when requested ... ETSI GS MEC 021 2.0.10, clause 8.4.3.2 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -283,8 +280,8 @@ Modify a specific AMS service -Modify a specific AMS Service using non existent identifier - [Documentation] TP_MEC_SRV_AMS_012_NF +TC_MEC_MEC021_SRV_AMS_013_NF + [Documentation] Modify a specific AMS Service using non existent identifier ... Check that the AMS service sends an error when receives a request to modify a not existing individual application mobility service ... ETSI GS MEC 021 2.0.10, clause 8.4.3.2 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -292,8 +289,8 @@ Modify a specific AMS Service using non existent identifier Check HTTP Response Status Code Is 404 -Modify a specific AMS Service using bad parameters - [Documentation] TP_MEC_SRV_AMS_012_BR +TC_MEC_MEC021_SRV_AMS_013_BR + [Documentation] Modify a specific AMS Service using bad parameters ... Check that the AMS service sends an error when receives a request to modify a individual application mobility service using bad parameters ... ETSI GS MEC 021 2.0.10, clause 8.4.3.2 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -301,8 +298,8 @@ Modify a specific AMS Service using bad parameters Check HTTP Response Status Code Is 400 -Remove a specific AMS service - [Documentation] TP_MEC_SRV_AMS_013_OK +TC_MEC_MEC021_SRV_AMS_014_OK + [Documentation] Remove a specific AMS service ... Check that the AMS service de-register the individual application mobility service and delete the resource ... that represents the individual application mobility service ... ETSI GS MEC 021 2.0.10, clause 8.4.3.5 @@ -311,9 +308,8 @@ Remove a specific AMS service Check HTTP Response Status Code Is 204 - -Remove a specific AMS Service using non existent identifier - [Documentation] TP_MEC_SRV_AMS_013_NF +TC_MEC_MEC021_SRV_AMS_014_NF + [Documentation] Remove a specific AMS Service using non existent identifier ... Check that the AMS service sends an error when is requested to delete the resource ... that represents the individual application mobility service ... ETSI GS MEC 021 2.0.10, clause 8.4.3.5 @@ -323,8 +319,8 @@ Remove a specific AMS Service using non existent identifier -Request to deregister a specific AMS service - [Documentation] TP_MEC_SRV_AMS_014_OK +TC_MEC_MEC021_SRV_AMS_015_OK + [Documentation] Request to deregister a specific AMS service ... Check that the AMS service deregister an individual application mobility service on expiry of the timer associated with the service ... ETSI GS MEC 021 2.0.10, clause 8.5.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS @@ -333,8 +329,8 @@ Request to deregister a specific AMS service -Request to deregister a specific AMS service using non existent identifier - [Documentation] TP_MEC_SRV_AMS_014_NF +TC_MEC_MEC021_SRV_AMS_015_NF + [Documentation] Request to deregister a specific AMS service using non existent identifier ... Check that the AMS service send an error when is requested to deregister a not existent individual application mobility service ... ETSI GS MEC 021 2.0.10, clause 8.5.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS diff --git a/SRV/AMS/README.md b/MEC021/SRV/AMS/README.md similarity index 100% rename from SRV/AMS/README.md rename to MEC021/SRV/AMS/README.md diff --git a/SRV/AMS/environment/variables.txt b/MEC021/SRV/AMS/environment/variables.txt similarity index 100% rename from SRV/AMS/environment/variables.txt rename to MEC021/SRV/AMS/environment/variables.txt -- GitLab From b3c1bdf88646333fd6f06a4b1217361b54bd2b15 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Mon, 17 May 2021 21:44:18 +0200 Subject: [PATCH 43/63] Refactor MEC029, Fix on MEC012 --- MEC012/SRV/RNIS/RnisNotifications.robot | 4 +- MEC012/SRV/RNIS/RnisQuery_BI_BO.robot | 4 +- MEC012/SRV/RNIS/RnisQuery_BV.robot | 4 +- MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot | 4 +- MEC012/SRV/RNIS/RnisSubscriptions_BV.robot | 4 +- .../RadioNetworkInformationAPI.robot | 4 +- .../SRV}/FAIS/PlatFixedAcessInfo.robot | 56 +++++++++---------- {SRV => MEC029/SRV}/FAIS/README.md | 0 .../SRV}/FAIS/environment/variables.txt | 0 .../SRV}/FAIS/jsons/DevInfoSubscription.json | 0 .../SRV}/FAIS/jsons/OnuAlarmSubscription.json | 0 .../FAIS/jsons/OnuAlarmSubscriptionError.json | 0 .../jsons/OnuAlarmSubscriptionUpdate.json | 0 .../OnuAlarmSubscriptionUpdateError.json | 0 .../FAIS/schemas/CableLineInfo.schema.json | 0 .../schemas/DevInfoSubscription.schema.json | 0 .../SRV}/FAIS/schemas/DeviceInfo.schema.json | 0 .../SRV}/FAIS/schemas/FaInfo.schema.json | 0 .../schemas/OnuAlarmSubscription.schema.json | 0 .../SRV}/FAIS/schemas/PonInfo.schema.json | 0 .../schemas/SubscriptionLinkList.schema.json | 0 21 files changed, 40 insertions(+), 40 deletions(-) rename {SRV => MEC029/SRV}/FAIS/PlatFixedAcessInfo.robot (95%) rename {SRV => MEC029/SRV}/FAIS/README.md (100%) rename {SRV => MEC029/SRV}/FAIS/environment/variables.txt (100%) rename {SRV => MEC029/SRV}/FAIS/jsons/DevInfoSubscription.json (100%) rename {SRV => MEC029/SRV}/FAIS/jsons/OnuAlarmSubscription.json (100%) rename {SRV => MEC029/SRV}/FAIS/jsons/OnuAlarmSubscriptionError.json (100%) rename {SRV => MEC029/SRV}/FAIS/jsons/OnuAlarmSubscriptionUpdate.json (100%) rename {SRV => MEC029/SRV}/FAIS/jsons/OnuAlarmSubscriptionUpdateError.json (100%) rename {SRV => MEC029/SRV}/FAIS/schemas/CableLineInfo.schema.json (100%) rename {SRV => MEC029/SRV}/FAIS/schemas/DevInfoSubscription.schema.json (100%) rename {SRV => MEC029/SRV}/FAIS/schemas/DeviceInfo.schema.json (100%) rename {SRV => MEC029/SRV}/FAIS/schemas/FaInfo.schema.json (100%) rename {SRV => MEC029/SRV}/FAIS/schemas/OnuAlarmSubscription.schema.json (100%) rename {SRV => MEC029/SRV}/FAIS/schemas/PonInfo.schema.json (100%) rename {SRV => MEC029/SRV}/FAIS/schemas/SubscriptionLinkList.schema.json (100%) diff --git a/MEC012/SRV/RNIS/RnisNotifications.robot b/MEC012/SRV/RNIS/RnisNotifications.robot index fce39e0..6e5613d 100644 --- a/MEC012/SRV/RNIS/RnisNotifications.robot +++ b/MEC012/SRV/RNIS/RnisNotifications.robot @@ -3,8 +3,8 @@ *** Settings *** Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot Resource resources/RadioNetworkInformationAPI.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false Library BuiltIn diff --git a/MEC012/SRV/RNIS/RnisQuery_BI_BO.robot b/MEC012/SRV/RNIS/RnisQuery_BI_BO.robot index b499b9e..172fb0d 100644 --- a/MEC012/SRV/RNIS/RnisQuery_BI_BO.robot +++ b/MEC012/SRV/RNIS/RnisQuery_BI_BO.robot @@ -3,8 +3,8 @@ *** Settings *** Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot Resource resources/RadioNetworkInformationAPI.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false diff --git a/MEC012/SRV/RNIS/RnisQuery_BV.robot b/MEC012/SRV/RNIS/RnisQuery_BV.robot index b7d726a..17722be 100644 --- a/MEC012/SRV/RNIS/RnisQuery_BV.robot +++ b/MEC012/SRV/RNIS/RnisQuery_BV.robot @@ -3,8 +3,8 @@ *** Settings *** Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot Resource resources/RadioNetworkInformationAPI.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false diff --git a/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot b/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot index 94e89b1..0a05314 100644 --- a/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot +++ b/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot @@ -3,8 +3,8 @@ *** Settings *** Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot Resource resources/RadioNetworkInformationAPI.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false diff --git a/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot b/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot index 5f66dad..314c213 100644 --- a/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot +++ b/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot @@ -4,8 +4,8 @@ *** Settings *** Library OperatingSystem Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot Resource resources/RadioNetworkInformationAPI.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false Library String diff --git a/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot b/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot index fd1c4d0..51323d4 100644 --- a/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot +++ b/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot @@ -1,7 +1,7 @@ *** Settings *** Resource ../environment/variables.txt -Resource ../../../pics.txt -Resource ../../../GenericKeywords.robot +Resource ../../../../pics.txt +Resource ../../../../GenericKeywords.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false Library JSONSchemaLibrary schemas/ diff --git a/SRV/FAIS/PlatFixedAcessInfo.robot b/MEC029/SRV/FAIS/PlatFixedAcessInfo.robot similarity index 95% rename from SRV/FAIS/PlatFixedAcessInfo.robot rename to MEC029/SRV/FAIS/PlatFixedAcessInfo.robot index 852c25f..aa2b87a 100644 --- a/SRV/FAIS/PlatFixedAcessInfo.robot +++ b/MEC029/SRV/FAIS/PlatFixedAcessInfo.robot @@ -3,7 +3,8 @@ Documentation ... A test suite for validating Fixed Access Information Service (FAIS) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot +Resource ../../../pics.txt Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -15,8 +16,7 @@ Default Tags TC_MEC_SRV_FAIS *** Test Cases *** - -TC_MEC_SRV_FAIS_001_OK +TC_MEC_MEC029_SRV_FAIS_001_OK [Documentation] ... Check that the IUT responds with the current status of the fixed access information ... when queried by a MEC Application @@ -29,7 +29,7 @@ TC_MEC_SRV_FAIS_001_OK Check HTTP Response Body Json Schema Is FaInfo -TC_MEC_SRV_FAIS_001_BR +TC_MEC_MEC029_SRV_FAIS_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -41,7 +41,7 @@ TC_MEC_SRV_FAIS_001_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_FAIS_001_NF +TC_MEC_MEC029_SRV_FAIS_001_NF [Documentation] ... Check that the IUT responds with an error when ... a request for non-existing data is sent by a MEC Application @@ -53,7 +53,7 @@ TC_MEC_SRV_FAIS_001_NF Check HTTP Response Status Code Is 404 -TC_MEC_SRV_FAIS_002_OK +TC_MEC_MEC029_SRV_FAIS_002_OK [Documentation] ... Check that the IUT responds with the current status of the device information ... when queried by a MEC Application @@ -66,7 +66,7 @@ TC_MEC_SRV_FAIS_002_OK Check HTTP Response Body Json Schema Is DeviceInfo -TC_MEC_SRV_FAIS_002_BR +TC_MEC_MEC029_SRV_FAIS_002_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -78,7 +78,7 @@ TC_MEC_SRV_FAIS_002_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_FAIS_002_NF +TC_MEC_MEC029_SRV_FAIS_002_NF [Documentation] ... Check that the IUT responds with an error when ... a request for non-existing data is sent by a MEC Application @@ -90,7 +90,7 @@ TC_MEC_SRV_FAIS_002_NF Check HTTP Response Status Code Is 404 -TC_MEC_SRV_FAIS_003_OK +TC_MEC_MEC029_SRV_FAIS_003_OK [Documentation] ... Check that the IUT responds with the current status of the cable line information ... when queried by a MEC Application @@ -103,7 +103,7 @@ TC_MEC_SRV_FAIS_003_OK Check HTTP Response Body Json Schema Is CableLineInfo -TC_MEC_SRV_FAIS_003_BR +TC_MEC_MEC029_SRV_FAIS_003_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -115,7 +115,7 @@ TC_MEC_SRV_FAIS_003_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_FAIS_003_NF +TC_MEC_MEC029_SRV_FAIS_003_NF [Documentation] ... Check that the IUT responds with an error when ... a request for non-existing data is sent by a MEC Application @@ -127,7 +127,7 @@ TC_MEC_SRV_FAIS_003_NF Check HTTP Response Status Code Is 404 -TC_MEC_SRV_FAIS_004_OK +TC_MEC_MEC029_SRV_FAIS_004_OK [Documentation] ... Check that the IUT responds with the current status of the optical network information ... when queried by a MEC Application @@ -140,7 +140,7 @@ TC_MEC_SRV_FAIS_004_OK Check HTTP Response Body Json Schema Is PonInfo -TC_MEC_SRV_FAIS_004_BR +TC_MEC_MEC029_SRV_FAIS_004_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -152,7 +152,7 @@ TC_MEC_SRV_FAIS_004_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_FAIS_004_NF +TC_MEC_MEC029_SRV_FAIS_004_NF [Documentation] ... Check that the IUT responds with an error when ... a request for non-existing data is sent by a MEC Application @@ -164,7 +164,7 @@ TC_MEC_SRV_FAIS_004_NF Check HTTP Response Status Code Is 404 -TC_MEC_SRV_FAIS_005_OK +TC_MEC_MEC029_SRV_FAIS_005_OK [Documentation] ... Check that the IUT responds with the subscriptions for fixed access information notifications ... when queried by a MEC Application @@ -177,7 +177,7 @@ TC_MEC_SRV_FAIS_005_OK Check HTTP Response Body Json Schema Is SubscriptionLinkList -TC_MEC_SRV_FAIS_005_BR +TC_MEC_MEC029_SRV_FAIS_005_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -189,7 +189,7 @@ TC_MEC_SRV_FAIS_005_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_FAIS_005_NF +TC_MEC_MEC029_SRV_FAIS_005_NF [Documentation] ... Check that the IUT responds with an error when ... a request for non-existing data is sent by a MEC Application @@ -201,7 +201,7 @@ TC_MEC_SRV_FAIS_005_NF Check HTTP Response Status Code Is 404 -TC_MEC_SRV_FAIS_006_OK +TC_MEC_MEC029_SRV_FAIS_006_OK [Documentation] ... Check that the IUT acknowledges the subscription by a MEC Application ... to notifications on Optical Network Unit alarm events @@ -216,7 +216,7 @@ TC_MEC_SRV_FAIS_006_OK -TC_MEC_SRV_FAIS_006_BR +TC_MEC_MEC029_SRV_FAIS_006_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -228,7 +228,7 @@ TC_MEC_SRV_FAIS_006_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_FAIS_007_OK +TC_MEC_MEC029_SRV_FAIS_007_OK [Documentation] ... Check that the IUT responds with the information on a given subscription ... when queried by a MEC Application @@ -242,7 +242,7 @@ TC_MEC_SRV_FAIS_007_OK Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType OnuAlarmSubscription -TC_MEC_SRV_FAIS_007_NF +TC_MEC_MEC029_SRV_FAIS_007_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application @@ -254,7 +254,7 @@ TC_MEC_SRV_FAIS_007_NF Check HTTP Response Status Code Is 404 -TC_MEC_SRV_FAIS_008_OK +TC_MEC_MEC029_SRV_FAIS_008_OK [Documentation] ... Check that the IUT updates an existing subscription ... when commanded by a MEC Application @@ -268,7 +268,7 @@ TC_MEC_SRV_FAIS_008_OK Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType OnuAlarmSubscription -TC_MEC_SRV_FAIS_008_BR +TC_MEC_MEC029_SRV_FAIS_008_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -280,7 +280,7 @@ TC_MEC_SRV_FAIS_008_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_FAIS_008_NF +TC_MEC_MEC029_SRV_FAIS_008_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application @@ -292,7 +292,7 @@ TC_MEC_SRV_FAIS_008_NF Check HTTP Response Status Code Is 404 -TC_MEC_SRV_FAIS_008_PF +TC_MEC_MEC029_SRV_FAIS_008_PF [Documentation] ... Check that the IUT responds with an error when ... a request sent by a MEC Application doesn't comply with a required condition @@ -304,7 +304,7 @@ TC_MEC_SRV_FAIS_008_PF Check HTTP Response Status Code Is 412 -TC_MEC_SRV_FAIS_009_OK +TC_MEC_MEC029_SRV_FAIS_009_OK [Documentation] ... Check that the IUT cancels an existing subscription ... when commanded by a MEC Application @@ -316,7 +316,7 @@ TC_MEC_SRV_FAIS_009_OK Check HTTP Response Status Code Is 204 -TC_MEC_SRV_FAIS_010_OK +TC_MEC_MEC029_SRV_FAIS_010_OK [Documentation] ... Check that the IUT sends notification on expiry of Fixed Access Information event subscription ... to a MEC Application @@ -336,7 +336,7 @@ TC_MEC_SRV_FAIS_010_OK Clear Requests ${callback_endpoint} -TC_MEC_SRV_FAIS_011_OK +TC_MEC_MEC029_SRV_FAIS_011_OK [Documentation] ... Check that the IUT sends notifications on Fixed Access Information events ... to a subscribed MEC Application diff --git a/SRV/FAIS/README.md b/MEC029/SRV/FAIS/README.md similarity index 100% rename from SRV/FAIS/README.md rename to MEC029/SRV/FAIS/README.md diff --git a/SRV/FAIS/environment/variables.txt b/MEC029/SRV/FAIS/environment/variables.txt similarity index 100% rename from SRV/FAIS/environment/variables.txt rename to MEC029/SRV/FAIS/environment/variables.txt diff --git a/SRV/FAIS/jsons/DevInfoSubscription.json b/MEC029/SRV/FAIS/jsons/DevInfoSubscription.json similarity index 100% rename from SRV/FAIS/jsons/DevInfoSubscription.json rename to MEC029/SRV/FAIS/jsons/DevInfoSubscription.json diff --git a/SRV/FAIS/jsons/OnuAlarmSubscription.json b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscription.json similarity index 100% rename from SRV/FAIS/jsons/OnuAlarmSubscription.json rename to MEC029/SRV/FAIS/jsons/OnuAlarmSubscription.json diff --git a/SRV/FAIS/jsons/OnuAlarmSubscriptionError.json b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionError.json similarity index 100% rename from SRV/FAIS/jsons/OnuAlarmSubscriptionError.json rename to MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionError.json diff --git a/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdate.json b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdate.json similarity index 100% rename from SRV/FAIS/jsons/OnuAlarmSubscriptionUpdate.json rename to MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdate.json diff --git a/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdateError.json b/MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdateError.json similarity index 100% rename from SRV/FAIS/jsons/OnuAlarmSubscriptionUpdateError.json rename to MEC029/SRV/FAIS/jsons/OnuAlarmSubscriptionUpdateError.json diff --git a/SRV/FAIS/schemas/CableLineInfo.schema.json b/MEC029/SRV/FAIS/schemas/CableLineInfo.schema.json similarity index 100% rename from SRV/FAIS/schemas/CableLineInfo.schema.json rename to MEC029/SRV/FAIS/schemas/CableLineInfo.schema.json diff --git a/SRV/FAIS/schemas/DevInfoSubscription.schema.json b/MEC029/SRV/FAIS/schemas/DevInfoSubscription.schema.json similarity index 100% rename from SRV/FAIS/schemas/DevInfoSubscription.schema.json rename to MEC029/SRV/FAIS/schemas/DevInfoSubscription.schema.json diff --git a/SRV/FAIS/schemas/DeviceInfo.schema.json b/MEC029/SRV/FAIS/schemas/DeviceInfo.schema.json similarity index 100% rename from SRV/FAIS/schemas/DeviceInfo.schema.json rename to MEC029/SRV/FAIS/schemas/DeviceInfo.schema.json diff --git a/SRV/FAIS/schemas/FaInfo.schema.json b/MEC029/SRV/FAIS/schemas/FaInfo.schema.json similarity index 100% rename from SRV/FAIS/schemas/FaInfo.schema.json rename to MEC029/SRV/FAIS/schemas/FaInfo.schema.json diff --git a/SRV/FAIS/schemas/OnuAlarmSubscription.schema.json b/MEC029/SRV/FAIS/schemas/OnuAlarmSubscription.schema.json similarity index 100% rename from SRV/FAIS/schemas/OnuAlarmSubscription.schema.json rename to MEC029/SRV/FAIS/schemas/OnuAlarmSubscription.schema.json diff --git a/SRV/FAIS/schemas/PonInfo.schema.json b/MEC029/SRV/FAIS/schemas/PonInfo.schema.json similarity index 100% rename from SRV/FAIS/schemas/PonInfo.schema.json rename to MEC029/SRV/FAIS/schemas/PonInfo.schema.json diff --git a/SRV/FAIS/schemas/SubscriptionLinkList.schema.json b/MEC029/SRV/FAIS/schemas/SubscriptionLinkList.schema.json similarity index 100% rename from SRV/FAIS/schemas/SubscriptionLinkList.schema.json rename to MEC029/SRV/FAIS/schemas/SubscriptionLinkList.schema.json -- GitLab From 1180172adb91f3eeb3b2483e2971f431838fe4b5 Mon Sep 17 00:00:00 2001 From: Elian Kraja Date: Mon, 17 May 2021 21:57:58 +0200 Subject: [PATCH 44/63] Refactor TC naming MEC013 and MEC014 --- MEC012/SRV/RNIS/RnisSubscriptions_BV.robot | 1 - .../SRV}/RLOCLOOK/PlatRadioNodeLocation.robot | 7 +++-- {SRV => MEC013/SRV}/RLOCLOOK/README.md | 0 .../SRV}/RLOCLOOK/environment/variables.txt | 0 .../schemas/AccessPointInfo.schema.json | 0 .../schemas/AccessPointList.schema.json | 0 .../AccessPointList.schema.v1.1.1.json | 0 .../UEAREASUB/PlatUeAreaSubscription.robot | 11 ++++---- {SRV => MEC013/SRV}/UEAREASUB/README.md | 0 .../SRV}/UEAREASUB/environment/variables.txt | 0 .../jsons/CircleNotificationSubscription.json | 0 .../CircleNotificationSubscriptionError.json | 0 ...CircleNotificationSubscription.schema.json | 0 ...otificationSubscription.schema.v1.1.1.json | 0 .../NotificationSubscriptionList.schema.json | 0 .../UEDISTLOOK/PlatUeDistanceLookup.robot | 7 +++-- {SRV => MEC013/SRV}/UEDISTLOOK/README.md | 0 .../SRV}/UEDISTLOOK/environment/variables.txt | 0 .../schemas/TerminalDistance.schema.json | 0 .../TerminalDistance.schema.v1.1.1.json | 0 .../PlatUeDistanceSubscription.robot | 11 ++++---- {SRV => MEC013/SRV}/UEDISTSUB/README.md | 0 .../SRV}/UEDISTSUB/environment/variables.txt | 0 .../DistanceNotificationSubscription.json | 0 ...DistanceNotificationSubscriptionError.json | 0 ...stanceNotificationSubscription.schema.json | 0 ...otificationSubscription.schema.v1.1.1.json | 0 .../NotificationSubscriptionList.schema.json | 0 .../UEINFOLOOK/PlatUeInformationLookup.robot | 9 +++--- {SRV => MEC013/SRV}/UEINFOLOOK/README.md | 0 .../SRV}/UEINFOLOOK/environment/variables.txt | 0 .../SRV}/UEINFOLOOK/jsons/UserList.json | 0 .../UEINFOLOOK/schemas/UserList.schema.json | 0 .../PlatUeInformationSubscription.robot | 9 +++--- {SRV => MEC013/SRV}/UEINFOSUB/README.md | 0 .../SRV}/UEINFOSUB/environment/variables.txt | 0 .../jsons/ZonalTrafficSubscription.json | 0 .../jsons/ZonalTrafficSubscriptionError.json | 0 .../NotificationSubscriptionList.schema.json | 0 .../ZonalTrafficSubscription.schema.json | 0 ...onalTrafficSubscription.schema.v1.1.1.json | 0 .../SRV}/UELOCLOOK/PlatUeLocationLookup.robot | 13 +++++---- {SRV => MEC013/SRV}/UELOCLOOK/README.md | 0 .../SRV}/UELOCLOOK/environment/variables.txt | 0 .../UELOCLOOK/schemas/UserInfo.schema.json | 0 .../UELOCLOOK/schemas/UserList.schema.json | 0 .../UELOCSUB/PlatUeLocationSubscription.robot | 12 ++++---- {SRV => MEC013/SRV}/UELOCSUB/README.md | 0 .../SRV}/UELOCSUB/environment/variables.txt | 0 .../jsons/UserTrackingSubscription.json | 0 .../jsons/UserTrackingSubscriptionError.json | 0 .../NotificationSubscriptionList.schema.json | 0 .../UserTrackingSubscription.schema.json | 0 ...serTrackingSubscription.schema.v1.1.1.json | 0 .../PlatUeTrackingSubscription.robot | 11 ++++---- .../UETAG => MEC013/SRV/UETRACKSUB}/README.md | 0 .../SRV}/UETRACKSUB/environment/variables.txt | 0 .../PeriodicNotificationSubscription.json | 0 ...PeriodicNotificationSubscriptionError.json | 0 .../NotificationSubscriptionList.schema.json | 0 ...riodicNotificationSubscription.schema.json | 0 ...otificationSubscription.schema.v1.1.1.json | 0 .../ZOINFOLOOK/PlatZoneInfoLocation.robot | 9 +++--- .../SRV/ZOINFOLOOK}/README.md | 0 .../SRV}/ZOINFOLOOK/environment/variables.txt | 0 .../ZOINFOLOOK/schemas/ZoneInfo.schema.json | 0 .../ZOINFOLOOK/schemas/ZoneList.schema.json | 0 .../SRV}/UETAG/PlatUeIdentity.robot | 28 +++++++++---------- .../ZOINFOLOOK => MEC014/SRV/UETAG}/README.md | 0 .../SRV}/UETAG/environment/variables.txt | 0 .../SRV}/UETAG/resources/LocationAPI.robot | 0 .../SRV}/UETAG/resources/UEidentityAPI.robot | 4 +-- .../schemas/UeIdentityTagInfo.schema.json | 0 73 files changed, 70 insertions(+), 62 deletions(-) rename {SRV => MEC013/SRV}/RLOCLOOK/PlatRadioNodeLocation.robot (92%) rename {SRV => MEC013/SRV}/RLOCLOOK/README.md (100%) rename {SRV => MEC013/SRV}/RLOCLOOK/environment/variables.txt (100%) rename {SRV => MEC013/SRV}/RLOCLOOK/schemas/AccessPointInfo.schema.json (100%) rename {SRV => MEC013/SRV}/RLOCLOOK/schemas/AccessPointList.schema.json (100%) rename {SRV => MEC013/SRV}/RLOCLOOK/schemas/AccessPointList.schema.v1.1.1.json (100%) rename {SRV => MEC013/SRV}/UEAREASUB/PlatUeAreaSubscription.robot (93%) rename {SRV => MEC013/SRV}/UEAREASUB/README.md (100%) rename {SRV => MEC013/SRV}/UEAREASUB/environment/variables.txt (100%) rename {SRV => MEC013/SRV}/UEAREASUB/jsons/CircleNotificationSubscription.json (100%) rename {SRV => MEC013/SRV}/UEAREASUB/jsons/CircleNotificationSubscriptionError.json (100%) rename {SRV => MEC013/SRV}/UEAREASUB/schemas/CircleNotificationSubscription.schema.json (100%) rename {SRV => MEC013/SRV}/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json (100%) rename {SRV => MEC013/SRV}/UEAREASUB/schemas/NotificationSubscriptionList.schema.json (100%) rename {SRV => MEC013/SRV}/UEDISTLOOK/PlatUeDistanceLookup.robot (92%) rename {SRV => MEC013/SRV}/UEDISTLOOK/README.md (100%) rename {SRV => MEC013/SRV}/UEDISTLOOK/environment/variables.txt (100%) rename {SRV => MEC013/SRV}/UEDISTLOOK/schemas/TerminalDistance.schema.json (100%) rename {SRV => MEC013/SRV}/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json (100%) rename {SRV => MEC013/SRV}/UEDISTSUB/PlatUeDistanceSubscription.robot (92%) rename {SRV => MEC013/SRV}/UEDISTSUB/README.md (100%) rename {SRV => MEC013/SRV}/UEDISTSUB/environment/variables.txt (100%) rename {SRV => MEC013/SRV}/UEDISTSUB/jsons/DistanceNotificationSubscription.json (100%) rename {SRV => MEC013/SRV}/UEDISTSUB/jsons/DistanceNotificationSubscriptionError.json (100%) rename {SRV => MEC013/SRV}/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json (100%) rename {SRV => MEC013/SRV}/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json (100%) rename {SRV => MEC013/SRV}/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json (100%) rename {SRV => MEC013/SRV}/UEINFOLOOK/PlatUeInformationLookup.robot (92%) rename {SRV => MEC013/SRV}/UEINFOLOOK/README.md (100%) rename {SRV => MEC013/SRV}/UEINFOLOOK/environment/variables.txt (100%) rename {SRV => MEC013/SRV}/UEINFOLOOK/jsons/UserList.json (100%) rename {SRV => MEC013/SRV}/UEINFOLOOK/schemas/UserList.schema.json (100%) rename {SRV => MEC013/SRV}/UEINFOSUB/PlatUeInformationSubscription.robot (95%) rename {SRV => MEC013/SRV}/UEINFOSUB/README.md (100%) rename {SRV => MEC013/SRV}/UEINFOSUB/environment/variables.txt (100%) rename {SRV => MEC013/SRV}/UEINFOSUB/jsons/ZonalTrafficSubscription.json (100%) rename {SRV => MEC013/SRV}/UEINFOSUB/jsons/ZonalTrafficSubscriptionError.json (100%) rename {SRV => MEC013/SRV}/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json (100%) rename {SRV => MEC013/SRV}/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.json (100%) rename {SRV => MEC013/SRV}/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.v1.1.1.json (100%) rename {SRV => MEC013/SRV}/UELOCLOOK/PlatUeLocationLookup.robot (93%) rename {SRV => MEC013/SRV}/UELOCLOOK/README.md (100%) rename {SRV => MEC013/SRV}/UELOCLOOK/environment/variables.txt (100%) rename {SRV => MEC013/SRV}/UELOCLOOK/schemas/UserInfo.schema.json (100%) rename {SRV => MEC013/SRV}/UELOCLOOK/schemas/UserList.schema.json (100%) rename {SRV => MEC013/SRV}/UELOCSUB/PlatUeLocationSubscription.robot (94%) rename {SRV => MEC013/SRV}/UELOCSUB/README.md (100%) rename {SRV => MEC013/SRV}/UELOCSUB/environment/variables.txt (100%) rename {SRV => MEC013/SRV}/UELOCSUB/jsons/UserTrackingSubscription.json (100%) rename {SRV => MEC013/SRV}/UELOCSUB/jsons/UserTrackingSubscriptionError.json (100%) rename {SRV => MEC013/SRV}/UELOCSUB/schemas/NotificationSubscriptionList.schema.json (100%) rename {SRV => MEC013/SRV}/UELOCSUB/schemas/UserTrackingSubscription.schema.json (100%) rename {SRV => MEC013/SRV}/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json (100%) rename {SRV => MEC013/SRV}/UETRACKSUB/PlatUeTrackingSubscription.robot (93%) rename {SRV/UETAG => MEC013/SRV/UETRACKSUB}/README.md (100%) rename {SRV => MEC013/SRV}/UETRACKSUB/environment/variables.txt (100%) rename {SRV => MEC013/SRV}/UETRACKSUB/jsons/PeriodicNotificationSubscription.json (100%) rename {SRV => MEC013/SRV}/UETRACKSUB/jsons/PeriodicNotificationSubscriptionError.json (100%) rename {SRV => MEC013/SRV}/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json (100%) rename {SRV => MEC013/SRV}/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json (100%) rename {SRV => MEC013/SRV}/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json (100%) rename {SRV => MEC013/SRV}/ZOINFOLOOK/PlatZoneInfoLocation.robot (90%) rename {SRV/UETRACKSUB => MEC013/SRV/ZOINFOLOOK}/README.md (100%) rename {SRV => MEC013/SRV}/ZOINFOLOOK/environment/variables.txt (100%) rename {SRV => MEC013/SRV}/ZOINFOLOOK/schemas/ZoneInfo.schema.json (100%) rename {SRV => MEC013/SRV}/ZOINFOLOOK/schemas/ZoneList.schema.json (100%) rename {SRV => MEC014/SRV}/UETAG/PlatUeIdentity.robot (91%) rename {SRV/ZOINFOLOOK => MEC014/SRV/UETAG}/README.md (100%) rename {SRV => MEC014/SRV}/UETAG/environment/variables.txt (100%) rename {SRV => MEC014/SRV}/UETAG/resources/LocationAPI.robot (100%) rename {SRV => MEC014/SRV}/UETAG/resources/UEidentityAPI.robot (94%) rename {SRV => MEC014/SRV}/UETAG/schemas/UeIdentityTagInfo.schema.json (100%) diff --git a/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot b/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot index 314c213..44301fe 100644 --- a/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot +++ b/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot @@ -4,7 +4,6 @@ *** Settings *** Library OperatingSystem Resource environment/variables.txt -Resource ../../../pics.txt Resource ../../../GenericKeywords.robot Resource resources/RadioNetworkInformationAPI.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false diff --git a/SRV/RLOCLOOK/PlatRadioNodeLocation.robot b/MEC013/SRV/RLOCLOOK/PlatRadioNodeLocation.robot similarity index 92% rename from SRV/RLOCLOOK/PlatRadioNodeLocation.robot rename to MEC013/SRV/RLOCLOOK/PlatRadioNodeLocation.robot index 33979d3..11e4ced 100644 --- a/SRV/RLOCLOOK/PlatRadioNodeLocation.robot +++ b/MEC013/SRV/RLOCLOOK/PlatRadioNodeLocation.robot @@ -3,7 +3,8 @@ Documentation ... A test suite for validating Radio Node Location Lookup (RLOCLOOK) operations. -Resource ../../GenericKeywords.robot +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,7 +14,7 @@ Default Tags TC_MEC_SRV_RLOCLOOK *** Test Cases *** -TC_MEC_SRV_RLOCLOOK_001_OK +TC_MEC_MEC013_SRV_RLOCLOOK_001_OK [Documentation] ... Check that the IUT responds with the list of radio nodes currently associated with the MEC host and the location of each radio node ... when queried by a MEC Application @@ -28,7 +29,7 @@ TC_MEC_SRV_RLOCLOOK_001_OK Should Be Equal As Strings ${response['body']['accessPointList']['zoneId']} ${ZONE_ID} -TC_MEC_SRV_RLOCLOOK_001_NF +TC_MEC_MEC013_SRV_RLOCLOOK_001_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application diff --git a/SRV/RLOCLOOK/README.md b/MEC013/SRV/RLOCLOOK/README.md similarity index 100% rename from SRV/RLOCLOOK/README.md rename to MEC013/SRV/RLOCLOOK/README.md diff --git a/SRV/RLOCLOOK/environment/variables.txt b/MEC013/SRV/RLOCLOOK/environment/variables.txt similarity index 100% rename from SRV/RLOCLOOK/environment/variables.txt rename to MEC013/SRV/RLOCLOOK/environment/variables.txt diff --git a/SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json b/MEC013/SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json similarity index 100% rename from SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json rename to MEC013/SRV/RLOCLOOK/schemas/AccessPointInfo.schema.json diff --git a/SRV/RLOCLOOK/schemas/AccessPointList.schema.json b/MEC013/SRV/RLOCLOOK/schemas/AccessPointList.schema.json similarity index 100% rename from SRV/RLOCLOOK/schemas/AccessPointList.schema.json rename to MEC013/SRV/RLOCLOOK/schemas/AccessPointList.schema.json diff --git a/SRV/RLOCLOOK/schemas/AccessPointList.schema.v1.1.1.json b/MEC013/SRV/RLOCLOOK/schemas/AccessPointList.schema.v1.1.1.json similarity index 100% rename from SRV/RLOCLOOK/schemas/AccessPointList.schema.v1.1.1.json rename to MEC013/SRV/RLOCLOOK/schemas/AccessPointList.schema.v1.1.1.json diff --git a/SRV/UEAREASUB/PlatUeAreaSubscription.robot b/MEC013/SRV/UEAREASUB/PlatUeAreaSubscription.robot similarity index 93% rename from SRV/UEAREASUB/PlatUeAreaSubscription.robot rename to MEC013/SRV/UEAREASUB/PlatUeAreaSubscription.robot index 1bdc1f9..35eb117 100644 --- a/SRV/UEAREASUB/PlatUeAreaSubscription.robot +++ b/MEC013/SRV/UEAREASUB/PlatUeAreaSubscription.robot @@ -3,7 +3,8 @@ Documentation ... A test suite for validating UE Area Subscribe (UEAREASUB) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot +Resource ../../../pics.txt Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,7 +14,7 @@ Default Tags TC_MEC_SRV_UEAREASUB *** Test Cases *** -TC_MEC_SRV_UEAREASUB_001_OK +TC_MEC_MEC013_SRV_UEAREASUB_001_OK [Documentation] ... 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 @@ -30,7 +31,7 @@ TC_MEC_SRV_UEAREASUB_001_OK -TC_MEC_SRV_UEAREASUB_001_BR +TC_MEC_MEC013_SRV_UEAREASUB_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -42,7 +43,7 @@ TC_MEC_SRV_UEAREASUB_001_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_UEAREASUB_002_OK +TC_MEC_MEC013_SRV_UEAREASUB_002_OK [Documentation] ... Check that the IUT acknowledges the cancellation of UE area change notifications ... when commanded by a MEC Application @@ -54,7 +55,7 @@ TC_MEC_SRV_UEAREASUB_002_OK Check HTTP Response Status Code Is 204 -TC_MEC_SRV_UEAREASUB_002_NF +TC_MEC_MEC013_SRV_UEAREASUB_002_NF [Documentation] ... Check that the IUT responds with an error when ... a request sent by a MEC Application doesn't comply with a required condition diff --git a/SRV/UEAREASUB/README.md b/MEC013/SRV/UEAREASUB/README.md similarity index 100% rename from SRV/UEAREASUB/README.md rename to MEC013/SRV/UEAREASUB/README.md diff --git a/SRV/UEAREASUB/environment/variables.txt b/MEC013/SRV/UEAREASUB/environment/variables.txt similarity index 100% rename from SRV/UEAREASUB/environment/variables.txt rename to MEC013/SRV/UEAREASUB/environment/variables.txt diff --git a/SRV/UEAREASUB/jsons/CircleNotificationSubscription.json b/MEC013/SRV/UEAREASUB/jsons/CircleNotificationSubscription.json similarity index 100% rename from SRV/UEAREASUB/jsons/CircleNotificationSubscription.json rename to MEC013/SRV/UEAREASUB/jsons/CircleNotificationSubscription.json diff --git a/SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json b/MEC013/SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json similarity index 100% rename from SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json rename to MEC013/SRV/UEAREASUB/jsons/CircleNotificationSubscriptionError.json diff --git a/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json b/MEC013/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json similarity index 100% rename from SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json rename to MEC013/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.json diff --git a/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json b/MEC013/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json similarity index 100% rename from SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json rename to MEC013/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json diff --git a/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json similarity index 100% rename from SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json rename to MEC013/SRV/UEAREASUB/schemas/NotificationSubscriptionList.schema.json diff --git a/SRV/UEDISTLOOK/PlatUeDistanceLookup.robot b/MEC013/SRV/UEDISTLOOK/PlatUeDistanceLookup.robot similarity index 92% rename from SRV/UEDISTLOOK/PlatUeDistanceLookup.robot rename to MEC013/SRV/UEDISTLOOK/PlatUeDistanceLookup.robot index 6cc9c8d..74dc0b1 100644 --- a/SRV/UEDISTLOOK/PlatUeDistanceLookup.robot +++ b/MEC013/SRV/UEDISTLOOK/PlatUeDistanceLookup.robot @@ -3,7 +3,8 @@ Documentation ... A test suite for validating UE Distance Lookup (UEDISTLOOK) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot +Resource ../../../pics.txt Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -17,7 +18,7 @@ ${response} *** Test Cases *** -TC_MEC_SRV_UEDISTLOOK_001_OK +TC_MEC_MEC013_SRV_UEDISTLOOK_001_OK [Documentation] ... Check that the IUT responds with the distance to a UE ... when queried by a MEC Application @@ -35,7 +36,7 @@ TC_MEC_SRV_UEDISTLOOK_001_OK Check HTTP Response Body Json Schema Is TerminalDistance -TC_MEC_SRV_UEDISTLOOK_001_BR +TC_MEC_MEC013_SRV_UEDISTLOOK_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application diff --git a/SRV/UEDISTLOOK/README.md b/MEC013/SRV/UEDISTLOOK/README.md similarity index 100% rename from SRV/UEDISTLOOK/README.md rename to MEC013/SRV/UEDISTLOOK/README.md diff --git a/SRV/UEDISTLOOK/environment/variables.txt b/MEC013/SRV/UEDISTLOOK/environment/variables.txt similarity index 100% rename from SRV/UEDISTLOOK/environment/variables.txt rename to MEC013/SRV/UEDISTLOOK/environment/variables.txt diff --git a/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json b/MEC013/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json similarity index 100% rename from SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json rename to MEC013/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.json diff --git a/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json b/MEC013/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json similarity index 100% rename from SRV/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json rename to MEC013/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json diff --git a/SRV/UEDISTSUB/PlatUeDistanceSubscription.robot b/MEC013/SRV/UEDISTSUB/PlatUeDistanceSubscription.robot similarity index 92% rename from SRV/UEDISTSUB/PlatUeDistanceSubscription.robot rename to MEC013/SRV/UEDISTSUB/PlatUeDistanceSubscription.robot index 2db3839..fd3e3a5 100644 --- a/SRV/UEDISTSUB/PlatUeDistanceSubscription.robot +++ b/MEC013/SRV/UEDISTSUB/PlatUeDistanceSubscription.robot @@ -3,7 +3,8 @@ Documentation ... A test suite for validating UE Distance Subscribe (UEDISTSUB) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot +Resource ../../../pics.txt Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,7 +14,7 @@ Default Tags TC_MEC_SRV_UEDISTSUB *** Test Cases *** -TC_MEC_SRV_UEDISTSUB_001_OK +TC_MEC_MEC013_SRV_UEDISTSUB_001_OK [Documentation] ... Check that the IUT acknowledges the UE distance subscription request when commanded by a ... MEC Application and notifies it when (all) the requested UE(s) is (are) within the specified distance @@ -31,7 +32,7 @@ TC_MEC_SRV_UEDISTSUB_001_OK Check Result Contains ${response['body']['distanceNotificationSubscription']} referenceAddress ${UEDISTSUB_IP_ADDRESS} -TC_MEC_SRV_UEDISTSUB_001_BR +TC_MEC_MEC013_SRV_UEDISTSUB_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -43,7 +44,7 @@ TC_MEC_SRV_UEDISTSUB_001_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_UEDISTSUB_002_OK +TC_MEC_MEC013_SRV_UEDISTSUB_002_OK [Documentation] ... Check that the IUT acknowledges the cancellation of UE distance notifications ... when commanded by a MEC Application @@ -55,7 +56,7 @@ TC_MEC_SRV_UEDISTSUB_002_OK Check HTTP Response Status Code Is 204 -TC_MEC_SRV_UEDISTSUB_002_NF +TC_MEC_MEC013_SRV_UEDISTSUB_002_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application diff --git a/SRV/UEDISTSUB/README.md b/MEC013/SRV/UEDISTSUB/README.md similarity index 100% rename from SRV/UEDISTSUB/README.md rename to MEC013/SRV/UEDISTSUB/README.md diff --git a/SRV/UEDISTSUB/environment/variables.txt b/MEC013/SRV/UEDISTSUB/environment/variables.txt similarity index 100% rename from SRV/UEDISTSUB/environment/variables.txt rename to MEC013/SRV/UEDISTSUB/environment/variables.txt diff --git a/SRV/UEDISTSUB/jsons/DistanceNotificationSubscription.json b/MEC013/SRV/UEDISTSUB/jsons/DistanceNotificationSubscription.json similarity index 100% rename from SRV/UEDISTSUB/jsons/DistanceNotificationSubscription.json rename to MEC013/SRV/UEDISTSUB/jsons/DistanceNotificationSubscription.json diff --git a/SRV/UEDISTSUB/jsons/DistanceNotificationSubscriptionError.json b/MEC013/SRV/UEDISTSUB/jsons/DistanceNotificationSubscriptionError.json similarity index 100% rename from SRV/UEDISTSUB/jsons/DistanceNotificationSubscriptionError.json rename to MEC013/SRV/UEDISTSUB/jsons/DistanceNotificationSubscriptionError.json diff --git a/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json b/MEC013/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json similarity index 100% rename from SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json rename to MEC013/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.json diff --git a/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json b/MEC013/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json similarity index 100% rename from SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json rename to MEC013/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json diff --git a/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json similarity index 100% rename from SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json rename to MEC013/SRV/UEDISTSUB/schemas/NotificationSubscriptionList.schema.json diff --git a/SRV/UEINFOLOOK/PlatUeInformationLookup.robot b/MEC013/SRV/UEINFOLOOK/PlatUeInformationLookup.robot similarity index 92% rename from SRV/UEINFOLOOK/PlatUeInformationLookup.robot rename to MEC013/SRV/UEINFOLOOK/PlatUeInformationLookup.robot index be0e30e..2f12c91 100644 --- a/SRV/UEINFOLOOK/PlatUeInformationLookup.robot +++ b/MEC013/SRV/UEINFOLOOK/PlatUeInformationLookup.robot @@ -3,7 +3,8 @@ Documentation ... A test suite for validating UE Information Lookup (UEINFOLOOK) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot +Resource ../../../pics.txt Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,7 +14,7 @@ Default Tags TC_MEC_SRV_UEINFOLOOK *** Test Cases *** -TC_MEC_SRV_UEINFOLOOK_001_OK +TC_MEC_MEC013_SRV_UEINFOLOOK_001_OK [Documentation] ... Check that the IUT responds with the information pertaining to one or more UEs in a particular location ... when queried by a MEC Application @@ -27,7 +28,7 @@ TC_MEC_SRV_UEINFOLOOK_001_OK Check HTTP Response Body Json Schema Is UserList -TC_MEC_SRV_UEINFOLOOK_001_BR +TC_MEC_MEC013_SRV_UEINFOLOOK_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -39,7 +40,7 @@ TC_MEC_SRV_UEINFOLOOK_001_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_UEINFOLOOK_001_NF +TC_MEC_MEC013_SRV_UEINFOLOOK_001_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application diff --git a/SRV/UEINFOLOOK/README.md b/MEC013/SRV/UEINFOLOOK/README.md similarity index 100% rename from SRV/UEINFOLOOK/README.md rename to MEC013/SRV/UEINFOLOOK/README.md diff --git a/SRV/UEINFOLOOK/environment/variables.txt b/MEC013/SRV/UEINFOLOOK/environment/variables.txt similarity index 100% rename from SRV/UEINFOLOOK/environment/variables.txt rename to MEC013/SRV/UEINFOLOOK/environment/variables.txt diff --git a/SRV/UEINFOLOOK/jsons/UserList.json b/MEC013/SRV/UEINFOLOOK/jsons/UserList.json similarity index 100% rename from SRV/UEINFOLOOK/jsons/UserList.json rename to MEC013/SRV/UEINFOLOOK/jsons/UserList.json diff --git a/SRV/UEINFOLOOK/schemas/UserList.schema.json b/MEC013/SRV/UEINFOLOOK/schemas/UserList.schema.json similarity index 100% rename from SRV/UEINFOLOOK/schemas/UserList.schema.json rename to MEC013/SRV/UEINFOLOOK/schemas/UserList.schema.json diff --git a/SRV/UEINFOSUB/PlatUeInformationSubscription.robot b/MEC013/SRV/UEINFOSUB/PlatUeInformationSubscription.robot similarity index 95% rename from SRV/UEINFOSUB/PlatUeInformationSubscription.robot rename to MEC013/SRV/UEINFOSUB/PlatUeInformationSubscription.robot index dff29f7..2431cb4 100644 --- a/SRV/UEINFOSUB/PlatUeInformationSubscription.robot +++ b/MEC013/SRV/UEINFOSUB/PlatUeInformationSubscription.robot @@ -3,7 +3,8 @@ Documentation ... A test suite for validating UE Information Subscription (UEINFOSUB) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot +Resource ../../../pics.txt Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,7 +14,7 @@ Default Tags TC_MEC_SRV_UEINFOSUB *** Test Cases *** -TC_MEC_SRV_UEINFOSUB_001_OK +TC_MEC_MEC013_SRV_UEINFOSUB_001_OK [Documentation] ... Check that the IUT acknowledges the UE information change subscription request ... when commanded by a MEC Application and notifies it when the location changes @@ -30,7 +31,7 @@ TC_MEC_SRV_UEINFOSUB_001_OK Should Be Equal As Strings ${response['body']['zonalTrafficSubscription']['callbackReference']} ${ZONAL_TRAF_NOTIF_CALLBACK_URI} -TC_MEC_SRV_UEINFOSUB_001_BR +TC_MEC_MEC013_SRV_UEINFOSUB_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -43,7 +44,7 @@ TC_MEC_SRV_UEINFOSUB_001_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_UEINFOSUB_002_OK +TC_MEC_MEC013_SRV_UEINFOSUB_002_OK [Documentation] ... Check that the IUT acknowledges the cancellation of UE information change notifications ... when commanded by a MEC Application diff --git a/SRV/UEINFOSUB/README.md b/MEC013/SRV/UEINFOSUB/README.md similarity index 100% rename from SRV/UEINFOSUB/README.md rename to MEC013/SRV/UEINFOSUB/README.md diff --git a/SRV/UEINFOSUB/environment/variables.txt b/MEC013/SRV/UEINFOSUB/environment/variables.txt similarity index 100% rename from SRV/UEINFOSUB/environment/variables.txt rename to MEC013/SRV/UEINFOSUB/environment/variables.txt diff --git a/SRV/UEINFOSUB/jsons/ZonalTrafficSubscription.json b/MEC013/SRV/UEINFOSUB/jsons/ZonalTrafficSubscription.json similarity index 100% rename from SRV/UEINFOSUB/jsons/ZonalTrafficSubscription.json rename to MEC013/SRV/UEINFOSUB/jsons/ZonalTrafficSubscription.json diff --git a/SRV/UEINFOSUB/jsons/ZonalTrafficSubscriptionError.json b/MEC013/SRV/UEINFOSUB/jsons/ZonalTrafficSubscriptionError.json similarity index 100% rename from SRV/UEINFOSUB/jsons/ZonalTrafficSubscriptionError.json rename to MEC013/SRV/UEINFOSUB/jsons/ZonalTrafficSubscriptionError.json diff --git a/SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json similarity index 100% rename from SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json rename to MEC013/SRV/UEINFOSUB/schemas/NotificationSubscriptionList.schema.json diff --git a/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.json b/MEC013/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.json similarity index 100% rename from SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.json rename to MEC013/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.json diff --git a/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.v1.1.1.json b/MEC013/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.v1.1.1.json similarity index 100% rename from SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.v1.1.1.json rename to MEC013/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.v1.1.1.json diff --git a/SRV/UELOCLOOK/PlatUeLocationLookup.robot b/MEC013/SRV/UELOCLOOK/PlatUeLocationLookup.robot similarity index 93% rename from SRV/UELOCLOOK/PlatUeLocationLookup.robot rename to MEC013/SRV/UELOCLOOK/PlatUeLocationLookup.robot index d9bcf03..fbe9841 100644 --- a/SRV/UELOCLOOK/PlatUeLocationLookup.robot +++ b/MEC013/SRV/UELOCLOOK/PlatUeLocationLookup.robot @@ -3,7 +3,8 @@ Documentation ... A test suite for validating UE Location Lookup (UELOCLOOK) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot +Resource ../../../pics.txt Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -15,7 +16,7 @@ ${response} *** Test Cases *** -TC_MEC_SRV_UELOCLOOK_001_OK +TC_MEC_MEC013_SRV_UELOCLOOK_001_OK [Documentation] ... Check that the IUT responds with a list for the location of User Equipments ... when queried by a MEC Application @@ -29,7 +30,7 @@ TC_MEC_SRV_UELOCLOOK_001_OK Check HTTP Response Body Json Schema Is UserList Check Result Contains ${response['body']['userList']['user']} zoneId ${ZONE_ID} -TC_MEC_SRV_UELOCLOOK_001_BR +TC_MEC_MEC013_SRV_UELOCLOOK_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -40,7 +41,7 @@ TC_MEC_SRV_UELOCLOOK_001_BR Get list of user equipments z0n3 ${ZONE_ID} Check HTTP Response Status Code Is 400 -TC_MEC_SRV_UELOCLOOK_001_NF +TC_MEC_MEC013_SRV_UELOCLOOK_001_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application @@ -51,7 +52,7 @@ TC_MEC_SRV_UELOCLOOK_001_NF Get list of user equipments zoneId ${NON_EXISTENT_ZONE_ID} Check HTTP Response Status Code Is 200 -TC_MEC_SRV_UELOCLOOK_002_OK +TC_MEC_MEC013_SRV_UELOCLOOK_002_OK [Documentation] ... Check that the IUT responds with a User Equipment information ... when queried by a MEC Application @@ -66,7 +67,7 @@ TC_MEC_SRV_UELOCLOOK_002_OK # Check HTTP Response Body Json Schema Is UserInfo -TC_MEC_SRV_UELOCLOOK_002_NF +TC_MEC_MEC013_SRV_UELOCLOOK_002_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application diff --git a/SRV/UELOCLOOK/README.md b/MEC013/SRV/UELOCLOOK/README.md similarity index 100% rename from SRV/UELOCLOOK/README.md rename to MEC013/SRV/UELOCLOOK/README.md diff --git a/SRV/UELOCLOOK/environment/variables.txt b/MEC013/SRV/UELOCLOOK/environment/variables.txt similarity index 100% rename from SRV/UELOCLOOK/environment/variables.txt rename to MEC013/SRV/UELOCLOOK/environment/variables.txt diff --git a/SRV/UELOCLOOK/schemas/UserInfo.schema.json b/MEC013/SRV/UELOCLOOK/schemas/UserInfo.schema.json similarity index 100% rename from SRV/UELOCLOOK/schemas/UserInfo.schema.json rename to MEC013/SRV/UELOCLOOK/schemas/UserInfo.schema.json diff --git a/SRV/UELOCLOOK/schemas/UserList.schema.json b/MEC013/SRV/UELOCLOOK/schemas/UserList.schema.json similarity index 100% rename from SRV/UELOCLOOK/schemas/UserList.schema.json rename to MEC013/SRV/UELOCLOOK/schemas/UserList.schema.json diff --git a/SRV/UELOCSUB/PlatUeLocationSubscription.robot b/MEC013/SRV/UELOCSUB/PlatUeLocationSubscription.robot similarity index 94% rename from SRV/UELOCSUB/PlatUeLocationSubscription.robot rename to MEC013/SRV/UELOCSUB/PlatUeLocationSubscription.robot index cc65754..ec1cbae 100644 --- a/SRV/UELOCSUB/PlatUeLocationSubscription.robot +++ b/MEC013/SRV/UELOCSUB/PlatUeLocationSubscription.robot @@ -3,8 +3,8 @@ Documentation ... A test suite for validating UE Location Subscription (UELOCSUB) operations. - -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot +Resource ../../../pics.txt Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -17,7 +17,7 @@ ${response} *** Test Cases *** -TC_MEC_SRV_UELOCSUB_001_OK +TC_MEC_MEC013_SRV_UELOCSUB_001_OK [Documentation] ... Check that the IUT acknowledges the UE location change subscription request ... when commanded by a MEC Application and notifies it when the location changes @@ -47,7 +47,7 @@ TC_MEC_SRV_UELOCSUB_001_OK # ; # to the MEC_APP entity -TC_MEC_SRV_UELOCSUB_001_BR +TC_MEC_MEC013_SRV_UELOCSUB_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -59,7 +59,7 @@ TC_MEC_SRV_UELOCSUB_001_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_UELOCSUB_002_OK +TC_MEC_MEC013_SRV_UELOCSUB_002_OK [Documentation] ... Check that the IUT acknowledges the cancellation of UE location change notifications ... when commanded by a MEC Application @@ -71,7 +71,7 @@ TC_MEC_SRV_UELOCSUB_002_OK Check HTTP Response Status Code Is 204 -TC_MEC_SRV_UELOCSUB_002_NF +TC_MEC_MEC013_SRV_UELOCSUB_002_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application diff --git a/SRV/UELOCSUB/README.md b/MEC013/SRV/UELOCSUB/README.md similarity index 100% rename from SRV/UELOCSUB/README.md rename to MEC013/SRV/UELOCSUB/README.md diff --git a/SRV/UELOCSUB/environment/variables.txt b/MEC013/SRV/UELOCSUB/environment/variables.txt similarity index 100% rename from SRV/UELOCSUB/environment/variables.txt rename to MEC013/SRV/UELOCSUB/environment/variables.txt diff --git a/SRV/UELOCSUB/jsons/UserTrackingSubscription.json b/MEC013/SRV/UELOCSUB/jsons/UserTrackingSubscription.json similarity index 100% rename from SRV/UELOCSUB/jsons/UserTrackingSubscription.json rename to MEC013/SRV/UELOCSUB/jsons/UserTrackingSubscription.json diff --git a/SRV/UELOCSUB/jsons/UserTrackingSubscriptionError.json b/MEC013/SRV/UELOCSUB/jsons/UserTrackingSubscriptionError.json similarity index 100% rename from SRV/UELOCSUB/jsons/UserTrackingSubscriptionError.json rename to MEC013/SRV/UELOCSUB/jsons/UserTrackingSubscriptionError.json diff --git a/SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json similarity index 100% rename from SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json rename to MEC013/SRV/UELOCSUB/schemas/NotificationSubscriptionList.schema.json diff --git a/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json b/MEC013/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json similarity index 100% rename from SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json rename to MEC013/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.json diff --git a/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json b/MEC013/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json similarity index 100% rename from SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json rename to MEC013/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json diff --git a/SRV/UETRACKSUB/PlatUeTrackingSubscription.robot b/MEC013/SRV/UETRACKSUB/PlatUeTrackingSubscription.robot similarity index 93% rename from SRV/UETRACKSUB/PlatUeTrackingSubscription.robot rename to MEC013/SRV/UETRACKSUB/PlatUeTrackingSubscription.robot index 76ff34a..4d571c1 100644 --- a/SRV/UETRACKSUB/PlatUeTrackingSubscription.robot +++ b/MEC013/SRV/UETRACKSUB/PlatUeTrackingSubscription.robot @@ -3,7 +3,8 @@ Documentation ... A test suite for validating UE Tracking Subscribe (UETRACKSUB) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot +Resource ../../../pics.txt Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,7 +14,7 @@ Default Tags TC_MEC_SRV_UETRACKSUB *** Test Cases *** -TC_MEC_SRV_UETRACKSUB_001_OK +TC_MEC_MEC013_SRV_UETRACKSUB_001_OK [Documentation] ... 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 @@ -43,7 +44,7 @@ TC_MEC_SRV_UETRACKSUB_001_OK # ; -TC_MEC_SRV_UETRACKSUB_001_BR +TC_MEC_MEC013_SRV_UETRACKSUB_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application @@ -56,7 +57,7 @@ TC_MEC_SRV_UETRACKSUB_001_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_UETRACKSUB_002_OK +TC_MEC_MEC013_SRV_UETRACKSUB_002_OK [Documentation] ... Check that the IUT acknowledges the cancellation of UE tracking notifications ... when commanded by a MEC Application @@ -68,7 +69,7 @@ TC_MEC_SRV_UETRACKSUB_002_OK Check HTTP Response Status Code Is 204 -TC_MEC_SRV_UETRACKSUB_002_NF +TC_MEC_MEC013_SRV_UETRACKSUB_002_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application diff --git a/SRV/UETAG/README.md b/MEC013/SRV/UETRACKSUB/README.md similarity index 100% rename from SRV/UETAG/README.md rename to MEC013/SRV/UETRACKSUB/README.md diff --git a/SRV/UETRACKSUB/environment/variables.txt b/MEC013/SRV/UETRACKSUB/environment/variables.txt similarity index 100% rename from SRV/UETRACKSUB/environment/variables.txt rename to MEC013/SRV/UETRACKSUB/environment/variables.txt diff --git a/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscription.json b/MEC013/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscription.json similarity index 100% rename from SRV/UETRACKSUB/jsons/PeriodicNotificationSubscription.json rename to MEC013/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscription.json diff --git a/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscriptionError.json b/MEC013/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscriptionError.json similarity index 100% rename from SRV/UETRACKSUB/jsons/PeriodicNotificationSubscriptionError.json rename to MEC013/SRV/UETRACKSUB/jsons/PeriodicNotificationSubscriptionError.json diff --git a/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json b/MEC013/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json similarity index 100% rename from SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json rename to MEC013/SRV/UETRACKSUB/schemas/NotificationSubscriptionList.schema.json diff --git a/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json b/MEC013/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json similarity index 100% rename from SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json rename to MEC013/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.json diff --git a/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json b/MEC013/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json similarity index 100% rename from SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json rename to MEC013/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json diff --git a/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot b/MEC013/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot similarity index 90% rename from SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot rename to MEC013/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot index 13f2080..df20a25 100644 --- a/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot +++ b/MEC013/SRV/ZOINFOLOOK/PlatZoneInfoLocation.robot @@ -3,7 +3,8 @@ Documentation ... A test suite for validating Radio Node Location Lookup (RLOCLOOK) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot +Resource ../../../pics.txt Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,7 +14,7 @@ Default Tags TC_MEC_SRV_RLOCLOOK *** Test Cases *** -TC_MEC_SRV_ZOINFOLOOK_001_OK +TC_MEC_MEC013_SRV_ZOINFOLOOK_001_OK [Documentation] ... TO BE COMPLETED @@ -23,7 +24,7 @@ TC_MEC_SRV_ZOINFOLOOK_001_OK Check HTTP Response Body Json Schema Is ZoneList -TC_MEC_SRV_ZOINFOLOOK_002_OK +TC_MEC_MEC013_SRV_ZOINFOLOOK_002_OK [Documentation] ... TO BE CMPLETED @@ -33,7 +34,7 @@ TC_MEC_SRV_ZOINFOLOOK_002_OK Check HTTP Response Body Json Schema Is ZoneInfo Should Be Equal As Strings ${response['body']['zoneInfo']['zoneId']} ${ZONE_ID} -TC_MEC_SRV_ZOINFOLOOK_002_NF +TC_MEC_MEC013_SRV_ZOINFOLOOK_002_NF [Documentation] ... TO BE CMPLETED diff --git a/SRV/UETRACKSUB/README.md b/MEC013/SRV/ZOINFOLOOK/README.md similarity index 100% rename from SRV/UETRACKSUB/README.md rename to MEC013/SRV/ZOINFOLOOK/README.md diff --git a/SRV/ZOINFOLOOK/environment/variables.txt b/MEC013/SRV/ZOINFOLOOK/environment/variables.txt similarity index 100% rename from SRV/ZOINFOLOOK/environment/variables.txt rename to MEC013/SRV/ZOINFOLOOK/environment/variables.txt diff --git a/SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json b/MEC013/SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json similarity index 100% rename from SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json rename to MEC013/SRV/ZOINFOLOOK/schemas/ZoneInfo.schema.json diff --git a/SRV/ZOINFOLOOK/schemas/ZoneList.schema.json b/MEC013/SRV/ZOINFOLOOK/schemas/ZoneList.schema.json similarity index 100% rename from SRV/ZOINFOLOOK/schemas/ZoneList.schema.json rename to MEC013/SRV/ZOINFOLOOK/schemas/ZoneList.schema.json diff --git a/SRV/UETAG/PlatUeIdentity.robot b/MEC014/SRV/UETAG/PlatUeIdentity.robot similarity index 91% rename from SRV/UETAG/PlatUeIdentity.robot rename to MEC014/SRV/UETAG/PlatUeIdentity.robot index 2a440b4..c9cdc4c 100644 --- a/SRV/UETAG/PlatUeIdentity.robot +++ b/MEC014/SRV/UETAG/PlatUeIdentity.robot @@ -3,16 +3,16 @@ *** Settings *** Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot Resource resources/UEidentityAPI.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false *** Test Cases *** -Request UE Identity Tag information - [Documentation] TC_MEC_SRV_UETAG_001_OK +TC_MEC_MEC014_SRV_UETAG_001_OK + [Documentation] Request UE Identity Tag information ... Check that the IUT responds with the information on a UE Identity tag when queried by a MEC Application ... Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo @@ -22,8 +22,8 @@ Request UE Identity Tag information Check Result Contains ${response['body']['ueIdentityTagInfo']['ueIdentityTags']} ueIdentityTag ${UE_IDENTITY_TAG} -Request UE Identity Tag information using bad parameters - [Documentation] TC_MEC_SRV_UETAG_001_BR +TC_MEC_MEC014_SRV_UETAG_001_BR + [Documentation] Request UE Identity Tag information using bad parameters ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application ... Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo @@ -33,8 +33,8 @@ Request UE Identity Tag information using bad parameters -Request UE Identity Tag information using non-existent application instance - [Documentation] TC_MEC_SRV_UETAG_001_NF +TC_MEC_MEC014_SRV_UETAG_001_NF + [Documentation] Request UE Identity Tag information using non-existent application instance ... 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 ... Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo @@ -43,8 +43,8 @@ Request UE Identity Tag information using non-existent application instance Check ProblemDetails 404 -Register an UE Identity Tag - [Documentation] TP_MEC_SRV_UETAG_002_OK +TC_MEC_MEC014_SRV_UETAG_002_OK + [Documentation] Register an UE Identity Tag ... Check that the IUT registers a tag (representing a UE) or a list of tags when commanded by a MEC Application ... Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.2 ... Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo @@ -55,8 +55,8 @@ Register an UE Identity Tag Check User Identity Tag state ${UE_IDENTITY_TAG} REGISTERED -Register an UE Identity Tag using invalid state - [Documentation] TP_MEC_SRV_UETAG_002_BR +TC_MEC_MEC014_SRV_UETAG_002_BR + [Documentation] Register an UE Identity Tag using invalid state ... Check that the IUT responds with an error when an unauthorised request is sent by a MEC Application ... Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.2 ... Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo @@ -65,8 +65,8 @@ Register an UE Identity Tag using invalid state Check ProblemDetails 400 -Unregister an UE Identity Tag already in unregistered state - [Documentation] TP_MEC_SRV_UETAG_002_PF +TC_MEC_MEC014_SRV_UETAG_002_PF + [Documentation] Unregister an UE Identity Tag already in unregistered state ... Check that the IUT responds with ProblemDetails on information an invalid URI ... Reference ETSI GS MEC 014 V1.1.1, clause 7.3.3.2 ... Reference https://forge.etsi.org/gitlab/mec/gs014-ue-identity-api/blob/master/UEidentityAPI.yaml#/definitions/UeIdentityTagInfo diff --git a/SRV/ZOINFOLOOK/README.md b/MEC014/SRV/UETAG/README.md similarity index 100% rename from SRV/ZOINFOLOOK/README.md rename to MEC014/SRV/UETAG/README.md diff --git a/SRV/UETAG/environment/variables.txt b/MEC014/SRV/UETAG/environment/variables.txt similarity index 100% rename from SRV/UETAG/environment/variables.txt rename to MEC014/SRV/UETAG/environment/variables.txt diff --git a/SRV/UETAG/resources/LocationAPI.robot b/MEC014/SRV/UETAG/resources/LocationAPI.robot similarity index 100% rename from SRV/UETAG/resources/LocationAPI.robot rename to MEC014/SRV/UETAG/resources/LocationAPI.robot diff --git a/SRV/UETAG/resources/UEidentityAPI.robot b/MEC014/SRV/UETAG/resources/UEidentityAPI.robot similarity index 94% rename from SRV/UETAG/resources/UEidentityAPI.robot rename to MEC014/SRV/UETAG/resources/UEidentityAPI.robot index 7fa25a1..1cb3e49 100644 --- a/SRV/UETAG/resources/UEidentityAPI.robot +++ b/MEC014/SRV/UETAG/resources/UEidentityAPI.robot @@ -1,7 +1,7 @@ *** Settings *** Resource ../environment/variables.txt -Resource ../../../pics.txt -Resource ../../../GenericKeywords.robot +Resource ../../../../pics.txt +Resource ../../../../GenericKeywords.robot Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false Library JSONSchemaLibrary schemas/ diff --git a/SRV/UETAG/schemas/UeIdentityTagInfo.schema.json b/MEC014/SRV/UETAG/schemas/UeIdentityTagInfo.schema.json similarity index 100% rename from SRV/UETAG/schemas/UeIdentityTagInfo.schema.json rename to MEC014/SRV/UETAG/schemas/UeIdentityTagInfo.schema.json -- GitLab From 9abf762a922751b4ed2c9407833529fdd4205fa2 Mon Sep 17 00:00:00 2001 From: piscione Date: Tue, 25 May 2021 14:53:45 +0200 Subject: [PATCH 45/63] Fixes on MEC015 and MEC030 test cases. --- .../SRV/MTS/MultiAccessTrafficSteering.robot | 8 +- MEC015/SRV/MTS/environment/variables.txt | 2 +- MEC015/SRV/TM/TrafficManagement.robot | 18 +-- MEC015/SRV/TM/jsons/BwInfoDeltas.json | 2 +- MEC015/SRV/TM/schemas/BwInfoDelta.schema.json | 127 ++++++++++++++++++ MEC030/SRV/V2X/V2XInformationService.robot | 84 +++++++----- .../jsons/ProvChgUuMbmsSubscription_BR.json | 4 +- 7 files changed, 183 insertions(+), 62 deletions(-) create mode 100644 MEC015/SRV/TM/schemas/BwInfoDelta.schema.json diff --git a/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot b/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot index ce819b5..fa054b6 100644 --- a/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot +++ b/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot @@ -27,7 +27,8 @@ TP_MEC_MEC015_SRV_MTS_002_OK ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application ... ETSI GS MEC 015 V2.1.1, clause 9.5.3.1 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml - Retrieve MTS session list information + #Retrieve MTS session list information + Retrieve MTS session list information using filter ${CORRECT_FILTER} ${SESSION_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsSessionInfo FOR ${mstSessionInfo} IN @{response['body']} @@ -119,7 +120,7 @@ TP_MEC_MEC015_SRV_MTS_004_OK Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsSessionInfo Should Be Equal As Strings ${response['body']['appInsId']} ${APP_INSTANCE_ID} - Should Be Equal As Strings ${response['body']['requestType']} ${REQUEST_TYPE_SESSION} + Should Be Equal As Strings ${response['body']['requestType']} ${REQUEST_TYPE_APPLICATION} Should Be Equal As Strings ${response['body']['mtsMode']} ${MTS_LOW_MODE_COST} Should Be Equal As Strings ${response['body']['trafficDirection']} ${TRAFFIC_DIRECTION_DL} @@ -189,9 +190,6 @@ TP_MEC_MEC015_SRV_MTS_006_OK Unregister from the MTS Service ${SESSION_ID} Check HTTP Response Status Code Is 204 -##TP_MEC_MEC015_SRV_MTS_006_BR missing. -#See issues https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/11 for further details. - TP_MEC_MEC015_SRV_MTS_006_NF [Documentation] ... Check that the IUT deregisters a MTS session when commanded by a MEC Application diff --git a/MEC015/SRV/MTS/environment/variables.txt b/MEC015/SRV/MTS/environment/variables.txt index cceeac3..3a0e17f 100644 --- a/MEC015/SRV/MTS/environment/variables.txt +++ b/MEC015/SRV/MTS/environment/variables.txt @@ -19,6 +19,6 @@ ${SESSION_ID} 1 ${WRONG_SESSION_ID} WRONG_SESSION_ID ${NOT_EXISTING_SESSION_ID} NOT_EXISTING_SESSION_ID -${REQUEST_TYPE_SESSION} 0 +${REQUEST_TYPE_APPLICATION} 1 ${MTS_LOW_MODE_COST} 0 ${TRAFFIC_DIRECTION_DL} 00 diff --git a/MEC015/SRV/TM/TrafficManagement.robot b/MEC015/SRV/TM/TrafficManagement.robot index 21f4779..323dc06 100644 --- a/MEC015/SRV/TM/TrafficManagement.robot +++ b/MEC015/SRV/TM/TrafficManagement.robot @@ -170,12 +170,12 @@ TP_MEC_MEC015_SRV_TM_006_OK # Preamble Register Bandwidth Management Service Application specific BwInfoApplicationSpecific # Test body - ${path} Catenate SEPARATOR= jsons/ BwInfoUpdate.json + ${path} Catenate SEPARATOR= jsons/ BwInfoDeltas.json ${body} Get File ${path} ${json_object}= Evaluate json.loads('''${body}''') json Request a deltas changes ${ALLOCATION_ID} ${body} Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is BwInfo + Check HTTP Response Body Json Schema Is BwInfoDelta Should Be Equal As Strings ${response['body']['appInsId']} ${json_object['appInsId']} Should Be Equal As Strings ${response['body']['fixedAllocation']} ${json_object['fixedAllocation']} Should Be Equal As Strings ${response['body']['allocationDirection']} ${json_object['allocationDirection']} @@ -311,20 +311,6 @@ Request a deltas changes Set Suite Variable ${response} ${output} -Request a deltas changes with invalid ETAG - [Arguments] ${allocation_id} ${content} - Should Be True ${PIC_MEC_PLAT} == 1 - Should Be True ${PIC_SERVICES} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - ${file}= Catenate SEPARATOR= jsons/ ${content} .json - ${body}= Get File ${file} - Patch ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - - Register Bandwidth Management Service with incorrect parameters [Arguments] ${content} Should Be True ${PIC_MEC_PLAT} == 1 diff --git a/MEC015/SRV/TM/jsons/BwInfoDeltas.json b/MEC015/SRV/TM/jsons/BwInfoDeltas.json index 6560b8b..28d4b0a 100644 --- a/MEC015/SRV/TM/jsons/BwInfoDeltas.json +++ b/MEC015/SRV/TM/jsons/BwInfoDeltas.json @@ -1,6 +1,6 @@ { "appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f", - "requestType": "0", + "requestType": 0, "fixedAllocation": "32", "allocationDirection": "01" } \ No newline at end of file diff --git a/MEC015/SRV/TM/schemas/BwInfoDelta.schema.json b/MEC015/SRV/TM/schemas/BwInfoDelta.schema.json new file mode 100644 index 0000000..66ca806 --- /dev/null +++ b/MEC015/SRV/TM/schemas/BwInfoDelta.schema.json @@ -0,0 +1,127 @@ +{ + "items": { + "properties": { + "allocationDirection": { + "description": "The direction of the requested BW allocation: 00 = Downlink (towards the UE) 01 = Uplink (towards the application/session) 10 = Symmetrical", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appInsId": { + "description": "Application instance identifier", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "fixedAllocation": { + "description": "Size of requested fixed BW allocation in [bps]", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "fixedBWPriority": { + "description": "Indicates the allocation priority when dealing with several applications or sessions in parallel. Values are not defined in the present document", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Enum" + }, + "requestType": { + "description": "Numeric value (0 - 255) corresponding to specific type of consumer as following: 0 = APPLICATION_SPECIFIC_BW_ALLOCATION 1 = SESSION_SPECIFIC_BW_ALLOCATION", + "type": "integer", + "enum": [ + 0, + 1 + ], + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "sessionFilter": { + "description": "Session filtering criteria, applicable when requestType is set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall define a single session only. In case multiple sessions match sessionFilter the request shall be rejected", + "items": { + "type": "object", + "properties": { + "dstAddress": { + "description": "Destination address identity of session (including range)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "dstPort": { + "description": "Destination port identity of session", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "protocol": { + "description": "Protocol number", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "sourceIp": { + "description": "Source address identity of session (including range)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "sourcePort": { + "description": "Source port identity of session", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + } + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "timeStamp": { + "description": "Time stamp to indicate when the corresponding information elements are sent", + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "format": "uint32", + "type": "integer", + "description": "The seconds part of the Time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "appInsId", + "requestType", + "fixedAllocation", + "allocationDirection" + ], + "type": "object", + "x-etsi-ref": "7.2.2" +} +} \ No newline at end of file diff --git a/MEC030/SRV/V2X/V2XInformationService.robot b/MEC030/SRV/V2X/V2XInformationService.robot index 4814e03..915cbc6 100644 --- a/MEC030/SRV/V2X/V2XInformationService.robot +++ b/MEC030/SRV/V2X/V2XInformationService.robot @@ -129,8 +129,9 @@ TP_MEC_MEC030_SRV_V2X_004_OK ... ETSI GS MEC 030 V2.1.1, clause 7.6.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml Request predicted QoS PredictedQoS.json - Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PredictedQoS + Check HTTP Response Status Code Is 200 + TP_MEC_MEC030_SRV_V2X_004_BR [Documentation] @@ -250,18 +251,6 @@ TP_MEC_MEC030_SRV_V2X_006_BR Retrieve subscription list information ${SUB_TYPE_INVALID} Check HTTP Response Status Code Is 400 - -##Below test not done yet. See this issue: https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/9 -#TP_MEC_MEC030_SRV_V2X_006_NF -# [Documentation] -# ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application -# ... ETSI GS MEC 030 V2.1.1, clause 7.8.3.1 -# ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml -# -# Should Be True ${PIC_MEC_SYSTEM} == 1 -# Should Be True ${PIC_SERVICES} == 1 -# Retrieve subscription list information ${SUB_TYPE_INVALID} -# Check HTTP Response Status Code Is 404 ##POST on ${apiRoot}/${apiName}/${apiVersion}/subscription TP_MEC_MEC030_SRV_V2X_007_OK_01 @@ -524,24 +513,21 @@ TP_MEC_MEC030_SRV_V2X_009_BR Update existing subscription ${SUB_PROV_CHG_UU_UNI_ID} ${body} Check HTTP Response Status Code Is 400 - -##Below test not done yet. See issue https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/10 -#TP_MEC_MEC030_SRV_V2X_009_NF -# [Documentation] -# ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application -# ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 -# ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml -# Should Be True ${PIC_MEC_SYSTEM} == 1 -# Should Be True ${PIC_SERVICES} == 1 -# ${path} Catenate SEPARATOR= jsons/ ProvChgUuUniSubscriptionUpdate_NF.json -# ${body} Get File ${path} -# ${json_object}= Evaluate json.loads('''${body}''') json -# Update existing subscription ${SUB_PROV_CHG_UU_UNI_ID} ${body} -# Check HTTP Response Status Code Is 404 +TP_MEC_MEC030_SRV_V2X_009_NF + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ ProvChgUuUniSubscriptionUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update existing subscription ${NOT_EXISTING_SUB_ID} ${body} + Log ${NOT_EXISTING_SUB_ID} + Check HTTP Response Status Code Is 404 ##DELETE on ${apiRoot}/${apiName}/${apiVersion}/subscriptions/{subscriptionId} - -##Different implementation respect to the TP. See issue: https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/7 TP_MEC_MEC030_SRV_V2X_010_OK_01 [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application @@ -552,8 +538,37 @@ TP_MEC_MEC030_SRV_V2X_010_OK_01 Remove existing subscription ${SUB_PROV_CHG_UU_UNI_ID} Check HTTP Response Status Code Is 204 +TP_MEC_MEC030_SRV_V2X_010_OK_02 + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Remove existing subscription ${SUB_PROV_CHG_UU_MBMS_ID} + Check HTTP Response Status Code Is 204 + +TP_MEC_MEC030_SRV_V2X_010_OK_03 + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Remove existing subscription ${SUB_PROV_CHG_PC5_ID} + Check HTTP Response Status Code Is 204 + +TP_MEC_MEC030_SRV_V2X_010_OK_04 + [Documentation] + ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application + ... ETSI GS MEC 030 V2.1.1, clause 7.9.3.2 + ... https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Remove existing subscription ${SUB_V2X_MSG_ID} + Check HTTP Response Status Code Is 204 + -##Different implementation respect to the TP. See issue: https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/7 TP_MEC_MEC030_SRV_V2X_010_NF [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application @@ -564,11 +579,7 @@ TP_MEC_MEC030_SRV_V2X_010_NF Remove existing subscription ${NOT_EXISTING_SUB_ID} Check HTTP Response Status Code Is 404 -##TP_MEC_MEC030_SRV_V2X_010_OK_02, TP_MEC_MEC030_SRV_V2X_010_OK_03 and TP_MEC_MEC030_SRV_V2X_010_OK_04 are missing because issue -## https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/7 - -##TP with identifier TP_MEC_MEC030_SRV_V2X_010_BR is missing because of following issue: -## https://forge.etsi.org/rep/mec/gs032p2-test-purposes/issues/8 + *** Keywords *** Retrieve configured provisioning information over Uu unicast using ecgi filter [Arguments] ${value} @@ -753,8 +764,7 @@ Update existing subscription Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${body} - Log ${body} + PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/MEC030/SRV/V2X/jsons/ProvChgUuMbmsSubscription_BR.json b/MEC030/SRV/V2X/jsons/ProvChgUuMbmsSubscription_BR.json index 02d6066..5f6b824 100644 --- a/MEC030/SRV/V2X/jsons/ProvChgUuMbmsSubscription_BR.json +++ b/MEC030/SRV/V2X/jsons/ProvChgUuMbmsSubscription_BR.json @@ -13,8 +13,8 @@ } }, "geoArea": { - "latitude": -36495271.093864456, - "longitude": -68485808.83181348 + "latitude": -36.093, + "longitude": -68.83 } }, "v2xServerUsd": { -- GitLab From 56281d276a63291882bca193d43f30fe8d6ba527 Mon Sep 17 00:00:00 2001 From: piscione Date: Mon, 31 May 2021 09:55:33 +0200 Subject: [PATCH 46/63] Minor fix on description. --- MEC028/WAI/SUB/WaiSubscription.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MEC028/WAI/SUB/WaiSubscription.robot b/MEC028/WAI/SUB/WaiSubscription.robot index 29f2e29..cca06e3 100644 --- a/MEC028/WAI/SUB/WaiSubscription.robot +++ b/MEC028/WAI/SUB/WaiSubscription.robot @@ -41,7 +41,7 @@ TP_MEC_MEC028_SRV_WAI_006_OK TP_MEC_MEC028_SRV_WAI_006_BR [Documentation] - ... Check that the IUT responds with the requested list of subscription + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription -- GitLab From 6b969b6b7eb0eae078b592de1c859d482a14da38 Mon Sep 17 00:00:00 2001 From: piscione Date: Mon, 19 Jul 2021 17:55:12 +0200 Subject: [PATCH 47/63] Updated TCs of MEC011 from v2.1.1 to v2.2.1 --- .../SRV}/APPSAQ/PlatAppServices.robot | 84 ++--- {SRV => MEC011/SRV}/APPSAQ/README.md | 0 .../SRV}/APPSAQ/environment/variables.txt | 4 +- .../SRV}/APPSAQ/jsons/ServiceInfo.json | 0 .../SRV}/APPSAQ/jsons/ServiceInfoError.json | 1 + .../SRV}/APPSAQ/jsons/ServiceInfoUpdated.json | 0 .../APPSAQ/jsons/ServiceInfoUpdatedError.json | 0 .../APPSAQ/schemas/ServiceInfo.schema.json | 309 ++++++++++++++++++ .../schemas/ServiceInfoList.schema.json | 0 .../SRV}/APPSUB/PlatAppSubscriptions.robot | 49 ++- {SRV => MEC011/SRV}/APPSUB/README.md | 0 .../SRV}/APPSUB/environment/variables.txt | 2 +- ...ppTerminationNotificationSubscription.json | 0 ...nationNotificationSubscription.schema.json | 0 ...ationNotificationSubscriptions.schema.json | 0 .../schemas/SubscriptionsLinkList.schema.json | 0 .../SRV/CONFTASK}/PlatConfirmation.robot | 26 +- {SRV/CONF => MEC011/SRV/CONFTASK}/README.md | 0 .../SRV/CONFTASK}/environment/variables.txt | 2 +- .../CONFTASK}/jsons/AppReadyConfirmation.json | 0 .../jsons/AppTerminationConfirmation.json | 0 .../schemas/AppReadyConfirmation.schema.json | 0 .../AppTerminationConfirmation.schema.json | 0 {SRV => MEC011/SRV}/DNS/PlatDnsRules.robot | 49 +-- {SRV => MEC011/SRV}/DNS/README.md | 0 .../SRV}/DNS/environment/variables.txt | 2 +- .../SRV}/DNS/jsons/DnsRuleUpdate.json | 0 .../SRV}/DNS/jsons/DnsRuleUpdateError.json | 0 .../SRV}/DNS/schemas/DnsRule.schema.json | 0 .../SRV}/DNS/schemas/DnsRuleList.schema.json | 0 MEC011/SRV/LIV/Liveness.robot | 86 +++++ {SRV => MEC011/SRV/LIV}/README.md | 0 MEC011/SRV/LIV/environment/variables.txt | 14 + .../SRV/LIV/jsons/ServiceLivenessUpdate.json | 3 + .../LIV/jsons/ServiceLivenessUpdateError.json | 3 + .../schemas/ServiceLivenessInfo.schema.json | 41 +++ {SRV/SAQ => MEC011/SRV}/README.md | 0 {SRV => MEC011/SRV}/SAQ/PlatServices.robot | 21 +- {SRV/SRVSUB => MEC011/SRV/SAQ}/README.md | 0 .../SRV}/SAQ/environment/variables.txt | 2 +- .../SRV/SAQ/schemas/ServiceInfo.schema.json | 307 +++++++++++++++++ .../SAQ/schemas/ServiceInfo.schema.json_OLD | 0 .../SAQ/schemas/ServiceInfoList.schema.json | 0 .../SRV}/SRVSUB/PlatSrvSubscriptions.robot | 37 ++- {SRV/TIME => MEC011/SRV/SRVSUB}/README.md | 0 .../SRV}/SRVSUB/environment/variables.txt | 2 +- ...rAvailabilityNotificationSubscription.json | 0 ...labilityNotificationSubscriptionError.json | 0 ...bilityNotificationSubscription.schema.json | 10 +- .../schemas/SubscriptionLink.schema.json | 0 .../schemas/SubscriptionLinkList.schema.json | 0 {SRV => MEC011/SRV}/TIME/PlatTiming.robot | 12 +- {SRV/TRAF => MEC011/SRV/TIME}/README.md | 0 .../SRV}/TIME/environment/variables.txt | 2 +- .../SRV}/TIME/schemas/CurrentTime.schema.json | 0 .../SRV}/TIME/schemas/TimingCaps.schema.json | 0 .../SRV}/TRAF/PlatTrafficRules.robot | 53 +-- {SRV/TRANS => MEC011/SRV/TRAF}/README.md | 0 .../SRV}/TRAF/environment/variables.txt | 2 +- .../SRV}/TRAF/jsons/TrafficRuleUpdate.json | 0 .../TRAF/jsons/TrafficRuleUpdateError.json | 0 .../SRV}/TRAF/schemas/TrafficRule.schema.json | 0 .../TRAF/schemas/TrafficRuleList.schema.json | 0 {SRV => MEC011/SRV}/TRANS/PlatTransport.robot | 7 +- MEC011/SRV/TRANS/README.md | 0 .../SRV}/TRANS/environment/variables.txt | 2 +- .../schemas/TransportInfoList.schema.json | 0 SRV/SAQ/schemas/ServiceInfo.schema.json | 271 --------------- 68 files changed, 962 insertions(+), 441 deletions(-) rename {SRV => MEC011/SRV}/APPSAQ/PlatAppServices.robot (82%) rename {SRV => MEC011/SRV}/APPSAQ/README.md (100%) rename {SRV => MEC011/SRV}/APPSAQ/environment/variables.txt (84%) rename {SRV => MEC011/SRV}/APPSAQ/jsons/ServiceInfo.json (100%) rename {SRV => MEC011/SRV}/APPSAQ/jsons/ServiceInfoError.json (96%) rename {SRV => MEC011/SRV}/APPSAQ/jsons/ServiceInfoUpdated.json (100%) rename {SRV => MEC011/SRV}/APPSAQ/jsons/ServiceInfoUpdatedError.json (100%) create mode 100644 MEC011/SRV/APPSAQ/schemas/ServiceInfo.schema.json rename {SRV => MEC011/SRV}/APPSAQ/schemas/ServiceInfoList.schema.json (100%) rename {SRV => MEC011/SRV}/APPSUB/PlatAppSubscriptions.robot (78%) rename {SRV => MEC011/SRV}/APPSUB/README.md (100%) rename {SRV => MEC011/SRV}/APPSUB/environment/variables.txt (94%) rename {SRV => MEC011/SRV}/APPSUB/jsons/AppTerminationNotificationSubscription.json (100%) rename {SRV => MEC011/SRV}/APPSUB/schemas/AppTerminationNotificationSubscription.schema.json (100%) rename {SRV => MEC011/SRV}/APPSUB/schemas/AppTerminationNotificationSubscriptions.schema.json (100%) rename {SRV => MEC011/SRV}/APPSUB/schemas/SubscriptionsLinkList.schema.json (100%) rename {SRV/CONF => MEC011/SRV/CONFTASK}/PlatConfirmation.robot (80%) rename {SRV/CONF => MEC011/SRV/CONFTASK}/README.md (100%) rename {SRV/CONF => MEC011/SRV/CONFTASK}/environment/variables.txt (94%) rename {SRV/CONF => MEC011/SRV/CONFTASK}/jsons/AppReadyConfirmation.json (100%) rename {SRV/CONF => MEC011/SRV/CONFTASK}/jsons/AppTerminationConfirmation.json (100%) rename {SRV/CONF => MEC011/SRV/CONFTASK}/schemas/AppReadyConfirmation.schema.json (100%) rename {SRV/CONF => MEC011/SRV/CONFTASK}/schemas/AppTerminationConfirmation.schema.json (100%) rename {SRV => MEC011/SRV}/DNS/PlatDnsRules.robot (78%) rename {SRV => MEC011/SRV}/DNS/README.md (100%) rename {SRV => MEC011/SRV}/DNS/environment/variables.txt (94%) rename {SRV => MEC011/SRV}/DNS/jsons/DnsRuleUpdate.json (100%) rename {SRV => MEC011/SRV}/DNS/jsons/DnsRuleUpdateError.json (100%) rename {SRV => MEC011/SRV}/DNS/schemas/DnsRule.schema.json (100%) rename {SRV => MEC011/SRV}/DNS/schemas/DnsRuleList.schema.json (100%) create mode 100644 MEC011/SRV/LIV/Liveness.robot rename {SRV => MEC011/SRV/LIV}/README.md (100%) create mode 100644 MEC011/SRV/LIV/environment/variables.txt create mode 100644 MEC011/SRV/LIV/jsons/ServiceLivenessUpdate.json create mode 100644 MEC011/SRV/LIV/jsons/ServiceLivenessUpdateError.json create mode 100644 MEC011/SRV/LIV/schemas/ServiceLivenessInfo.schema.json rename {SRV/SAQ => MEC011/SRV}/README.md (100%) rename {SRV => MEC011/SRV}/SAQ/PlatServices.robot (83%) rename {SRV/SRVSUB => MEC011/SRV/SAQ}/README.md (100%) rename {SRV => MEC011/SRV}/SAQ/environment/variables.txt (94%) create mode 100644 MEC011/SRV/SAQ/schemas/ServiceInfo.schema.json rename SRV/APPSAQ/schemas/ServiceInfo.schema.json => MEC011/SRV/SAQ/schemas/ServiceInfo.schema.json_OLD (100%) rename {SRV => MEC011/SRV}/SAQ/schemas/ServiceInfoList.schema.json (100%) rename {SRV => MEC011/SRV}/SRVSUB/PlatSrvSubscriptions.robot (85%) rename {SRV/TIME => MEC011/SRV/SRVSUB}/README.md (100%) rename {SRV => MEC011/SRV}/SRVSUB/environment/variables.txt (94%) rename {SRV => MEC011/SRV}/SRVSUB/jsons/SerAvailabilityNotificationSubscription.json (100%) rename {SRV => MEC011/SRV}/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json (100%) rename {SRV => MEC011/SRV}/SRVSUB/schemas/SerAvailabilityNotificationSubscription.schema.json (96%) rename {SRV => MEC011/SRV}/SRVSUB/schemas/SubscriptionLink.schema.json (100%) rename {SRV => MEC011/SRV}/SRVSUB/schemas/SubscriptionLinkList.schema.json (100%) rename {SRV => MEC011/SRV}/TIME/PlatTiming.robot (82%) rename {SRV/TRAF => MEC011/SRV/TIME}/README.md (100%) rename {SRV => MEC011/SRV}/TIME/environment/variables.txt (91%) rename {SRV => MEC011/SRV}/TIME/schemas/CurrentTime.schema.json (100%) rename {SRV => MEC011/SRV}/TIME/schemas/TimingCaps.schema.json (100%) rename {SRV => MEC011/SRV}/TRAF/PlatTrafficRules.robot (78%) rename {SRV/TRANS => MEC011/SRV/TRAF}/README.md (100%) rename {SRV => MEC011/SRV}/TRAF/environment/variables.txt (94%) rename {SRV => MEC011/SRV}/TRAF/jsons/TrafficRuleUpdate.json (100%) rename {SRV => MEC011/SRV}/TRAF/jsons/TrafficRuleUpdateError.json (100%) rename {SRV => MEC011/SRV}/TRAF/schemas/TrafficRule.schema.json (100%) rename {SRV => MEC011/SRV}/TRAF/schemas/TrafficRuleList.schema.json (100%) rename {SRV => MEC011/SRV}/TRANS/PlatTransport.robot (81%) create mode 100644 MEC011/SRV/TRANS/README.md rename {SRV => MEC011/SRV}/TRANS/environment/variables.txt (93%) rename {SRV => MEC011/SRV}/TRANS/schemas/TransportInfoList.schema.json (100%) delete mode 100644 SRV/SAQ/schemas/ServiceInfo.schema.json diff --git a/SRV/APPSAQ/PlatAppServices.robot b/MEC011/SRV/APPSAQ/PlatAppServices.robot similarity index 82% rename from SRV/APPSAQ/PlatAppServices.robot rename to MEC011/SRV/APPSAQ/PlatAppServices.robot index 0f118f4..8e4e3ac 100644 --- a/SRV/APPSAQ/PlatAppServices.robot +++ b/MEC011/SRV/APPSAQ/PlatAppServices.robot @@ -3,7 +3,7 @@ Documentation ... A test suite for validating Application Service Availability Query (APPSAQ) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false @@ -13,13 +13,13 @@ Default Tags TC_MEC_SRV_APPSAQ *** Test Cases *** -TC_MEC_SRV_APPSAQ_001_OK +TP_MEC_MEC011_SRV_APPSAQ_001_OK [Documentation] ... Check that the IUT responds with a list of available MEC services ... for a given application instance when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.6.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.6.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -28,12 +28,12 @@ TC_MEC_SRV_APPSAQ_001_OK Check HTTP Response Body Json Schema Is ServiceInfoList -TC_MEC_SRV_APPSAQ_001_BR +TP_MEC_MEC011_SRV_APPSAQ_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.6.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.6.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -42,12 +42,12 @@ TC_MEC_SRV_APPSAQ_001_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_APPSAQ_002_OK +TP_MEC_MEC011_SRV_APPSAQ_002_OK [Documentation] ... Check that the IUT notifies the authorised relevant (subscribed) application ... instances when a new service for a given application instance is registered ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.6.3.4 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.6.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -58,12 +58,12 @@ TC_MEC_SRV_APPSAQ_002_OK Check Response Contains ${response['body']} serName ${NEW_SERVICE_NAME} -TC_MEC_SRV_APPSAQ_002_BR +TP_MEC_MEC011_SRV_APPSAQ_002_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.6.3.4 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.6.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -71,12 +71,12 @@ TC_MEC_SRV_APPSAQ_002_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_APPSAQ_002_NF +TP_MEC_MEC011_SRV_APPSAQ_002_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.6.3.4 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.6.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -84,12 +84,12 @@ TC_MEC_SRV_APPSAQ_002_NF Check HTTP Response Status Code Is 404 -TC_MEC_SRV_APPSAQ_003_OK +TP_MEC_MEC011_SRV_APPSAQ_003_OK [Documentation] ... Check that the IUT responds with the information on a specific service ... for a given application instance when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -99,24 +99,24 @@ TC_MEC_SRV_APPSAQ_003_OK Check Response Contains ${response['body']} serInstanceId ${SERVICE_ID} -TC_MEC_SRV_APPSAQ_003_NF +TP_MEC_MEC011_SRV_APPSAQ_003_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} Check HTTP Response Status Code Is 404 -TC_MEC_SRV_APPSAQ_004_OK +TP_MEC_MEC011_SRV_APPSAQ_004_OK [Documentation] ... Check that the IUT updates a service information for a given ... application instance when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.2 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.2 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -126,12 +126,12 @@ TC_MEC_SRV_APPSAQ_004_OK Check Response Contains ${response['body']} version ${SVC_NEW_VERSION} -TC_MEC_SRV_APPSAQ_004_BR +TP_MEC_MEC011_SRV_APPSAQ_004_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.2 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.2 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -139,12 +139,12 @@ TC_MEC_SRV_APPSAQ_004_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_APPSAQ_004_NF +TP_MEC_MEC011_SRV_APPSAQ_004_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.2 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.2 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -152,39 +152,25 @@ TC_MEC_SRV_APPSAQ_004_NF Check HTTP Response Status Code Is 404 -TC_MEC_SRV_APPSAQ_004_PF - [Documentation] - ... Check that the IUT responds with an error when - ... a request sent by a MEC Application doesn't comply with a required condition - ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo - - [Tags] PIC_MEC_PLAT PIC_SERVICES - Update service with invalid etag ${APP_INSTANCE_ID} ${SERVICE_ID} ServiceInfoUpdated - Check HTTP Response Status Code Is 412 - - -TC_MEC_SRV_APPSAQ_005_OK +TP_MEC_MEC011_SRV_APPSAQ_005_OK [Documentation] ... Check that the IUT executes the deletion of a service ... for a given application instance when requested by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.5 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo - [Tags] PIC_MEC_PLAT PIC_SERVICES - Remove individual service ${APP_INSTANCE_ID} ${SERVICE_ID} + [Tags] PIC_MEC_PLAT PIC_SERVICES + Remove individual service ${APP_INSTANCE_ID} ${SERVICE_ID} Check HTTP Response Status Code Is 204 -TC_MEC_SRV_APPSAQ_005_NF +TP_MEC_MEC011_SRV_APPSAQ_005_NF [Documentation] ... Check that the IUT responds with an error when ... a request for deletion of a unknown service is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.1 - + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.7.3.5 [Tags] PIC_MEC_PLAT PIC_SERVICES Remove individual service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} Check HTTP Response Status Code Is 404 @@ -196,6 +182,7 @@ Get a list of mecService of an application instance with parameters [Arguments] ${appInstanceId} ${key}=None ${value}=None Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services?${key}=${value} ${output}= Output response Set Suite Variable ${response} ${output} @@ -203,6 +190,7 @@ Get a list of mecService of an application instance with parameters Get a list of mecService of an application instance [Arguments] ${appInstanceId} Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services ${output}= Output response @@ -213,9 +201,11 @@ Create new service [Arguments] ${content} ${appInstanceId} Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} + #Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} + Log ${appInstanceId} Post ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -225,6 +215,7 @@ Get individual service [Arguments] ${appInstanceId} ${serviceName} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services/${serviceName} ${output}= Output response Set Suite Variable ${response} ${output} @@ -234,6 +225,7 @@ Update service Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + #Set Headers {"Content-Type":"*/*"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} PUT ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services/${serviceId} ${body} @@ -241,17 +233,11 @@ Update service Set Suite Variable ${response} ${output} - -Update service with invalid etag - [Arguments] ${appInstanceId} ${serviceId} ${content} - Set Headers {"If-Match": ${INVALID_ETAG}} - Update service ${appInstanceId} ${serviceId} ${content} - - Remove individual service [Arguments] ${appInstanceId} ${serviceName} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Delete ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services/${serviceName} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SRV/APPSAQ/README.md b/MEC011/SRV/APPSAQ/README.md similarity index 100% rename from SRV/APPSAQ/README.md rename to MEC011/SRV/APPSAQ/README.md diff --git a/SRV/APPSAQ/environment/variables.txt b/MEC011/SRV/APPSAQ/environment/variables.txt similarity index 84% rename from SRV/APPSAQ/environment/variables.txt rename to MEC011/SRV/APPSAQ/environment/variables.txt index 5b218f8..e2331ca 100644 --- a/SRV/APPSAQ/environment/variables.txt +++ b/MEC011/SRV/APPSAQ/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 +${HOST} 127.0.0.1 ${PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l @@ -10,7 +10,7 @@ ${apiName} mec_service_mgmt ${apiVersion} v1 # Specific variables -${APP_INSTANCE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f +${APP_INSTANCE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f ${INSTANCE_ID} instance_id ${FAKE_INSTANCE_ID_VALUE} 5 ${NON_EXISTENT_APP_INSTANCE_ID} NON_ESISTENT_APP_INSTANCE_ID diff --git a/SRV/APPSAQ/jsons/ServiceInfo.json b/MEC011/SRV/APPSAQ/jsons/ServiceInfo.json similarity index 100% rename from SRV/APPSAQ/jsons/ServiceInfo.json rename to MEC011/SRV/APPSAQ/jsons/ServiceInfo.json diff --git a/SRV/APPSAQ/jsons/ServiceInfoError.json b/MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json similarity index 96% rename from SRV/APPSAQ/jsons/ServiceInfoError.json rename to MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json index 672c8a0..b30d168 100644 --- a/SRV/APPSAQ/jsons/ServiceInfoError.json +++ b/MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json @@ -1,5 +1,6 @@ { "Name": "WRONG_PARAMETER_NAME", + "serName": "WRONG_PARAMETER_NAME", "version": "reprehenderit Ut non commodo", "state": "INACTIVE", "transportInfo": { diff --git a/SRV/APPSAQ/jsons/ServiceInfoUpdated.json b/MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdated.json similarity index 100% rename from SRV/APPSAQ/jsons/ServiceInfoUpdated.json rename to MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdated.json diff --git a/SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json b/MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json similarity index 100% rename from SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json rename to MEC011/SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json diff --git a/MEC011/SRV/APPSAQ/schemas/ServiceInfo.schema.json b/MEC011/SRV/APPSAQ/schemas/ServiceInfo.schema.json new file mode 100644 index 0000000..97620df --- /dev/null +++ b/MEC011/SRV/APPSAQ/schemas/ServiceInfo.schema.json @@ -0,0 +1,309 @@ +{ + "ServiceInfo": { + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "serName", + "version", + "state", + "transportInfo", + "serializer" + ], + "properties": { + "serInstanceId": { + "description": "Identifier of the service instance assigned by the MEC platform.", + "type": "string", + "readOnly": true, + "example": "ServiceInstance123" + }, + "serName": { + "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.", + "type": "string", + "example": "ExampleService" + }, + "serCategory": { + "description": "This type represents the category reference", + "type": "object", + "required": [ + "href", + "id", + "name", + "version" + ], + "properties": { + "href": { + "description": "Reference of the catalogue", + "type": "string", + "format": "uri", + "example": "/example/catalogue1" + }, + "id": { + "description": "Unique identifier of the category", + "type": "string", + "example": "id12345" + }, + "name": { + "description": "Name of the category, example values include RNI, Location & Bandwidth Management", + "type": "string", + "example": "RNI" + }, + "version": { + "description": "Category version", + "type": "string", + "example": "version1" + } + } + }, + "version": { + "description": "Service version", + "type": "string", + "example": "ServiceVersion1" + }, + "state": { + "description": "This enumeration defines the possible states of a service.", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE", + "SUSPENDED" + ], + "example": "ACTIVE" + }, + "transportInfo": { + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "id", + "name", + "type", + "protocol", + "version", + "endpoint", + "security" + ], + "properties": { + "id": { + "description": "The identifier of this transport", + "type": "string", + "example": "TransId12345" + }, + "name": { + "description": "The name of this transport", + "type": "string", + "example": "REST" + }, + "description": { + "description": "Human-readable description of this transport", + "type": "string", + "example": "REST API" + }, + "type": { + "description": "The enumeration TransportType represents types of transports", + "type": "string", + "enum": [ + "REST_HTTP", + "MB_TOPIC_BASED", + "MB_ROUTING", + "MB_PUBSUB", + "RPC", + "RPC_STREAMING", + "WEBSOCKET" + ], + "example": "REST_HTTP" + }, + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "example": "HTTP" + }, + "version": { + "description": "The version of the protocol used", + "type": "string", + "example": "2.0" + }, + "endpoint": { + "description": "This type represents information about a transport endpoint", + "type": "object", + "oneOf": [{ + "description": "Entry point information of the service as string, formatted according to URI syntax", + "type": "object", + "required": [ + "uris" + ], + "properties": { + "uris": { + "type": "array", + "minItems": 0, + "items": { + "description": "Entry point information of the service", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/service/EntryPoint" + } + } + } + }, + { + "description": "Entry point information of the service as one or more pairs of IP address and port", + "type": "object", + "required": [ + "addresses" + ], + "properties": { + "addresses": { + "type": "array", + "minItems": 0, + "items": { + "description": "A IP address and port pair", + "type": "object", + "required": [ + "host", + "port" + ], + "properties": { + "host": { + "description": "Host portion of the address", + "type": "string", + "example": "192.0.2.0" + }, + "port": { + "description": "Port portion of the address", + "type": "integer", + "format": "uint32", + "example": 8080 + } + } + } + } + } + }, + { + "description": "Entry point information of the service in a format defined by an implementation, or in an external specification.", + "type": "object", + "required": [ + "alternative" + ], + "properties": { + "alternative": { + "type": "object" + } + } + } + ] + }, + "security": { + "description": "This type represents security information related to a transport", + "type": "object", + "properties": { + "oAuth2Info": { + "description": "Parameters related to use of OAuth 2.0", + "required": [ + "grantTypes", + "tokenEndpoint" + ], + "properties": { + "grantTypes": { + "description": "List of supported OAuth 2.0 grant types.", + "type": "array", + "minItems": 1, + "maxItems": 4, + "items": { + "description": "OAuth 2.0 grant type", + "type": "string", + "enum": [ + "OAUTH2_AUTHORIZATION_CODE", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_RESOURCE_OWNER", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "example": "OAUTH2_CLIENT_CREDENTIALS" + } + }, + "tokenEndpoint": { + "description": "The token endpoint", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/security/TokenEndPoint" + } + }, + "type": "object" + } + } + }, + "implSpecificInfo": { + "description": "Additional implementation specific details of the transport", + "type": "object" + } + } + }, + "serializer": { + "description": "The enumeration represents types of serializers", + "type": "string", + "enum": [ + "JSON", + "XML", + "PROTOBUF3" + ], + "example": "JSON" + }, + "scopeOfLocality": { + "description": "The scope of locality as expressed by \"consumedLocalOnly\" and \"isLocal\". If absent, defaults to MEC_HOST", + "type": "string", + "enum": [ + "MEC_SYSTEM", + "MEC_HOST", + "NFVI_POP", + "ZONE", + "ZONE_GROUP", + "NFVI_NODE" + ], + "example": "MEC_SYSTEM" + }, + "consumedLocalOnly": { + "description": "Indicate whether the service can only be consumed by the MEC applications located in the same locality (as defined by scopeOfLocality) as this service instance.", + "type": "boolean", + "example": false + }, + "isLocal": { + "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.", + "type": "boolean", + "example": true + }, + "livenessInterval": { + "type": "integer" + }, + "_links": { + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a type of link and may be referenced from data structures", + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/example" + } + } + }, + "liveness": { + "description": "This type represents a type of link and may be referenced from data structures", + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/example" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SRV/APPSAQ/schemas/ServiceInfoList.schema.json b/MEC011/SRV/APPSAQ/schemas/ServiceInfoList.schema.json similarity index 100% rename from SRV/APPSAQ/schemas/ServiceInfoList.schema.json rename to MEC011/SRV/APPSAQ/schemas/ServiceInfoList.schema.json diff --git a/SRV/APPSUB/PlatAppSubscriptions.robot b/MEC011/SRV/APPSUB/PlatAppSubscriptions.robot similarity index 78% rename from SRV/APPSUB/PlatAppSubscriptions.robot rename to MEC011/SRV/APPSUB/PlatAppSubscriptions.robot index 611df12..3154e0f 100644 --- a/SRV/APPSUB/PlatAppSubscriptions.robot +++ b/MEC011/SRV/APPSUB/PlatAppSubscriptions.robot @@ -3,7 +3,7 @@ Documentation ... A test suite for validating Application Subscriptions (APPSUB) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,12 +13,12 @@ Default Tags TC_MEC_SRV_APPSUB *** Test Cases *** -TC_MEC_SRV_APPSUB_001_OK +TP_MEC_MEC011_SRV_APPSUB_001_OK [Documentation] ... Check that the IUT responds with a list of subscriptions for notifications ... on services availability when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.3.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.3.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/MecAppSuptApiSubscriptionLinkList [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -27,24 +27,24 @@ TC_MEC_SRV_APPSUB_001_OK Check HTTP Response Body Json Schema Is SubscriptionsLinkList -TC_MEC_SRV_APPSUB_001_NF +TP_MEC_MEC011_SRV_APPSUB_001_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.3.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.3.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get Subscriptions list ${NON_EXISTENT_APP_INSTANCE_ID} Check HTTP Response Status Code Is 404 -TC_MEC_SRV_APPSUB_002_OK +TP_MEC_MEC011_SRV_APPSUB_002_OK [Documentation] ... Check that the IUT acknowledges the subscription by a MEC Application ... to notifications on service availability events ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.3.3.4 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.3.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationNotificationSubscription [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -56,12 +56,12 @@ TC_MEC_SRV_APPSUB_002_OK Check Response Contains ${response['body']} callbackReference ${APP_TERM_NOTIF_CALLBACK_URI} -TC_MEC_SRV_APPSUB_003_OK +TP_MEC_MEC011_SRV_APPSUB_002_BR [Documentation] ... Check that the IUT responds with the information on a specific subscription ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.4.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.3.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationNotificationSubscription [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -71,36 +71,50 @@ TC_MEC_SRV_APPSUB_003_OK Check Response Contains ${response['body']} subscriptionType AppTerminationNotificationSubscription -TC_MEC_SRV_APPSUB_003_NF + +TP_MEC_MEC011_SRV_APPSUB_003_OK + [Documentation] + ... Check that the IUT responds with the information on a specific subscription + ... when queried by a MEC Application + ... + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.4.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get individual subscription ${APP_INSTANCE_ID} ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AppTerminationNotificationSubscription + + +TP_MEC_MEC011_SRV_APPSUB_003_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.4.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.4.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual subscription ${APP_INSTANCE_ID} ${NON_EXISTENT_SUBSCRIPTION_ID} Check HTTP Response Status Code Is 404 -TC_MEC_SRV_APPSUB_004_OK +TP_MEC_MEC011_SRV_APPSUB_004_OK [Documentation] ... Check that the IUT acknowledges the unsubscribe from service availability event notifications ... when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.4.3.5 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.4.3.5 [Tags] PIC_MEC_PLAT PIC_SERVICES Remove subscription ${APP_INSTANCE_ID} ${SUBSCRIPTION_ID} Check HTTP Response Status Code Is 204 -TC_MEC_SRV_APPSUB_004_NF +TP_MEC_MEC011_SRV_APPSUB_004_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.4.3.5 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.4.3.5 [Tags] PIC_MEC_PLAT PIC_SERVICES Remove subscription ${NON_EXISTENT_APP_INSTANCE_ID} ${SUBSCRIPTION_ID} @@ -112,6 +126,7 @@ Get Subscriptions List [Arguments] ${appInstanceId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -121,6 +136,7 @@ Create new subscription Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} Post ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/subscriptions ${body} @@ -132,6 +148,8 @@ Get individual subscription [Arguments] ${appInstanceId} ${subscriptionId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -140,6 +158,7 @@ Remove subscription [Arguments] ${appInstanceId} ${subscriptionId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Delete ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SRV/APPSUB/README.md b/MEC011/SRV/APPSUB/README.md similarity index 100% rename from SRV/APPSUB/README.md rename to MEC011/SRV/APPSUB/README.md diff --git a/SRV/APPSUB/environment/variables.txt b/MEC011/SRV/APPSUB/environment/variables.txt similarity index 94% rename from SRV/APPSUB/environment/variables.txt rename to MEC011/SRV/APPSUB/environment/variables.txt index c28506f..c66b1e9 100644 --- a/SRV/APPSUB/environment/variables.txt +++ b/MEC011/SRV/APPSUB/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 +${HOST} 127.0.0.1 ${PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json b/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json similarity index 100% rename from SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json rename to MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json diff --git a/SRV/APPSUB/schemas/AppTerminationNotificationSubscription.schema.json b/MEC011/SRV/APPSUB/schemas/AppTerminationNotificationSubscription.schema.json similarity index 100% rename from SRV/APPSUB/schemas/AppTerminationNotificationSubscription.schema.json rename to MEC011/SRV/APPSUB/schemas/AppTerminationNotificationSubscription.schema.json diff --git a/SRV/APPSUB/schemas/AppTerminationNotificationSubscriptions.schema.json b/MEC011/SRV/APPSUB/schemas/AppTerminationNotificationSubscriptions.schema.json similarity index 100% rename from SRV/APPSUB/schemas/AppTerminationNotificationSubscriptions.schema.json rename to MEC011/SRV/APPSUB/schemas/AppTerminationNotificationSubscriptions.schema.json diff --git a/SRV/APPSUB/schemas/SubscriptionsLinkList.schema.json b/MEC011/SRV/APPSUB/schemas/SubscriptionsLinkList.schema.json similarity index 100% rename from SRV/APPSUB/schemas/SubscriptionsLinkList.schema.json rename to MEC011/SRV/APPSUB/schemas/SubscriptionsLinkList.schema.json diff --git a/SRV/CONF/PlatConfirmation.robot b/MEC011/SRV/CONFTASK/PlatConfirmation.robot similarity index 80% rename from SRV/CONF/PlatConfirmation.robot rename to MEC011/SRV/CONFTASK/PlatConfirmation.robot index c619ff1..f4edb9a 100644 --- a/SRV/CONF/PlatConfirmation.robot +++ b/MEC011/SRV/CONFTASK/PlatConfirmation.robot @@ -3,7 +3,7 @@ Documentation ... A test suite for validating DNS rules (DNS) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -16,12 +16,12 @@ Default Tags TC_MEC_SRV_CONF *** Test Cases *** -TC_MEC_SRV_CONF_001_OK +TP_MEC_MEC011_SRV_CONFTASK_001_OK [Documentation] - ... Check that the IUT responds with an acknowledge - ... when requested graceful termination/stop of a MEC Application instance + ... Check that the IUT responds that it has completed + ... the application level termination ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.11.3.4 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.11.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationConfirmation [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -29,12 +29,12 @@ TC_MEC_SRV_CONF_001_OK Check HTTP Response Status Code Is 204 -TC_MEC_SRV_CONF_001_NF +TP_MEC_MEC011_SRV_CONFTASK_001_NF [Documentation] ... Check that the IUT responds with an error ... when requested graceful termination/stop of an unknown MEC Application instance ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.11.3.4 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.11.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationConfirmation [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -44,12 +44,12 @@ TC_MEC_SRV_CONF_001_NF -TC_MEC_SRV_CONF_002_OK +TP_MEC_MEC011_SRV_CONFTASK_002_OK [Documentation] ... Check that the IUT responds with an acknowledge ... when requested readiness status for a MEC Application instance ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.12.3.4 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.12.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppReadyConfirmation [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -57,12 +57,12 @@ TC_MEC_SRV_CONF_002_OK Check HTTP Response Status Code Is 204 -TC_MEC_SRV_CONF_002_NF +TP_MEC_MEC011_SRV_CONFTASK_002_NF [Documentation] ... Check that the IUT responds with an error ... when requested readiness status for an unknown MEC Application instance ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.12.3.4 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.12.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppReadyConfirmation [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -78,7 +78,7 @@ Request termination of MEC Application Set Headers {"Authorization":"${TOKEN}"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} - PUT ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/confirm_termination ${body} + POST ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/confirm_termination ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -90,6 +90,6 @@ Request readiness status of MEC Application Set Headers {"Authorization":"${TOKEN}"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} - PUT ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/confirm_ready ${body} + POST ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/confirm_ready ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SRV/CONF/README.md b/MEC011/SRV/CONFTASK/README.md similarity index 100% rename from SRV/CONF/README.md rename to MEC011/SRV/CONFTASK/README.md diff --git a/SRV/CONF/environment/variables.txt b/MEC011/SRV/CONFTASK/environment/variables.txt similarity index 94% rename from SRV/CONF/environment/variables.txt rename to MEC011/SRV/CONFTASK/environment/variables.txt index 183991b..81a8328 100644 --- a/SRV/CONF/environment/variables.txt +++ b/MEC011/SRV/CONFTASK/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 +${HOST} 127.0.0.1 ${PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/SRV/CONF/jsons/AppReadyConfirmation.json b/MEC011/SRV/CONFTASK/jsons/AppReadyConfirmation.json similarity index 100% rename from SRV/CONF/jsons/AppReadyConfirmation.json rename to MEC011/SRV/CONFTASK/jsons/AppReadyConfirmation.json diff --git a/SRV/CONF/jsons/AppTerminationConfirmation.json b/MEC011/SRV/CONFTASK/jsons/AppTerminationConfirmation.json similarity index 100% rename from SRV/CONF/jsons/AppTerminationConfirmation.json rename to MEC011/SRV/CONFTASK/jsons/AppTerminationConfirmation.json diff --git a/SRV/CONF/schemas/AppReadyConfirmation.schema.json b/MEC011/SRV/CONFTASK/schemas/AppReadyConfirmation.schema.json similarity index 100% rename from SRV/CONF/schemas/AppReadyConfirmation.schema.json rename to MEC011/SRV/CONFTASK/schemas/AppReadyConfirmation.schema.json diff --git a/SRV/CONF/schemas/AppTerminationConfirmation.schema.json b/MEC011/SRV/CONFTASK/schemas/AppTerminationConfirmation.schema.json similarity index 100% rename from SRV/CONF/schemas/AppTerminationConfirmation.schema.json rename to MEC011/SRV/CONFTASK/schemas/AppTerminationConfirmation.schema.json diff --git a/SRV/DNS/PlatDnsRules.robot b/MEC011/SRV/DNS/PlatDnsRules.robot similarity index 78% rename from SRV/DNS/PlatDnsRules.robot rename to MEC011/SRV/DNS/PlatDnsRules.robot index 80a0c18..883e195 100644 --- a/SRV/DNS/PlatDnsRules.robot +++ b/MEC011/SRV/DNS/PlatDnsRules.robot @@ -3,7 +3,7 @@ Documentation ... A test suite for validating DNS rules (DNS) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -16,12 +16,12 @@ Default Tags TC_MEC_SRV_DNS *** Test Cases *** -TC_MEC_SRV_DNS_001_OK +TP_MEC_MEC011_SRV_DNS_001_OK [Documentation] ... Check that the IUT responds with a list of active DNS rules ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.9.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.9.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -30,12 +30,12 @@ TC_MEC_SRV_DNS_001_OK Check HTTP Response Body Json Schema Is DnsRuleList -TC_MEC_SRV_DNS_002_OK +TP_MEC_MEC011_SRV_DNS_002_OK [Documentation] ... Check that the IUT responds with the information on a specific DNS rule ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -45,24 +45,24 @@ TC_MEC_SRV_DNS_002_OK Check Response Contains ${response['body']} dnsRuleId ${DNS_RULE_ID} -TC_MEC_SRV_DNS_002_NF +TP_MEC_MEC011_SRV_DNS_002_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual DNS rule ${APP_INSTANCE_ID} ${NON_ESISTENT_DNS_RULE_ID} Check HTTP Response Status Code Is 404 -TC_MEC_SRV_DNS_003_OK +TP_MEC_MEC011_SRV_DNS_003_OK [Documentation] ... Check that the IUT updates a specific DNS rule ... when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.2 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.2 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -72,12 +72,12 @@ TC_MEC_SRV_DNS_003_OK Check Response Contains ${response['body']} ipAddress ${SOME_IP_ADDRESS} -TC_MEC_SRV_DNS_003_BR +TP_MEC_MEC011_SRV_DNS_003_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.2 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.2 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -85,12 +85,12 @@ TC_MEC_SRV_DNS_003_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_DNS_003_NF +TP_MEC_MEC011_SRV_DNS_003_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.2 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.2 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -98,17 +98,18 @@ TC_MEC_SRV_DNS_003_NF Check HTTP Response Status Code Is 404 -TC_MEC_SRV_DNS_003_PF - [Documentation] - ... Check that the IUT responds with an error when - ... a request sent by a MEC Application doesn't comply with a required condition - ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule - [Tags] PIC_MEC_PLAT PIC_SERVICES - Update a DNS Rule with invalid etag ${APP_INSTANCE_ID} ${DNS_RULE_ID} DnsRuleUpdate - Check HTTP Response Status Code Is 412 +#TP_MEC_MEC011_SRV_DNS_003_PF +# [Documentation] +# ... Check that the IUT responds with an error when +# ... a request sent by a MEC Application doesn't comply with a required condition +# ... +# ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.10.3.2 +# ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule +# +# [Tags] PIC_MEC_PLAT PIC_SERVICES +# Update a DNS Rule with invalid etag ${APP_INSTANCE_ID} ${DNS_RULE_ID} DnsRuleUpdate +# Check HTTP Response Status Code Is 412 @@ -117,6 +118,7 @@ Get list of active DNS rules [Arguments] ${appInstanceId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/dns_rules ${output}= Output response Set Suite Variable ${response} ${output} @@ -126,6 +128,7 @@ Get individual DNS rule [Arguments] ${appInstanceId} ${dnsRuleId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/dns_rules/${dnsRuleId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SRV/DNS/README.md b/MEC011/SRV/DNS/README.md similarity index 100% rename from SRV/DNS/README.md rename to MEC011/SRV/DNS/README.md diff --git a/SRV/DNS/environment/variables.txt b/MEC011/SRV/DNS/environment/variables.txt similarity index 94% rename from SRV/DNS/environment/variables.txt rename to MEC011/SRV/DNS/environment/variables.txt index 1ab92ff..bed8e73 100644 --- a/SRV/DNS/environment/variables.txt +++ b/MEC011/SRV/DNS/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 +${HOST} 127.0.0.1 ${PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/SRV/DNS/jsons/DnsRuleUpdate.json b/MEC011/SRV/DNS/jsons/DnsRuleUpdate.json similarity index 100% rename from SRV/DNS/jsons/DnsRuleUpdate.json rename to MEC011/SRV/DNS/jsons/DnsRuleUpdate.json diff --git a/SRV/DNS/jsons/DnsRuleUpdateError.json b/MEC011/SRV/DNS/jsons/DnsRuleUpdateError.json similarity index 100% rename from SRV/DNS/jsons/DnsRuleUpdateError.json rename to MEC011/SRV/DNS/jsons/DnsRuleUpdateError.json diff --git a/SRV/DNS/schemas/DnsRule.schema.json b/MEC011/SRV/DNS/schemas/DnsRule.schema.json similarity index 100% rename from SRV/DNS/schemas/DnsRule.schema.json rename to MEC011/SRV/DNS/schemas/DnsRule.schema.json diff --git a/SRV/DNS/schemas/DnsRuleList.schema.json b/MEC011/SRV/DNS/schemas/DnsRuleList.schema.json similarity index 100% rename from SRV/DNS/schemas/DnsRuleList.schema.json rename to MEC011/SRV/DNS/schemas/DnsRuleList.schema.json diff --git a/MEC011/SRV/LIV/Liveness.robot b/MEC011/SRV/LIV/Liveness.robot new file mode 100644 index 0000000..2e7e310 --- /dev/null +++ b/MEC011/SRV/LIV/Liveness.robot @@ -0,0 +1,86 @@ +*** Settings *** + +Documentation +... A test suite for validating Application Subscriptions (APPSUB) operations. + +Resource ../../../GenericKeywords.robot +Resource environment/variables.txt +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem + + +*** Test Cases *** + +TP_MEC_MEC011_SRV_MSL_001_OK + [Documentation] + ... Check that the IUT responds with the liveness of a MEC service instance + ... when queried by a MEC Application + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.10.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Individual MEC service liveness ${URL_SERVICE_MEC_LIVENESS} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ServiceLivenessInfo + + + +TP_MEC_MEC011_SRV_MSL_001_NF + [Documentation] + ... 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 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.10.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Individual MEC service liveness ${NOT_EXISING_URL_SERVICE_MEC_LIVENESS} + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC011_SRV_MSL_002_OK + [Documentation] + ... Check that the IUT updates the liveness of a MEC service instance + ... when requested by a MEC Application + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Set Headers {"Authorization":"${TOKEN}"} + + ${file}= Catenate SEPARATOR= jsons/ ServiceLivenessUpdate .json + ${body}= Get File ${file} + Update MEC service liveness ${URL_SERVICE_MEC_LIVENESS} ${body} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ServiceLivenessInfo + Check Response Contains ${response['body']} state ACTIVE + +TP_MEC_MEC011_SRV_MSL_002_BR + [Documentation] + ... Check that the IUT responds with an error when + ... incorrect parameters were sent by a MEC Application + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Set Headers {"Authorization":"${TOKEN}"} + + ${file}= Catenate SEPARATOR= jsons/ ServiceLivenessUpdateError .json + ${body}= Get File ${file} + Update MEC service liveness ${URL_SERVICE_MEC_LIVENESS} ${body} + Check HTTP Response Status Code Is 400 + + +*** Keywords *** +Individual MEC service liveness + [Arguments] ${URL_MEC_SERVICE_LIVENESS} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + Get ${URL_MEC_SERVICE_LIVENESS} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Update MEC service liveness + [Arguments] ${URL_MEC_SERVICE_LIVENESS} ${body} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Patch ${URL_MEC_SERVICE_LIVENESS} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + \ No newline at end of file diff --git a/SRV/README.md b/MEC011/SRV/LIV/README.md similarity index 100% rename from SRV/README.md rename to MEC011/SRV/LIV/README.md diff --git a/MEC011/SRV/LIV/environment/variables.txt b/MEC011/SRV/LIV/environment/variables.txt new file mode 100644 index 0000000..e711cbd --- /dev/null +++ b/MEC011/SRV/LIV/environment/variables.txt @@ -0,0 +1,14 @@ +*** Variables *** +# Generic variables +${SCHEMA} http +${HOST} 127.0.0.1 +${PORT} 8081 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} mec_app_support +${apiVersion} v1 + +# Specific variables +${URL_SERVICE_MEC_LIVENESS} /link/to/individual/mecServiceLiveness +${NOT_EXISING_URL_SERVICE_MEC_LIVENESS} /not_existing_link/to/individual/mecServiceLiveness \ No newline at end of file diff --git a/MEC011/SRV/LIV/jsons/ServiceLivenessUpdate.json b/MEC011/SRV/LIV/jsons/ServiceLivenessUpdate.json new file mode 100644 index 0000000..255ddbd --- /dev/null +++ b/MEC011/SRV/LIV/jsons/ServiceLivenessUpdate.json @@ -0,0 +1,3 @@ +{ + "state": "ACTIVE" +} \ No newline at end of file diff --git a/MEC011/SRV/LIV/jsons/ServiceLivenessUpdateError.json b/MEC011/SRV/LIV/jsons/ServiceLivenessUpdateError.json new file mode 100644 index 0000000..78b4a72 --- /dev/null +++ b/MEC011/SRV/LIV/jsons/ServiceLivenessUpdateError.json @@ -0,0 +1,3 @@ +{ + "state": "INACTIVE" +} \ No newline at end of file diff --git a/MEC011/SRV/LIV/schemas/ServiceLivenessInfo.schema.json b/MEC011/SRV/LIV/schemas/ServiceLivenessInfo.schema.json new file mode 100644 index 0000000..0a68027 --- /dev/null +++ b/MEC011/SRV/LIV/schemas/ServiceLivenessInfo.schema.json @@ -0,0 +1,41 @@ +{ + "description": "the liveness information of a MEC service instance", + "type": "object", + "required": [ + "state", + "timeStamp", + "interval" + ], + "properties": { + "state": { + "description": "This enumeration defines the possible states of a service.", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE", + "SUSPENDED" + ], + "example": "ACTIVE" + }, + "timeStamp": { + "type": "object", + "required": [ + "seconds", + "nanoSeconds" + ], + "properties": { + "seconds": { + "type": "integer", + "format": "uint32" + }, + "nanoSeconds": { + "type": "integer", + "format": "uint32" + } + } + }, + "interval": { + "type": "integer" + } + } +} \ No newline at end of file diff --git a/SRV/SAQ/README.md b/MEC011/SRV/README.md similarity index 100% rename from SRV/SAQ/README.md rename to MEC011/SRV/README.md diff --git a/SRV/SAQ/PlatServices.robot b/MEC011/SRV/SAQ/PlatServices.robot similarity index 83% rename from SRV/SAQ/PlatServices.robot rename to MEC011/SRV/SAQ/PlatServices.robot index 10c254d..8843f5f 100644 --- a/SRV/SAQ/PlatServices.robot +++ b/MEC011/SRV/SAQ/PlatServices.robot @@ -3,7 +3,7 @@ Documentation ... A test suite for validating Service Availability Query (SAQ) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -14,12 +14,12 @@ Default Tags TC_MEC_SRV_SAQ *** Test Cases *** -TC_MEC_SRV_SAQ_001_OK +TP_MEC_MEC011_SRV_SAQ_001_OK [Documentation] ... Check that the IUT responds with a list of available MEC services ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.3.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.3.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfoList [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -28,24 +28,24 @@ TC_MEC_SRV_SAQ_001_OK Check HTTP Response Body Json Schema Is ServiceInfoList -TC_MEC_SRV_SAQ_001_BR +TP_MEC_MEC011_SRV_SAQ_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.3.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.3.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of available MEC services with parameters instance_id ${INVALID_VALUE} Check HTTP Response Status Code Is 400 -TC_MEC_SRV_SAQ_002_OK +TP_MEC_MEC011_SRV_SAQ_002_OK [Documentation] ... Check that the IUT responds with the information on a specific service ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.4.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.4.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfoList [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -55,12 +55,12 @@ TC_MEC_SRV_SAQ_002_OK Check Response Contains ${response['body']} serInstanceId ${SERVICE_ID} -TC_MEC_SRV_SAQ_002_NF +TP_MEC_MEC011_SRV_SAQ_002_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.4.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.4.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get specific MEC service ${NON_EXISTENT_SERVICE_ID} @@ -72,6 +72,7 @@ Get list of available MEC services with parameters [Arguments] ${key}=None ${value}=None Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/services?${key}=${value} ${output}= Output response Set Suite Variable ${response} ${output} @@ -79,6 +80,7 @@ Get list of available MEC services with parameters Get list of available MEC services Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/services ${output}= Output response Set Suite Variable ${response} ${output} @@ -87,6 +89,7 @@ Get specific MEC service [Arguments] ${serviceId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/services/${serviceId} ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SRV/SRVSUB/README.md b/MEC011/SRV/SAQ/README.md similarity index 100% rename from SRV/SRVSUB/README.md rename to MEC011/SRV/SAQ/README.md diff --git a/SRV/SAQ/environment/variables.txt b/MEC011/SRV/SAQ/environment/variables.txt similarity index 94% rename from SRV/SAQ/environment/variables.txt rename to MEC011/SRV/SAQ/environment/variables.txt index fcdf75e..3678581 100644 --- a/SRV/SAQ/environment/variables.txt +++ b/MEC011/SRV/SAQ/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 +${HOST} 127.0.0.1 ${PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/MEC011/SRV/SAQ/schemas/ServiceInfo.schema.json b/MEC011/SRV/SAQ/schemas/ServiceInfo.schema.json new file mode 100644 index 0000000..0615340 --- /dev/null +++ b/MEC011/SRV/SAQ/schemas/ServiceInfo.schema.json @@ -0,0 +1,307 @@ +{ + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "serName", + "version", + "state", + "transportInfo", + "serializer" + ], + "properties": { + "serInstanceId": { + "description": "Identifier of the service instance assigned by the MEC platform.", + "type": "string", + "readOnly": true, + "example": "ServiceInstance123" + }, + "serName": { + "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.", + "type": "string", + "example": "ExampleService" + }, + "serCategory": { + "description": "This type represents the category reference", + "type": "object", + "required": [ + "href", + "id", + "name", + "version" + ], + "properties": { + "href": { + "description": "Reference of the catalogue", + "type": "string", + "format": "uri", + "example": "/example/catalogue1" + }, + "id": { + "description": "Unique identifier of the category", + "type": "string", + "example": "id12345" + }, + "name": { + "description": "Name of the category, example values include RNI, Location & Bandwidth Management", + "type": "string", + "example": "RNI" + }, + "version": { + "description": "Category version", + "type": "string", + "example": "version1" + } + } + }, + "version": { + "description": "Service version", + "type": "string", + "example": "ServiceVersion1" + }, + "state": { + "description": "This enumeration defines the possible states of a service.", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE", + "SUSPENDED" + ], + "example": "ACTIVE" + }, + "transportInfo": { + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "id", + "name", + "type", + "protocol", + "version", + "endpoint", + "security" + ], + "properties": { + "id": { + "description": "The identifier of this transport", + "type": "string", + "example": "TransId12345" + }, + "name": { + "description": "The name of this transport", + "type": "string", + "example": "REST" + }, + "description": { + "description": "Human-readable description of this transport", + "type": "string", + "example": "REST API" + }, + "type": { + "description": "The enumeration TransportType represents types of transports", + "type": "string", + "enum": [ + "REST_HTTP", + "MB_TOPIC_BASED", + "MB_ROUTING", + "MB_PUBSUB", + "RPC", + "RPC_STREAMING", + "WEBSOCKET" + ], + "example": "REST_HTTP" + }, + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "example": "HTTP" + }, + "version": { + "description": "The version of the protocol used", + "type": "string", + "example": "2.0" + }, + "endpoint": { + "description": "This type represents information about a transport endpoint", + "type": "object", + "oneOf": [{ + "description": "Entry point information of the service as string, formatted according to URI syntax", + "type": "object", + "required": [ + "uris" + ], + "properties": { + "uris": { + "type": "array", + "minItems": 0, + "items": { + "description": "Entry point information of the service", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/service/EntryPoint" + } + } + } + }, + { + "description": "Entry point information of the service as one or more pairs of IP address and port", + "type": "object", + "required": [ + "addresses" + ], + "properties": { + "addresses": { + "type": "array", + "minItems": 0, + "items": { + "description": "A IP address and port pair", + "type": "object", + "required": [ + "host", + "port" + ], + "properties": { + "host": { + "description": "Host portion of the address", + "type": "string", + "example": "192.0.2.0" + }, + "port": { + "description": "Port portion of the address", + "type": "integer", + "format": "uint32", + "example": 8080 + } + } + } + } + } + }, + { + "description": "Entry point information of the service in a format defined by an implementation, or in an external specification.", + "type": "object", + "required": [ + "alternative" + ], + "properties": { + "alternative": { + "type": "object" + } + } + } + ] + }, + "security": { + "description": "This type represents security information related to a transport", + "type": "object", + "properties": { + "oAuth2Info": { + "description": "Parameters related to use of OAuth 2.0", + "required": [ + "grantTypes", + "tokenEndpoint" + ], + "properties": { + "grantTypes": { + "description": "List of supported OAuth 2.0 grant types.", + "type": "array", + "minItems": 1, + "maxItems": 4, + "items": { + "description": "OAuth 2.0 grant type", + "type": "string", + "enum": [ + "OAUTH2_AUTHORIZATION_CODE", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_RESOURCE_OWNER", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "example": "OAUTH2_CLIENT_CREDENTIALS" + } + }, + "tokenEndpoint": { + "description": "The token endpoint", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/security/TokenEndPoint" + } + }, + "type": "object" + } + } + }, + "implSpecificInfo": { + "description": "Additional implementation specific details of the transport", + "type": "object" + } + } + }, + "serializer": { + "description": "The enumeration represents types of serializers", + "type": "string", + "enum": [ + "JSON", + "XML", + "PROTOBUF3" + ], + "example": "JSON" + }, + "scopeOfLocality": { + "description": "The scope of locality as expressed by \"consumedLocalOnly\" and \"isLocal\". If absent, defaults to MEC_HOST", + "type": "string", + "enum": [ + "MEC_SYSTEM", + "MEC_HOST", + "NFVI_POP", + "ZONE", + "ZONE_GROUP", + "NFVI_NODE" + ], + "example": "MEC_SYSTEM" + }, + "consumedLocalOnly": { + "description": "Indicate whether the service can only be consumed by the MEC applications located in the same locality (as defined by scopeOfLocality) as this service instance.", + "type": "boolean", + "example": false + }, + "isLocal": { + "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.", + "type": "boolean", + "example": true + }, + "livenessInterval": { + "type": "integer" + }, + "_links": { + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a type of link and may be referenced from data structures", + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/example" + } + } + }, + "liveness": { + "description": "This type represents a type of link and may be referenced from data structures", + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/example" + } + } + } + } + } + } + } \ No newline at end of file diff --git a/SRV/APPSAQ/schemas/ServiceInfo.schema.json b/MEC011/SRV/SAQ/schemas/ServiceInfo.schema.json_OLD similarity index 100% rename from SRV/APPSAQ/schemas/ServiceInfo.schema.json rename to MEC011/SRV/SAQ/schemas/ServiceInfo.schema.json_OLD diff --git a/SRV/SAQ/schemas/ServiceInfoList.schema.json b/MEC011/SRV/SAQ/schemas/ServiceInfoList.schema.json similarity index 100% rename from SRV/SAQ/schemas/ServiceInfoList.schema.json rename to MEC011/SRV/SAQ/schemas/ServiceInfoList.schema.json diff --git a/SRV/SRVSUB/PlatSrvSubscriptions.robot b/MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot similarity index 85% rename from SRV/SRVSUB/PlatSrvSubscriptions.robot rename to MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot index 7b61bf7..1c9edc8 100644 --- a/SRV/SRVSUB/PlatSrvSubscriptions.robot +++ b/MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot @@ -3,7 +3,7 @@ Documentation ... A test suite for validating Service Subscriptions (SRVSUB) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,12 +13,12 @@ Default Tags TC_MEC_SRV_SRVSUB *** Test Cases *** -TC_MEC_SRV_SRVSUB_001_OK +TP_MEC_MEC011_SRV_SRVSUB_001_OK [Documentation] ... Check that the IUT responds with a list of subscriptions for notifications ... on services availability when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.8.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.8.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/MecServiceMgmtApiSubscriptionLinkList [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -27,24 +27,24 @@ TC_MEC_SRV_SRVSUB_001_OK Check HTTP Response Body Json Schema Is SubscriptionLinkList -TC_MEC_SRV_SRVSUB_001_NF +TP_MEC_MEC011_SRV_SRVSUB_001_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.8.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.8.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of subscriptions ${NON_EXISTENT_INSTANCE_ID} Check HTTP Response Status Code Is 404 -TC_MEC_SRV_SRVSUB_002_OK +TP_MEC_MEC011_SRV_SRVSUB_002_OK [Documentation] ... Check that the IUT acknowledges the subscription by a MEC Application ... to notifications on service availability events ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.8.3.4 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.8.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -56,12 +56,12 @@ TC_MEC_SRV_SRVSUB_002_OK Check Response Contains ${response['body']} callbackReference ${APP_SRVSUB_NOTIF_CALLBACK_URI} -TC_MEC_SRV_SRVSUB_002_BR +TP_MEC_MEC011_SRV_SRVSUB_002_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.8.3.4 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.8.3.4 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -69,12 +69,12 @@ TC_MEC_SRV_SRVSUB_002_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_SRVSUB_003_OK +TP_MEC_MEC011_SRV_SRVSUB_003_OK [Documentation] ... Check that the IUT responds with the information on a specific subscription ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.9.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.9.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -84,36 +84,36 @@ TC_MEC_SRV_SRVSUB_003_OK Check Response Contains ${response['body']} subscriptionType SerAvailabilityNotificationSubscription -TC_MEC_SRV_SRVSUB_003_NF +TP_MEC_MEC011_SRV_SRVSUB_003_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.9.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.9.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual subscription ${APP_INSTANCE_ID} ${NON_EXISTENT_SUBSCRIPTION_ID} Check HTTP Response Status Code Is 404 -TC_MEC_SRV_SRVSUB_004_OK +TP_MEC_MEC011_SRV_SRVSUB_004_OK [Documentation] ... Check that the IUT acknowledges the unsubscribe from service availability event notifications ... when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.9.3.5 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.9.3.5 [Tags] PIC_MEC_PLAT PIC_SERVICES Remove subscription ${APP_INSTANCE_ID} ${SUBSCRIPTION_ID} Check HTTP Response Status Code Is 204 -TC_MEC_SRV_SRVSUB_004_NF +TP_MEC_MEC011_SRV_SRVSUB_004_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.9.3.5 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.9.3.5 [Tags] PIC_MEC_PLAT PIC_SERVICES Remove subscription ${NON_EXISTENT_INSTANCE_ID} ${SUBSCRIPTION_ID} @@ -125,6 +125,7 @@ Get list of subscriptions [Arguments] ${appInstanceId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -144,6 +145,7 @@ Get individual subscription [Arguments] ${appInstanceId} ${subscriptionId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -152,6 +154,7 @@ Remove subscription [Arguments] ${appInstanceId} ${subscriptionId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Delete ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SRV/TIME/README.md b/MEC011/SRV/SRVSUB/README.md similarity index 100% rename from SRV/TIME/README.md rename to MEC011/SRV/SRVSUB/README.md diff --git a/SRV/SRVSUB/environment/variables.txt b/MEC011/SRV/SRVSUB/environment/variables.txt similarity index 94% rename from SRV/SRVSUB/environment/variables.txt rename to MEC011/SRV/SRVSUB/environment/variables.txt index 726b694..0e357a5 100644 --- a/SRV/SRVSUB/environment/variables.txt +++ b/MEC011/SRV/SRVSUB/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 +${HOST} 127.0.0.1 ${PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscription.json b/MEC011/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscription.json similarity index 100% rename from SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscription.json rename to MEC011/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscription.json diff --git a/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json b/MEC011/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json similarity index 100% rename from SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json rename to MEC011/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json diff --git a/SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.schema.json b/MEC011/SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.schema.json similarity index 96% rename from SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.schema.json rename to MEC011/SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.schema.json index 26682d5..e84043b 100644 --- a/SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.schema.json +++ b/MEC011/SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.schema.json @@ -42,6 +42,13 @@ "filteringCriteria": { "description": "Filtering criteria to match services for which events are requested to be reported. If absent, matches all services. All child attributes are combined with the logical \"AND\" operation.", "type": "object", + "not": { + "required": [ + "serInstanceIds", + "serNames", + "serCategories" + ] + }, "properties": { "serInstanceIds": { "description": "Identifiers of service instances about which to report events.", @@ -111,7 +118,8 @@ "type": "string", "enum": [ "ACTIVE", - "INACTIVE" + "INACTIVE", + "SUSPENDED" ], "example": "ACTIVE" } diff --git a/SRV/SRVSUB/schemas/SubscriptionLink.schema.json b/MEC011/SRV/SRVSUB/schemas/SubscriptionLink.schema.json similarity index 100% rename from SRV/SRVSUB/schemas/SubscriptionLink.schema.json rename to MEC011/SRV/SRVSUB/schemas/SubscriptionLink.schema.json diff --git a/SRV/SRVSUB/schemas/SubscriptionLinkList.schema.json b/MEC011/SRV/SRVSUB/schemas/SubscriptionLinkList.schema.json similarity index 100% rename from SRV/SRVSUB/schemas/SubscriptionLinkList.schema.json rename to MEC011/SRV/SRVSUB/schemas/SubscriptionLinkList.schema.json diff --git a/SRV/TIME/PlatTiming.robot b/MEC011/SRV/TIME/PlatTiming.robot similarity index 82% rename from SRV/TIME/PlatTiming.robot rename to MEC011/SRV/TIME/PlatTiming.robot index 63c9032..e93be9e 100644 --- a/SRV/TIME/PlatTiming.robot +++ b/MEC011/SRV/TIME/PlatTiming.robot @@ -3,7 +3,7 @@ Documentation ... A test suite for validating Timing capabilities (TIME) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -14,12 +14,12 @@ Default Tags TC_MEC_SRV_TIME *** Test Cases *** -TC_MEC_SRV_TIME_001_OK +TP_MEC_MEC011_SRV_TIME_001_OK [Documentation] ... Check that the IUT responds with timing capabilities ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.5.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.5.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TimingCaps [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -28,12 +28,12 @@ TC_MEC_SRV_TIME_001_OK Check HTTP Response Body Json Schema Is TimingCaps -TC_MEC_SRV_TIME_002_OK +TP_MEC_MEC011_SRV_TIME_002_OK [Documentation] ... Check that the IUT responds with current time ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.6.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.6.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/CurrentTime [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -47,12 +47,14 @@ Get time capabilities Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/timing/timing_caps + Set Headers {"Content-Type":"*/*"} ${output}= Output response Set Suite Variable ${response} ${output} Get current time Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/timing/current_time ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SRV/TRAF/README.md b/MEC011/SRV/TIME/README.md similarity index 100% rename from SRV/TRAF/README.md rename to MEC011/SRV/TIME/README.md diff --git a/SRV/TIME/environment/variables.txt b/MEC011/SRV/TIME/environment/variables.txt similarity index 91% rename from SRV/TIME/environment/variables.txt rename to MEC011/SRV/TIME/environment/variables.txt index 8837e30..3ae69ae 100644 --- a/SRV/TIME/environment/variables.txt +++ b/MEC011/SRV/TIME/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 +${HOST} 127.0.0.1 ${PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/SRV/TIME/schemas/CurrentTime.schema.json b/MEC011/SRV/TIME/schemas/CurrentTime.schema.json similarity index 100% rename from SRV/TIME/schemas/CurrentTime.schema.json rename to MEC011/SRV/TIME/schemas/CurrentTime.schema.json diff --git a/SRV/TIME/schemas/TimingCaps.schema.json b/MEC011/SRV/TIME/schemas/TimingCaps.schema.json similarity index 100% rename from SRV/TIME/schemas/TimingCaps.schema.json rename to MEC011/SRV/TIME/schemas/TimingCaps.schema.json diff --git a/SRV/TRAF/PlatTrafficRules.robot b/MEC011/SRV/TRAF/PlatTrafficRules.robot similarity index 78% rename from SRV/TRAF/PlatTrafficRules.robot rename to MEC011/SRV/TRAF/PlatTrafficRules.robot index f8cf514..1bf634b 100644 --- a/SRV/TRAF/PlatTrafficRules.robot +++ b/MEC011/SRV/TRAF/PlatTrafficRules.robot @@ -3,7 +3,7 @@ Documentation ... A test suite for validating Traffic rules (TRAF) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,12 +13,12 @@ Default Tags TC_MEC_SRV_TRAF *** Test Cases *** -TC_MEC_SRV_TRAF_001_OK +TP_MEC_MEC011_SRV_TRAF_001_OK [Documentation] ... Check that the IUT responds with a list of available traffic rules ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.7.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.7.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -27,24 +27,24 @@ TC_MEC_SRV_TRAF_001_OK Check HTTP Response Body Json Schema Is TrafficRuleList -TC_MEC_SRV_TRAF_001_NF +TP_MEC_MEC011_SRV_TRAF_001_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.8.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of traffic rules ${NON_EXISTENT_APP_INSTANCE_ID} Check HTTP Response Status Code Is 404 -TC_MEC_SRV_TRAF_002_OK +TP_MEC_MEC011_SRV_TRAF_002_OK [Documentation] ... Check that the IUT responds with the information on a specific traffic rule ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.8.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -54,12 +54,12 @@ TC_MEC_SRV_TRAF_002_OK Check Response Contains ${response['body']} trafficRuleId ${TRAFFIC_RULE_ID} -TC_MEC_SRV_TRAF_003_OK +TP_MEC_MEC011_SRV_TRAF_003_OK [Documentation] ... Check that the IUT updates a specific traffic rule ... when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.8.3.2 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.2 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -70,12 +70,12 @@ TC_MEC_SRV_TRAF_003_OK Check Response Contains ${response['body']} action DROP -TC_MEC_SRV_TRAF_003_BR +TP_MEC_MEC011_SRV_TRAF_003_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.8.3.2 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.2 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -83,36 +83,37 @@ TC_MEC_SRV_TRAF_003_BR Check HTTP Response Status Code Is 400 -TC_MEC_SRV_TRAF_003_NF +TP_MEC_MEC011_SRV_TRAF_003_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.8.3.2 + ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.2 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES Update a traffic rule ${APP_INSTANCE_ID} ${NON_EXISTENT_TRAFFIC_RULE_ID} TrafficRuleUpdate Check HTTP Response Status Code Is 404 - -TC_MEC_SRV_TRAF_003_PF - [Documentation] - ... Check that the IUT responds with an error when - ... a request sent by a MEC Application doesn't comply with a required condition - ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.8.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule - - [Tags] PIC_MEC_PLAT PIC_SERVICES - Update a traffic rule with invalid etag ${APP_INSTANCE_ID} ${TRAFFIC_RULE_ID} TrafficRuleUpdate - Check HTTP Response Status Code Is 412 +## Commented as ETag is not mandatory +#TP_MEC_MEC011_SRV_TRAF_003_PF +# [Documentation] +# ... Check that the IUT responds with an error when +# ... a request sent by a MEC Application doesn't comply with a required condition +# ... +# ... Reference ETSI GS MEC 011 V2.2.1, clause 7.2.8.3.2 +# ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule +# +# [Tags] PIC_MEC_PLAT PIC_SERVICES +# Update a traffic rule with invalid etag ${APP_INSTANCE_ID} ${TRAFFIC_RULE_ID} TrafficRuleUpdate +# Check HTTP Response Status Code Is 412 *** Keywords *** Get list of traffic rules [Arguments] ${appInstanceId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/traffic_rules ${output}= Output response Set Suite Variable ${response} ${output} @@ -121,6 +122,7 @@ Get individual traffic rule [Arguments] ${appInstanceId} ${trafficRuleId} Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/traffic_rules/${trafficRuleId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -130,6 +132,7 @@ Update a traffic rule Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} PUT ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/traffic_rules/${trafficRuleId} ${body} diff --git a/SRV/TRANS/README.md b/MEC011/SRV/TRAF/README.md similarity index 100% rename from SRV/TRANS/README.md rename to MEC011/SRV/TRAF/README.md diff --git a/SRV/TRAF/environment/variables.txt b/MEC011/SRV/TRAF/environment/variables.txt similarity index 94% rename from SRV/TRAF/environment/variables.txt rename to MEC011/SRV/TRAF/environment/variables.txt index 616d47d..74db1cc 100644 --- a/SRV/TRAF/environment/variables.txt +++ b/MEC011/SRV/TRAF/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 +${HOST} 127.0.0.1 ${PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/SRV/TRAF/jsons/TrafficRuleUpdate.json b/MEC011/SRV/TRAF/jsons/TrafficRuleUpdate.json similarity index 100% rename from SRV/TRAF/jsons/TrafficRuleUpdate.json rename to MEC011/SRV/TRAF/jsons/TrafficRuleUpdate.json diff --git a/SRV/TRAF/jsons/TrafficRuleUpdateError.json b/MEC011/SRV/TRAF/jsons/TrafficRuleUpdateError.json similarity index 100% rename from SRV/TRAF/jsons/TrafficRuleUpdateError.json rename to MEC011/SRV/TRAF/jsons/TrafficRuleUpdateError.json diff --git a/SRV/TRAF/schemas/TrafficRule.schema.json b/MEC011/SRV/TRAF/schemas/TrafficRule.schema.json similarity index 100% rename from SRV/TRAF/schemas/TrafficRule.schema.json rename to MEC011/SRV/TRAF/schemas/TrafficRule.schema.json diff --git a/SRV/TRAF/schemas/TrafficRuleList.schema.json b/MEC011/SRV/TRAF/schemas/TrafficRuleList.schema.json similarity index 100% rename from SRV/TRAF/schemas/TrafficRuleList.schema.json rename to MEC011/SRV/TRAF/schemas/TrafficRuleList.schema.json diff --git a/SRV/TRANS/PlatTransport.robot b/MEC011/SRV/TRANS/PlatTransport.robot similarity index 81% rename from SRV/TRANS/PlatTransport.robot rename to MEC011/SRV/TRANS/PlatTransport.robot index ade483f..6dd57cc 100644 --- a/SRV/TRANS/PlatTransport.robot +++ b/MEC011/SRV/TRANS/PlatTransport.robot @@ -3,7 +3,7 @@ Documentation ... A test suite for validating Transport (TRANS) operations. -Resource ../../GenericKeywords.robot +Resource ../../../GenericKeywords.robot Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem @@ -13,12 +13,12 @@ Default Tags TC_MEC_SRV_TRANS *** Test Cases *** -TC_MEC_SRV_TRANS_001_OK +TP_MEC_MEC011_SRV_TRANS_001_OK [Documentation] ... Check that the IUT responds with a list of available transports ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.5.3.1 + ... Reference ETSI GS MEC 011 V2.2.1, clause 8.2.5.3.1 ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/TransportInfo [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -30,6 +30,7 @@ TC_MEC_SRV_TRANS_001_OK Get list of available transports Set Headers {"Accept":"application/json"} Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} Get ${apiRoot}/${apiName}/${apiVersion}/transports ${output}= Output response Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC011/SRV/TRANS/README.md b/MEC011/SRV/TRANS/README.md new file mode 100644 index 0000000..e69de29 diff --git a/SRV/TRANS/environment/variables.txt b/MEC011/SRV/TRANS/environment/variables.txt similarity index 93% rename from SRV/TRANS/environment/variables.txt rename to MEC011/SRV/TRANS/environment/variables.txt index 54a9fa3..f5a43dd 100644 --- a/SRV/TRANS/environment/variables.txt +++ b/MEC011/SRV/TRANS/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 +${HOST} 127.0.0.1 ${PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/SRV/TRANS/schemas/TransportInfoList.schema.json b/MEC011/SRV/TRANS/schemas/TransportInfoList.schema.json similarity index 100% rename from SRV/TRANS/schemas/TransportInfoList.schema.json rename to MEC011/SRV/TRANS/schemas/TransportInfoList.schema.json diff --git a/SRV/SAQ/schemas/ServiceInfo.schema.json b/SRV/SAQ/schemas/ServiceInfo.schema.json deleted file mode 100644 index 50fbfe2..0000000 --- a/SRV/SAQ/schemas/ServiceInfo.schema.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "description": "This type represents the general information of a MEC service.", - "type": "object", - "required": [ - "serName", - "version", - "state", - "transportInfo", - "serializer" - ], - "properties": { - "serInstanceId": { - "description": "Identifier of the service instance assigned by the MEC platform.", - "type": "string", - "readOnly": true, - "example": "ServiceInstance123" - }, - "serName": { - "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.", - "type": "string", - "example": "ExampleService" - }, - "serCategory": { - "description": "This type represents the category reference", - "type": "object", - "required": [ - "href", - "id", - "name", - "version" - ], - "properties": { - "href": { - "description": "Reference of the catalogue", - "type": "string", - "format": "uri", - "example": "/example/catalogue1" - }, - "id": { - "description": "Unique identifier of the category", - "type": "string", - "example": "id12345" - }, - "name": { - "description": "Name of the category, example values include RNI, Location & Bandwidth Management", - "type": "string", - "example": "RNI" - }, - "version": { - "description": "Category version", - "type": "string", - "example": "version1" - } - } - }, - "version": { - "description": "Service version", - "type": "string", - "example": "ServiceVersion1" - }, - "state": { - "description": "This enumeration defines the possible states of a service.", - "type": "string", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "example": "ACTIVE" - }, - "transportInfo": { - "description": "This type represents the general information of a MEC service.", - "type": "object", - "required": [ - "id", - "name", - "type", - "protocol", - "version", - "endpoint", - "security" - ], - "properties": { - "id": { - "description": "The identifier of this transport", - "type": "string", - "example": "TransId12345" - }, - "name": { - "description": "The name of this transport", - "type": "string", - "example": "REST" - }, - "description": { - "description": "Human-readable description of this transport", - "type": "string", - "example": "REST API" - }, - "type": { - "description": "The enumeration TransportType represents types of transports", - "type": "string", - "enum": [ - "REST_HTTP", - "MB_TOPIC_BASED", - "MB_ROUTING", - "MB_PUBSUB", - "RPC", - "RPC_STREAMING", - "WEBSOCKET" - ], - "example": "REST_HTTP" - }, - "protocol": { - "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", - "type": "string", - "example": "HTTP" - }, - "version": { - "description": "The version of the protocol used", - "type": "string", - "example": "2.0" - }, - "endpoint": { - "description": "This type represents information about a transport endpoint", - "type": "object", - "oneOf": [{ - "description": "Entry point information of the service as string, formatted according to URI syntax", - "type": "object", - "required": [ - "uris" - ], - "properties": { - "uris": { - "type": "array", - "minItems": 0, - "items": { - "description": "Entry point information of the service", - "type": "string", - "format": "uri", - "example": "/mecSerMgmtApi/service/EntryPoint" - } - } - } - }, - { - "description": "Entry point information of the service as one or more pairs of IP address and port", - "type": "object", - "required": [ - "addresses" - ], - "properties": { - "addresses": { - "type": "array", - "minItems": 0, - "items": { - "description": "A IP address and port pair", - "type": "object", - "required": [ - "host", - "port" - ], - "properties": { - "host": { - "description": "Host portion of the address", - "type": "string", - "example": "192.0.2.0" - }, - "port": { - "description": "Port portion of the address", - "type": "integer", - "format": "uint32", - "example": 8080 - } - } - } - } - } - }, - { - "description": "Entry point information of the service in a format defined by an implementation, or in an external specification.", - "type": "object", - "required": [ - "alternative" - ], - "properties": { - "alternative": { - "type": "object" - } - } - } - ] - }, - "security": { - "description": "This type represents security information related to a transport", - "type": "object", - "properties": { - "oAuth2Info": { - "description": "Parameters related to use of OAuth 2.0", - "required": [ - "grantTypes", - "tokenEndpoint" - ], - "properties": { - "grantTypes": { - "description": "List of supported OAuth 2.0 grant types.", - "type": "array", - "minItems": 1, - "maxItems": 4, - "items": { - "description": "OAuth 2.0 grant type", - "type": "string", - "enum": [ - "OAUTH2_AUTHORIZATION_CODE", - "OAUTH2_IMPLICIT_GRANT", - "OAUTH2_RESOURCE_OWNER", - "OAUTH2_CLIENT_CREDENTIALS" - ], - "example": "OAUTH2_CLIENT_CREDENTIALS" - } - }, - "tokenEndpoint": { - "description": "The token endpoint", - "type": "string", - "format": "uri", - "example": "/mecSerMgmtApi/security/TokenEndPoint" - } - }, - "type": "object" - } - } - }, - "implSpecificInfo": { - "description": "Additional implementation specific details of the transport", - "type": "object" - } - } - }, - "serializer": { - "description": "The enumeration represents types of serializers", - "type": "string", - "enum": [ - "JSON", - "XML", - "PROTOBUF3" - ], - "example": "JSON" - }, - "scopeOfLocality": { - "description": "The scope of locality as expressed by \"consumedLocalOnly\" and \"isLocal\". If absent, defaults to MEC_HOST", - "type": "string", - "enum": [ - "MEC_SYSTEM", - "MEC_HOST", - "NFVI_POP", - "ZONE", - "ZONE_GROUP", - "NFVI_NODE" - ], - "example": "MEC_SYSTEM" - }, - "consumedLocalOnly": { - "description": "Indicate whether the service can only be consumed by the MEC applications located in the same locality (as defined by scopeOfLocality) as this service instance.", - "type": "boolean", - "example": false - }, - "isLocal": { - "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.", - "type": "boolean", - "example": true - } - } -} \ No newline at end of file -- GitLab From 4ff77af16bdb3bc6f2799e2ab0a45c5115d98a89 Mon Sep 17 00:00:00 2001 From: piscione Date: Mon, 19 Jul 2021 18:05:39 +0200 Subject: [PATCH 48/63] Minor. --- MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json | 1 - 1 file changed, 1 deletion(-) diff --git a/MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json b/MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json index b30d168..672c8a0 100644 --- a/MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json +++ b/MEC011/SRV/APPSAQ/jsons/ServiceInfoError.json @@ -1,6 +1,5 @@ { "Name": "WRONG_PARAMETER_NAME", - "serName": "WRONG_PARAMETER_NAME", "version": "reprehenderit Ut non commodo", "state": "INACTIVE", "transportInfo": { -- GitLab From b0232eb97e6c88b45aa650d3ed98f39aa749891f Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 22 Jul 2021 12:10:03 +0200 Subject: [PATCH 49/63] Updated TCs for MEC028 v2.2.1 --- MEC028/WAI/AP_INFO/WaiApInfo.robot | 12 +- MEC028/WAI/AP_INFO/environment/variables.txt | 2 +- MEC028/WAI/EXT_SUB/ExistingSubscription.robot | 24 +- MEC028/WAI/EXT_SUB/environment/variables.txt | 2 +- MEC028/WAI/MEAS/WaiMeasurement.robot | 189 ++++++++++ MEC028/WAI/MEAS/environment/variables.txt | 14 + MEC028/WAI/MEAS/jsons/MeasurementConfig.json | 16 + .../MEAS/jsons/MeasurementConfigError.json | 16 + .../MEAS/jsons/MeasurementConfigUpdate.json | 16 + .../schemas/MeasurementConfig.schema.json | 329 ++++++++++++++++++ .../MeasurementConfigLinkList.schema.json | 46 +++ MEC028/WAI/STA_INFO/WaiStaInfo.robot | 12 +- MEC028/WAI/STA_INFO/environment/variables.txt | 2 +- MEC028/WAI/SUB/WaiSubscription.robot | 26 +- MEC028/WAI/SUB/environment/variables.txt | 4 +- 15 files changed, 667 insertions(+), 43 deletions(-) create mode 100644 MEC028/WAI/MEAS/WaiMeasurement.robot create mode 100644 MEC028/WAI/MEAS/environment/variables.txt create mode 100644 MEC028/WAI/MEAS/jsons/MeasurementConfig.json create mode 100644 MEC028/WAI/MEAS/jsons/MeasurementConfigError.json create mode 100644 MEC028/WAI/MEAS/jsons/MeasurementConfigUpdate.json create mode 100644 MEC028/WAI/MEAS/schemas/MeasurementConfig.schema.json create mode 100644 MEC028/WAI/MEAS/schemas/MeasurementConfigLinkList.schema.json diff --git a/MEC028/WAI/AP_INFO/WaiApInfo.robot b/MEC028/WAI/AP_INFO/WaiApInfo.robot index b8be44a..c181ba0 100644 --- a/MEC028/WAI/AP_INFO/WaiApInfo.robot +++ b/MEC028/WAI/AP_INFO/WaiApInfo.robot @@ -14,8 +14,8 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v TP_MEC_MEC028_SRV_WAI_001_OK [Documentation] ... Check that the IUT responds with the list of WLAN Access Point - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.3.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo ##Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Retrieve the access point information @@ -31,8 +31,8 @@ TP_MEC_MEC028_SRV_WAI_001_OK TP_MEC_MEC028_SRV_WAI_002_OK [Documentation] ... Check that the IUT responds with the list of WLAN Access Point filtered by the macId provided as query parameter - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.3.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo ##Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Retrieve the access point information using filters ${filter} @@ -49,8 +49,8 @@ TP_MEC_MEC028_SRV_WAI_002_OK TP_MEC_MEC028_SRV_WAI_002_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.3.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.3.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo ##Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Retrieve the access point information using filters ${bad_filter} diff --git a/MEC028/WAI/AP_INFO/environment/variables.txt b/MEC028/WAI/AP_INFO/environment/variables.txt index ec621fe..0f20b2e 100644 --- a/MEC028/WAI/AP_INFO/environment/variables.txt +++ b/MEC028/WAI/AP_INFO/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** ${apiRoot} ${apiName} wai -${apiVersion} v1 +${apiVersion} v2 ${MEC-APP_SCHEMA} http ${MEC-APP_HOST} 127.0.0.1 diff --git a/MEC028/WAI/EXT_SUB/ExistingSubscription.robot b/MEC028/WAI/EXT_SUB/ExistingSubscription.robot index 9ebcad0..187ff91 100644 --- a/MEC028/WAI/EXT_SUB/ExistingSubscription.robot +++ b/MEC028/WAI/EXT_SUB/ExistingSubscription.robot @@ -9,13 +9,12 @@ Library String Library OperatingSystem Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false -#GET *** Test Cases *** TP_MEC_MEC028_SRV_WAI_008_OK [Documentation] ... Check that the IUT responds with the list of Subscription" - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Retrieve existing subscription information ${SUB_ID} @@ -28,21 +27,20 @@ TP_MEC_MEC028_SRV_WAI_008_OK TP_MEC_MEC028_SRV_WAI_008_NF [Documentation] ... Check that the IUT responds with an error when a request for existing subscription with incorrect parameters is sent" - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Retrieve existing subscription information ${NOT_EXISTING_SUB_ID} Check HTTP Response Status Code Is 404 -#PUT *** Test Cases *** TP_MEC_MEC028_SRV_WAI_009_OK [Documentation] ... Check that the IUT responds with a Notification Subscription when it is modified" - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.2 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.2 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Modify existing subscription information ${SUB_ID} UpdateAssocStaSubscription.json @@ -55,18 +53,18 @@ TP_MEC_MEC028_SRV_WAI_009_OK TP_MEC_MEC028_SRV_WAI_009_BR [Documentation] ... Check that the IUT responds with an error when an invalid field is set in the subscription modification request" - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.2 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.2 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Modify existing subscription information ${SUB_ID} UpdateAssocStaSubscription_BR.json Check HTTP Response Status Code Is 400 -#DELETE + TP_MEC_MEC028_SRV_WAI_010_OK [Documentation] ... Check that the IUT responds with 204 when an existing subscription is correctly deleted" - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.5 + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.5 Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Remove existing subscription information ${SUB_ID} @@ -75,7 +73,7 @@ TP_MEC_MEC028_SRV_WAI_010_OK TP_MEC_MEC028_SRV_WAI_010_NF [Documentation] ... Check that the IUT responds with an error when an not existing subscription cannot be deleted" - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.6.3.5 + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.5 Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Remove existing subscription information ${NOT_EXISTING_SUB_ID} diff --git a/MEC028/WAI/EXT_SUB/environment/variables.txt b/MEC028/WAI/EXT_SUB/environment/variables.txt index 8e5fb83..d7beea8 100644 --- a/MEC028/WAI/EXT_SUB/environment/variables.txt +++ b/MEC028/WAI/EXT_SUB/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** ${apiRoot} ${apiName} wai -${apiVersion} v1 +${apiVersion} v2 ${MEC-APP_SCHEMA} http ${MEC-APP_HOST} 127.0.0.1 diff --git a/MEC028/WAI/MEAS/WaiMeasurement.robot b/MEC028/WAI/MEAS/WaiMeasurement.robot new file mode 100644 index 0000000..0aa1a6d --- /dev/null +++ b/MEC028/WAI/MEAS/WaiMeasurement.robot @@ -0,0 +1,189 @@ +''[Documentation] robot --outputdir ../../outputs ./WaiMeasurement.robot +... Test Suite to validate WLAN Measurement API (MEAS) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + + +*** Test Cases *** +TP_MEC_MEC028_SRV_WAI_012_OK + [Documentation] + ... Check that the IUT responds with a list of measurement + ... configurations available from the WLAN Access Information Service + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.7.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve a list of list of measurement configurations + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is MeasurementConfigLinkList + +TP_MEC_MEC028_SRV_WAI_013_OK + [Documentation] + ... Check that the IUT responds with a new measurement configuration + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.7.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfig + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ MeasurementConfig.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Create a new measurement configuration ${body} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is MeasurementConfigLinkList + Should Be Equal As Strings ${response['body']['staIdentity']['staId']} ${STA_ID} + Should Be Equal As Strings ${response['body']['measurementId'] ${MEAS_ID} + Should Be Equal As Strings ${json_object['measurementInfo']} ${response['body']['measurementInfo']} + +TP_MEC_MEC028_SRV_WAI_013_BR + [Documentation] + ... Check that the IUT responds with an error when an invalid request is sent + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.7.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfig + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ MeasurementConfigError.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Create a new measurement configuration ${body} + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC028_SRV_WAI_014_OK + [Documentation] + ... Check that the IUT responds with the specified measurement configuration + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.1 + ... "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList" + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Check HTTP Response Body Json Schema Is MeasurementConfig + Retrieve a specified measurement configuration ${MEAS_ID} + Check HTTP Response Status Code Is 200 + Should Be Equal As Strings ${response['body']['measurementId'] ${MEAS_ID} + + + +TP_MEC_MEC028_SRV_WAI_014_NF + [Documentation] + ... Check that the IUT responds with an error when an invalid request is sent + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.1 + ... "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList" + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve a specified measurement configuration ${INVALID_MEASUREMENT_CONFIG_ID} + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC028_SRV_WAI_015_OK + [Documentation] + ... Check that the IUT responds with the modified measurement configuration + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.2 + ... "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList" + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + ${path} Catenate SEPARATOR= jsons/ MeasurementConfigUpdate.json + ${body} Get File ${path} + ${json_object}= Evaluate json.loads('''${body}''') json + Update a specified measurement configuration ${MEAS_ID} ${body} + Check HTTP Response Status Code Is 200 + Should Be Equal As Strings ${response['body']['staIdentity']['staId']} ${json_object['staIdentity']['staId']} + Should Be Equal As Strings ${response['body']['measurementId'] ${MEAS_ID} + Should Be Equal As Strings ${response['body']['measurementInfo']} ${json_object['measurementInfo']} + + + +TP_MEC_MEC028_SRV_WAI_015_NF + [Documentation] + ... Check that the IUT responds with an error when an invalid request is sent + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.2 + ... "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList" + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Update a specified measurement configuration ${INVALID_MEASUREMENT_CONFIG_ID} MeasurementConfigUpdate.json + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC028_SRV_WAI_016_OK + [Documentation] + ... Check that the IUT responds with with 204 when requested to delete the specified measurement configuration + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.5 + ... "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList" + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Delete a specified measurement configuration ${MEAS_ID} + Check HTTP Response Status Code Is 204 + + +TP_MEC_MEC028_SRV_WAI_016_NF + [Documentation] + ... Check that the IUT responds with an error when an invalid request is sent + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.8.3.5 + ... "https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.2.1/WlanInformationApi.yaml#/schemas/MeasurementConfigLinkList" + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Delete a specified measurement configuration ${INVALID_MEASUREMENT_CONFIG_ID} + Check HTTP Response Status Code Is 204 + + +*** Keywords *** +Retrieve a list of list of measurement configurations + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/measurement + ${output}= Output response + Set Suite Variable ${response} ${output} + +Create a new measurement configuration + [Arguments] ${body} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + POST ${apiRoot}/${apiName}/${apiVersion}/queries/measurements ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Retrieve a specified measurement configuration + [Arguments] ${MEAS_CONF_ID} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/measurement/${MEAS_CONF_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Update a specified measurement configuration + [Arguments] ${MEAS_CONF_ID} ${content} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/measurement/${MEAS_CONF_ID} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Delete a specified measurement configuration + [Arguments] ${MEAS_CONF_ID} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/queries/measurement/${MEAS_CONF_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + diff --git a/MEC028/WAI/MEAS/environment/variables.txt b/MEC028/WAI/MEAS/environment/variables.txt new file mode 100644 index 0000000..bb9bd9d --- /dev/null +++ b/MEC028/WAI/MEAS/environment/variables.txt @@ -0,0 +1,14 @@ +*** Variables *** +${apiRoot} +${apiName} wai +${apiVersion} v2 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 127.0.0.1 +${MEC-APP_PORT} 8082 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${STA_ID} 123 +${MEAS_ID} 456 +${INVALID_MEASUREMENT_CONFIG_ID} 999 \ No newline at end of file diff --git a/MEC028/WAI/MEAS/jsons/MeasurementConfig.json b/MEC028/WAI/MEAS/jsons/MeasurementConfig.json new file mode 100644 index 0000000..deb6857 --- /dev/null +++ b/MEC028/WAI/MEAS/jsons/MeasurementConfig.json @@ -0,0 +1,16 @@ +{ + "staId": [ + { + "macId": "123" + } + ], + "measurementId": "123", + "measurementInfo": { + "measurementDuration": 10 + }, + "_links": { + "self": { + "href": "/link/" + } + } +} \ No newline at end of file diff --git a/MEC028/WAI/MEAS/jsons/MeasurementConfigError.json b/MEC028/WAI/MEAS/jsons/MeasurementConfigError.json new file mode 100644 index 0000000..a2e38f2 --- /dev/null +++ b/MEC028/WAI/MEAS/jsons/MeasurementConfigError.json @@ -0,0 +1,16 @@ +{ + "StaIdentities": [ + { + "macId": "123" + } + ], + "measurementId": "123", + "measurementInfo": { + "measurementDuration": 10 + }, + "_links": { + "self": { + "href": "/link/" + } + } +} \ No newline at end of file diff --git a/MEC028/WAI/MEAS/jsons/MeasurementConfigUpdate.json b/MEC028/WAI/MEAS/jsons/MeasurementConfigUpdate.json new file mode 100644 index 0000000..b758cf4 --- /dev/null +++ b/MEC028/WAI/MEAS/jsons/MeasurementConfigUpdate.json @@ -0,0 +1,16 @@ +{ + "staId": [ + { + "macId": "123" + } + ], + "measurementId": "123", + "measurementInfo": { + "measurementDuration": 50 + }, + "_links": { + "self": { + "href": "/link/" + } + } +} \ No newline at end of file diff --git a/MEC028/WAI/MEAS/schemas/MeasurementConfig.schema.json b/MEC028/WAI/MEAS/schemas/MeasurementConfig.schema.json new file mode 100644 index 0000000..d393606 --- /dev/null +++ b/MEC028/WAI/MEAS/schemas/MeasurementConfig.schema.json @@ -0,0 +1,329 @@ +{ + "properties": { + "_links": { + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1" + }, + "staId": { + "minItems": 1, + "type": "array", + "items": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + } + }, + "measurementId": { + "type": "string" + }, + "measurementInfo": { + "properties": { + "measurementDuration": { + "type": "integer", + "format": "unit16" + }, + "randomInterval": { + "type": "integer", + "format": "unit16" + }, + "channelLoadConf": { + "properties": { + "apId": { + "properties": { + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the Access Point.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique Identifier assigned to an Access Point (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks including Basic Service Set and Extended Service Set.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "cChannelId": { + "description": "Channel number which load is reported", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "channelLoad": { + "description": "Channel load as per IEEE 802.11-2012 [8], section 11.11.9.3", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "apId", + "cChannelId", + "channelLoad" + ], + "type": "object", + "x-etsi-ref": "6.5.24" + }, + "beaconRequestConf": { + "properties": { + "bssId": { + "description": "The BSSID field indicates the BSSID of the BSS(s) for which a beacon report is requested. When requesting beacon reports for all BSSs on the channel, the BSSID field contains the wildcard BSSID.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "channelId": { + "description": "Channel number to scan. A Channel Number of 0 indicates a request to make iterative measurements for all supported channels in the Operating Class where the measurement is permitted on the channel and the channel is valid for the current regulatory domain. A Channel Number of 255 indicates a request to make iterative measurements for all supported channels in the current Operating Class listed in the latest AP Channel Report received from the serving AP.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "measurementMode": { + "description": "0 for passive.\n1 for active.\n2 for beacon table.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "reportingCondition": { + "description": "As in table T9-89 of IEEE 802.11-2012 [8].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "ssId": { + "description": "(Optional) The SSID subelement indicates the ESS(s) or IBSS(s) for which a beacon report is requested.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "staId": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + } + }, + "required": [ + "staId", + "channelId", + "measurementMode", + "bssId", + "ssId", + "reportingCondition" + ], + "type": "object", + "x-etsi-ref": "6.5.25" + }, + "staStatisticsConf": { + "properties": { + "groupIdentity": { + "description": "As per table T 9-114 of IEEE 802.11-2012 [8].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "staId": { + "properties": { + "aid": { + "description": "Number which identifies a particular association between a station and an Access Point ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IPv4 or IPv6 address allocated for the station.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "macId": { + "description": "Unique identifier assigned to station (as network interface controller) for communications at the data link layer of a network segment.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ssid": { + "description": "Service Set Identifier to identify logical networks.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "macId" + ], + "type": "object", + "x-etsi-ref": "6.5.11" + }, + "triggerCondition": { + "type": "integer" + }, + "triggerTimeout": { + "description": "The Trigger Timeout field contains a value in units of 100 TUs during which a measuring STA does not generate further triggered STA Statistics Reports after a trigger condition has been met.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "triggeredReport": { + "type": "boolean" + } + }, + "required": [ + "staId", + "groupIdentity", + "triggeredReport", + "triggerTimeout", + "triggerCondition" + ], + "type": "object", + "x-etsi-ref": "6.5.26" + }, + "neighborReportConf": { + "properties": { + "ssid": { + "type": "string" + }, + "bssid": { + "type": "string" + } + } + } + }, + "type": "object", + "x-etsi-ref": "6.2.3" + } + }, + "required": [ + "staId", + "measurementId", + "measurementInfo" + ], + "type": "object" + } \ No newline at end of file diff --git a/MEC028/WAI/MEAS/schemas/MeasurementConfigLinkList.schema.json b/MEC028/WAI/MEAS/schemas/MeasurementConfigLinkList.schema.json new file mode 100644 index 0000000..976b692 --- /dev/null +++ b/MEC028/WAI/MEAS/schemas/MeasurementConfigLinkList.schema.json @@ -0,0 +1,46 @@ +{ + "required": [ + "_links" + ], + "properties": { + "_links": { + "required": [ + "self" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.23" + } + } + }, + "measurementConfig": { + "type": "array", + "items": { + "required": [ + "href", + "measurementId" + ], + "properties": { + "href": { + "type": "string" + }, + "measurementId": { + "type": "string" + } + } + } + } + } +} \ No newline at end of file diff --git a/MEC028/WAI/STA_INFO/WaiStaInfo.robot b/MEC028/WAI/STA_INFO/WaiStaInfo.robot index 3c58c8d..7cc7b4e 100644 --- a/MEC028/WAI/STA_INFO/WaiStaInfo.robot +++ b/MEC028/WAI/STA_INFO/WaiStaInfo.robot @@ -14,8 +14,8 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v TP_MEC_MEC028_SRV_WAI_003_OK [Documentation] ... Check that the IUT responds with the list of Station Point - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.4.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo #Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Retrieve the station information @@ -31,8 +31,8 @@ TP_MEC_MEC028_SRV_WAI_003_OK TP_MEC_MEC028_SRV_WAI_004_OK [Documentation] ... Check that the IUT responds with the list of Station Point filtered by the macId provided as query parameter - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.4.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo #Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Retrieve the station information using filters ${filter} @@ -49,8 +49,8 @@ TP_MEC_MEC028_SRV_WAI_004_OK TP_MEC_MEC028_SRV_WAI_004_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 028 2.1.1, clause 7.4.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo + ... ETSI GS MEC 028 2.2.1, clause 7.4.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schema/StaInfo #Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Retrieve the station information using filters ${bad_filter} diff --git a/MEC028/WAI/STA_INFO/environment/variables.txt b/MEC028/WAI/STA_INFO/environment/variables.txt index c64df1b..79e2b50 100644 --- a/MEC028/WAI/STA_INFO/environment/variables.txt +++ b/MEC028/WAI/STA_INFO/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** ${apiRoot} ${apiName} wai -${apiVersion} v1 +${apiVersion} v2 ${MEC-APP_SCHEMA} http ${MEC-APP_HOST} 127.0.0.1 diff --git a/MEC028/WAI/SUB/WaiSubscription.robot b/MEC028/WAI/SUB/WaiSubscription.robot index cca06e3..1db1a1d 100644 --- a/MEC028/WAI/SUB/WaiSubscription.robot +++ b/MEC028/WAI/SUB/WaiSubscription.robot @@ -13,8 +13,8 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v TP_MEC_MEC028_SRV_WAI_005_OK [Documentation] ... Check that the IUT responds with the requested list of subscription - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -29,8 +29,8 @@ TP_MEC_MEC028_SRV_WAI_005_OK TP_MEC_MEC028_SRV_WAI_006_OK [Documentation] ... Check that the IUT responds with the requested list of subscription - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -42,8 +42,8 @@ TP_MEC_MEC028_SRV_WAI_006_OK TP_MEC_MEC028_SRV_WAI_006_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -53,16 +53,16 @@ TP_MEC_MEC028_SRV_WAI_006_BR TP_MEC_MEC028_SRV_WAI_006_NF [Documentation] ... Check that the IUT responds with an error when a request with not existing parameters is sent - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.1 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated Retrieve the subscription information using wrong endpoint Check HTTP Response Status Code Is 404 TP_MEC_MEC028_SRV_WAI_007_OK [Documentation] ... Check that the IUT responds with a Notification Subscription - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.4 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Send a request for creating a subscription AssocStaSubscription.json @@ -75,8 +75,8 @@ TP_MEC_MEC028_SRV_WAI_007_OK TP_MEC_MEC028_SRV_WAI_007_BR [Documentation] ... Check that the IUT responds with an error when an invalid Subscription request is sent - ... ETSI GS MEC 028 2.1.1, clause 7.5.3.4 - ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription + ... ETSI GS MEC 028 2.2.1, clause 7.5.3.4 + ... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription #Outdated Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Send a request for creating a subscription AssocStaSubscription_BR.json @@ -85,7 +85,7 @@ TP_MEC_MEC028_SRV_WAI_007_BR TP_MEC_MEC028_SRV_WAI_007_NF [Documentation] ... Check that the IUT responds with an error when a request with not existing parameters is sent - ... Reference "ETSI GS MEC 028 2.1.1, clause 7.5.3.1 + ... Reference "ETSI GS MEC 028 2.2.1, clause 7.5.3.1 Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Send a request for creating a subscription using wrong endpoint AssocStaSubscription.json diff --git a/MEC028/WAI/SUB/environment/variables.txt b/MEC028/WAI/SUB/environment/variables.txt index dfa2d41..0a66f36 100644 --- a/MEC028/WAI/SUB/environment/variables.txt +++ b/MEC028/WAI/SUB/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** ${apiRoot} ${apiName} wai -${apiVersion} v1 +${apiVersion} v2 ${MEC-APP_SCHEMA} http ${MEC-APP_HOST} 127.0.0.1 @@ -14,5 +14,5 @@ ${SUB_TYPE} AssocStaSubscription ${SUB_FILTER} assoc_sta ${INVALID_SUB_FILTER} assocStaSub -${HREF} /wai/v1/subscriptions/1 +${HREF} /wai/v2/subscriptions/1 ${CALLBACK_URI} http://callback.uri/1 \ No newline at end of file -- GitLab From 9a0b289ac4890afa6faf055cc9e5a151a0960df3 Mon Sep 17 00:00:00 2001 From: reinaortega Date: Tue, 31 Aug 2021 09:41:25 +0200 Subject: [PATCH 50/63] Triggering CI/CD of Robot Hive Tap Test Tools project for 'plu' branches --- .jenkins.sh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/.jenkins.sh b/.jenkins.sh index ea4251e..528db63 100644 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -9,7 +9,24 @@ cd "$(dirname "$0")" run_dir="$(pwd)" +echo "Using git branch $GIT_BRANCH" + ./scripts/build-container.sh ./scripts/run-container.sh "${run_dir}" -exit $? +if [[ "$GIT_BRANCH" =~ .*fix-plu$ ]]; then + + apiTestsVersion=$(echo $GIT_BRANCH | cut -d'/' -f 2) + apiTestsVersion=$(echo $apiTestsVersion | cut -d'-' -f 1) + echo apiTestsVersion + + curl -X POST \ + -F token=${ROBOT_HIVE_TAP_TT_TOKEN} \ + -F ref=master \ + -F "variables[API_TESTS_VERSION]=$apiTestsVersion" \ + -F "variables[TEST_SUITE]=MEC" \ + https://forge.etsi.org/rep/api/v4/projects/484/trigger/pipeline +fi +ret=$? +echo "Final validation result: $ret" +exit $ret -- GitLab From e35a44f693c56c78e64b8ad1693ab370fd37a23a Mon Sep 17 00:00:00 2001 From: piscione Date: Wed, 5 Jan 2022 11:11:53 +0100 Subject: [PATCH 51/63] Started implementation of TCs of Grant Operations in MEC010p2 v2.2.1 specification. --- MEC010p2/MEO/GRANT/Grant.robot | 68 +- MEC010p2/MEO/GRANT/environment/variables.txt | 7 +- .../MEO/GRANT/jsons/grantRejectedRequest.json | 7 +- MEC010p2/MEO/GRANT/jsons/grantRequest.json | 23 + MEC010p2/MEO/GRANT/jsons/grantRequest2.json | 14 + .../GRANT/jsons/grantRequestInstantiate.json | 14 + MEC010p2/MEO/GRANT/jsons/grantRequests.json | 2 - MEC010p2/MEO/GRANT/schemas/Grant.json | 1 - MEC010p2/MEO/GRANT/schemas/Grant.schema.json | 628 ++++++++++++++++++ 9 files changed, 721 insertions(+), 43 deletions(-) create mode 100644 MEC010p2/MEO/GRANT/jsons/grantRequest.json create mode 100644 MEC010p2/MEO/GRANT/jsons/grantRequest2.json create mode 100644 MEC010p2/MEO/GRANT/jsons/grantRequestInstantiate.json delete mode 100644 MEC010p2/MEO/GRANT/jsons/grantRequests.json delete mode 100644 MEC010p2/MEO/GRANT/schemas/Grant.json create mode 100644 MEC010p2/MEO/GRANT/schemas/Grant.schema.json diff --git a/MEC010p2/MEO/GRANT/Grant.robot b/MEC010p2/MEO/GRANT/Grant.robot index 878c4ff..bb8075f 100644 --- a/MEC010p2/MEO/GRANT/Grant.robot +++ b/MEC010p2/MEO/GRANT/Grant.robot @@ -1,5 +1,5 @@ -''[Documentation] robot --outputdir ./outputs ./SRV/UETAG/PlatUeIdentity.robot -... Test Suite to validate UE Identity Tag (UETAG) operations. +''[Documentation] robot --outputdir ./outputs ./Grant.robot +... Test Suite to validate Grant operations. *** Settings *** Resource environment/variables.txt @@ -11,12 +11,12 @@ Library OperatingSystem *** Test Cases *** -TC_MEC_MEC010p2_MEO_GRANT_001_OK +TP_MEC_MEC010p2_MEO_GRANT_001_OK [Documentation] ... Check that MEO sends a synchronous grant response when a grant request is requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.1 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.2.2-1 (GrantRequest) - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.4.2-1 (Grant) + ... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 (GrantRequest) + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant) [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Create a GRANT request grantRequest Check HTTP Response Status Code Is 201 @@ -25,61 +25,57 @@ TC_MEC_MEC010p2_MEO_GRANT_001_OK -TC_MEC_MEC010p2_MEO_GRANT_001_BR + +TP_MEC_MEC010p2_MEO_GRANT_001_BR [Documentation] TP_MEC_MEO_GRANT_001_BR ... Check that MEO responds with an error when it receives a malformed request when a new grant request is performed - ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.4.2-1 (Grant) + ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant) [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Create a GRANT request grantRejectedRequest Check HTTP Response Status Code Is 400 -TC_MEC_MEC010p2_MEO_GRANT_002_OK + +TP_MEC_MEC010p2_MEO_GRANT_002_OK [Documentation] TP_MEC_MEO_GRANT_002_OK ... Check that MEO sends a asynchronous grant response when a grant request is requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.1 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.4.2-1 (Grant) + ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant) [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Create a GRANT request grantRequest - Check HTTP Response Status Code Is 202 + Create a GRANT request grantRequest2 + Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location - Check HTTP Response Body is Empty + Check HTTP Response Body Json Schema Is Grant + + + + -TC_MEC_MEC010p2_MEO_GRANT_003_OK + +TP_MEC_MEC010p2_MEO_GRANT_006_OK [Documentation] TP_MEC_MEO_GRANT_003_OK ... Check that MEO sends the status of a grant request when a query on a granting ID is performed. ... The process of creating the grant is ongoing, no grant is available yet - ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an individual grant ${grantId} - Check HTTP Response Status Code Is 202 + Get an individual grant ${GRANT_ID} + Check HTTP Response Status Code Is 200 Check HTTP Response Header Contains Location - Check HTTP Response Body is Empty + Check HTTP Response Body Json Schema Is Grant -TC_MEC_MEC010p2_MEO_GRANT_003_NF +TP_MEC_MEC010p2_MEO_GRANT_003_NF [Documentation] TP_MEC_MEO_GRANT_003_NF ... Check that MEO responds with an error when it receives a request for returning a grant referred with a wrong ID - ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an individual grant ${non_existant_grant_id} + Get an individual grant ${NOT_EXISTING_GRANT_ID} Check HTTP Response Status Code Is 404 - - - -TC_MEC_MEC010p2_MEO_GRANT_004_OK - [Documentation] TP_MEC_MEO_GRANT_004_OK - ... Check that MEO sends the status of a grant request when a query on a granting ID is performed - ... ETSI GS MEC 010-2 2.0.10, clause 7.6.1.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.4.4.2-1 - [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an individual grant ${grantId} - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is Grant + @@ -99,7 +95,7 @@ Create a GRANT request Get an individual grant [Arguments] ${grantId} Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} + Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} allow_redirects=false ${output}= Output response diff --git a/MEC010p2/MEO/GRANT/environment/variables.txt b/MEC010p2/MEO/GRANT/environment/variables.txt index e14127f..750b765 100644 --- a/MEC010p2/MEO/GRANT/environment/variables.txt +++ b/MEC010p2/MEO/GRANT/environment/variables.txt @@ -1,7 +1,8 @@ *** Variables *** # Generic variables ${MEO_SCHEMA} http -${MEO_HOST} 10.192.2.172 +#${MEO_HOST} 10.192.2.172 +${MEO_HOST} 127.0.0.1 ${MEO_PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l @@ -10,8 +11,8 @@ ${apiName} granting ${apiVersion} v1 # Specific variables -${grantId} e0deee2b-6e50-4f33-ab09-8bf0585025d3 -${non_existant_grant_id} non_existant_grant_id +${GRANT_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 +${NOT_EXISTING_GRANT_ID} non_existant_grant_id # Notifications variables diff --git a/MEC010p2/MEO/GRANT/jsons/grantRejectedRequest.json b/MEC010p2/MEO/GRANT/jsons/grantRejectedRequest.json index 9e26dfe..36380ae 100644 --- a/MEC010p2/MEO/GRANT/jsons/grantRejectedRequest.json +++ b/MEC010p2/MEO/GRANT/jsons/grantRejectedRequest.json @@ -1 +1,6 @@ -{} \ No newline at end of file +{ + "id": "123", + "appInstanceId": "456", + "appLcmOpOccId": "789", + "operationERROR":"INSTANTIATE" +} \ No newline at end of file diff --git a/MEC010p2/MEO/GRANT/jsons/grantRequest.json b/MEC010p2/MEO/GRANT/jsons/grantRequest.json new file mode 100644 index 0000000..7c6b0e9 --- /dev/null +++ b/MEC010p2/MEO/GRANT/jsons/grantRequest.json @@ -0,0 +1,23 @@ +{ + "id": "123", + "appInstanceId": "456", + "appLcmOpOccId": "789", + "appDId":"appDId", + "operation":"INSTANTIATE", + "addResources": [ + { + "resourceDefinitionId": "resourceDefinitionId", + "vimConnectionId": "vimConnectionId", + "resourceGroupId": "resourceGroupId", + "zoneId": "zoneId" + } + ], + "_links": { + "appLcmOpOcc": { + "href": "https://anexample.ex/" + }, + "appInstance": { + "href": "https://anexample.ex/" + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEO/GRANT/jsons/grantRequest2.json b/MEC010p2/MEO/GRANT/jsons/grantRequest2.json new file mode 100644 index 0000000..da29253 --- /dev/null +++ b/MEC010p2/MEO/GRANT/jsons/grantRequest2.json @@ -0,0 +1,14 @@ +{ + "id": "123", + "appInstanceId": "456", + "appLcmOpOccId": "789", + "operation": "OPERATE", + "_links": { + "appLcmOpOcc": { + "href": "https://anexample.ex/" + }, + "appInstance": { + "href": "https://anexample.ex/" + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEO/GRANT/jsons/grantRequestInstantiate.json b/MEC010p2/MEO/GRANT/jsons/grantRequestInstantiate.json new file mode 100644 index 0000000..c1c8895 --- /dev/null +++ b/MEC010p2/MEO/GRANT/jsons/grantRequestInstantiate.json @@ -0,0 +1,14 @@ +{ + "id": "123", + "appInstanceId": "456", + "appLcmOpOccId": "789", + "operation": "INSTANTIATE", + "_links": { + "appLcmOpOcc": { + "href": "https://anexample.ex/" + }, + "appInstance": { + "href": "https://anexample.ex/" + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEO/GRANT/jsons/grantRequests.json b/MEC010p2/MEO/GRANT/jsons/grantRequests.json deleted file mode 100644 index 7a73a41..0000000 --- a/MEC010p2/MEO/GRANT/jsons/grantRequests.json +++ /dev/null @@ -1,2 +0,0 @@ -{ -} \ No newline at end of file diff --git a/MEC010p2/MEO/GRANT/schemas/Grant.json b/MEC010p2/MEO/GRANT/schemas/Grant.json deleted file mode 100644 index 9e26dfe..0000000 --- a/MEC010p2/MEO/GRANT/schemas/Grant.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/MEC010p2/MEO/GRANT/schemas/Grant.schema.json b/MEC010p2/MEO/GRANT/schemas/Grant.schema.json new file mode 100644 index 0000000..4246619 --- /dev/null +++ b/MEC010p2/MEO/GRANT/schemas/Grant.schema.json @@ -0,0 +1,628 @@ +{ + "description": "'This type represents a grant. Refer to clause 9.5.2.3 of ETSI GS NFV-SOL 003 '", + "type": "object", + "required": [ + "id", + "appInstanceId", + "appLcmOpOccId", + "_links" + ], + "properties": { + "id": { + "type": "string" + }, + "appInstanceId": { + "description": "Identifier of application instance.", + "type": "string" + }, + "appLcmOpOccId": { + "description": "Identifier of application lifecycle management operation occurrence.", + "type": "string" + }, + "vimConnections": { + "type": "array", + "items": { + "properties": { + "accessInfo": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "extra": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "id": { + "description": "The identifier of the VIM Connection. This identifier is managed by the MEO.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "interfaceInfo": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "vimId": { + "description": "The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to address additional information about the VIM if such information has been configured into the MEPM by means outside the scope of the present document, and should be absent otherwise.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM.The set of permitted values is expected to change over time as new types or versions of VIMs become available. ", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "id", + "vimType" + ], + "type": "object", + "x-etsi-ref": "6.2.2.18" + } + }, + "zones": { + "type": "array", + "items": { + "properties": { + "id": { + "description": "The identifier of this ZoneInfo instance, for the purpose of referencing it from other structures in the \"Grant\" structure.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "vimConnectionId": { + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "zoneId": { + "description": "The identifier of the resource zone, as managed by the resource management layer (typically, the VIM).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "id", + "zoneId" + ], + "type": "object", + "x-etsi-ref": "6.2.4.6f" + } + }, + "zoneGroups": { + "type": "array", + "items": { + "properties": { + "zoneId": { + "description": "References of identifiers of \"ZoneInfo\" structures, each of which provides information about a resource zone that belongs to this group.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "zoneId" + ], + "type": "object", + "x-etsi-ref": "6.2.4.7" + } + }, + "addResources": { + "type": "array", + "items": { + "properties": { + "resourceDefinitionId": { + "description": "Identifier of the related \"ResourceDefinition\" structure from the related \"GrantRequest\" structure.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "resourceGroupId": { + "description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "vimConnectionId": { + "description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "zoneId": { + "description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "resourceDefinitionId" + ], + "type": "object", + "x-etsi-ref": "6.2.4.5" + } + }, + "tempResources": { + "type": "array", + "items": { + "properties": { + "resourceDefinitionId": { + "description": "Identifier of the related \"ResourceDefinition\" structure from the related \"GrantRequest\" structure.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "resourceGroupId": { + "description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "vimConnectionId": { + "description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "zoneId": { + "description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "resourceDefinitionId" + ], + "type": "object", + "x-etsi-ref": "6.2.4.5" + } + }, + "removeResources": { + "type": "array", + "items": { + "properties": { + "resourceDefinitionId": { + "description": "Identifier of the related \"ResourceDefinition\" structure from the related \"GrantRequest\" structure.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "resourceGroupId": { + "description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "vimConnectionId": { + "description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "zoneId": { + "description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "resourceDefinitionId" + ], + "type": "object", + "x-etsi-ref": "6.2.4.5" + } + }, + "updateResources": { + "type": "array", + "items": { + "properties": { + "resourceDefinitionId": { + "description": "Identifier of the related \"ResourceDefinition\" structure from the related \"GrantRequest\" structure.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "resourceGroupId": { + "description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "vimConnectionId": { + "description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "zoneId": { + "description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "resourceDefinitionId" + ], + "type": "object", + "x-etsi-ref": "6.2.4.5" + } + }, + "vimAssets": { + "description": "Information about assets for the application that are managed by the MEO in the VIM, such as software images.", + "type": "object", + "properties": { + "softwareImages": { + "type": "array", + "items": { + "properties": { + "appDSoftwareImageId": { + "description": "Identifier which references the software image descriptor in the AppD.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "vimConnectionId": { + "description": "Identifier of the VIM connection to access the software image referenced in this structure. ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "vimSoftwareImageId": { + "description": "Identifier of the software image in the resource management layer (i.e. VIM).", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "appDSoftwareImageId", + "vimSoftwareImageId" + ], + "type": "object", + "x-etsi-ref": "6.2.4.11" + } + } + } + }, + "extVirtualLinks": { + "type": "array", + "items": { + "properties": { + "extCps": { + "description": "External CPs of the application instance to be connected to this external VL.", + "items": { + "properties": { + "cpConfig": { + "description": "List of instance data that need to be configured on the CP instances created from the respective CPD.", + "items": { + "properties": { + "cpInstanceId": { + "description": "Identifier of the external CP instance to which this set of configuration parameters is requested to be applied. \n\nShall be present if this instance has already been created. ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See note.", + "items": { + "properties": { + "ipOverEthernet": { + "description": "'This type represents network address data for IP over Ethernet. Refer to clause 4.4.1.10c of ETSI GS NFV SOL 003'", + "type": "object", + "properties": { + "macAddress": { + "description": "'MAC address. If this attribute is not present, it shall be chosen by the VIM'", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet.", + "type": "array", + "items": { + "description": "'IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet.'", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses.", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by subnetId if provided).", + "type": "array", + "items": { + "description": "Fixed addresses to assign (from the subnet defined by subnetId if provided)", + "type": "string" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by subnetId if provided)", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections.", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "Lowest IP address belonging to the range.", + "type": "string" + }, + "maxAddress": { + "description": "Highest IP address belonging to the range.", + "type": "string" + } + } + }, + "subnetId": { + "description": "Subnet defined by the identifier of the subnet resource in the VIM.", + "type": "string" + } + } + } + } + } + }, + "layerProtocol": { + "description": "'This type represents network address data for IP over Ethernet. Refer to clause 4.4.1.10c of ETSI GS NFV SOL 003'", + "type": "object", + "properties": { + "macAddress": { + "description": "'MAC address. If this attribute is not present, it shall be chosen by the VIM'", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet.", + "type": "array", + "items": { + "description": "'IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet.'", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses.", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by subnetId if provided).", + "type": "array", + "items": { + "description": "Fixed addresses to assign (from the subnet defined by subnetId if provided)", + "type": "string" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by subnetId if provided)", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections.", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "Lowest IP address belonging to the range.", + "type": "string" + }, + "maxAddress": { + "description": "Highest IP address belonging to the range.", + "type": "string" + } + } + }, + "subnetId": { + "description": "Subnet defined by the identifier of the subnet resource in the VIM.", + "type": "string" + } + } + } + } + } + } + }, + "required": [ + "layerProtocol" + ], + "type": "object", + "x-etsi-notes": "NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.", + "x-etsi-ref": "6.2.4.14" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "CpProtocolData" + }, + "linkPortId": { + "description": "Identifier of a pre-configured link port to which the external CP will be associated. See note.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "type": "object", + "x-etsi-notes": "NOTE:\tThe following conditions apply to the attributes \"linkPortId\" and \" cpProtocolData\": \nThe \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing external CP instance addressed by cpInstanceId. \nAt least one of these attributes shall be present for a to-be-created external CP instance or an existing external CP instance.\nIf the \"linkPortId\" attribute is absent, the MEPM shall create a link port.\nIf the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a pre-created link port, and the MEPM can use means outside the scope of the present document to obtain the pre-configured address information for the connection point from the resource representing the link port.\nIf both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".", + "x-etsi-ref": "6.2.4.13" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "AppExtCpConfig" + }, + "cpdId": { + "description": "The identifier of the CPD in the AppD.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "cpdId", + "cpConfig" + ], + "type": "object", + "x-etsi-ref": "6.2.4.12" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "AppExtCpData" + }, + "extLinkPorts": { + "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the MEPM shall create the link ports on the external VL.", + "items": { + "properties": { + "id": { + "description": "Identifier of this link port as provided by the entity that has created the link port.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "resourceHandle": { + "properties": { + "resourceId": { + "description": "Identifier of the resource in the scope of the VIM.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "vimConnectionId": { + "description": "Identifier of the VIM connection to manage the resource.The applicable \"VimConnectionInfo\" structure, which is referenced by vimConnectionId, can be obtained from the \"vimConnectionInfo\" attribute of the \"AppInstance\" structure.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM. See note.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "resourceId" + ], + "type": "object", + "x-etsi-notes": "NOTE:\tThe value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM and can be used as information that complements the ResourceHandle. This value set is different from the value set of the \"type\" attribute in the ResourceDefinition.", + "x-etsi-ref": "6.2.4.10" + } + }, + "required": [ + "id", + "resourceHandle" + ], + "type": "object", + "x-etsi-ref": "6.2.4.9" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "ExtLinkPortData" + }, + "id": { + "description": "The identifier of the external VL instance. The identifier is assigned by the MEC entity that manages this VL instance.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "resourceId": { + "description": "The identifier of the resource in the scope of the VIM.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "vimConnectionId": { + "description": "Identifier of the VIM connection to manage this resource. ", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "id", + "resourceId", + "extCps" + ], + "type": "object", + "x-etsi-ref": "6.2.4.8" + } + }, + "additionalParams": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "appLcmOpOcc", + "appInstance" + ], + "properties": { + "appLcmOpOcc": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appInstance": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + } + } + } +} \ No newline at end of file -- GitLab From 416a9bcde31145843dfcc0897beda902b8787e20 Mon Sep 17 00:00:00 2001 From: piscione Date: Wed, 5 Jan 2022 11:20:47 +0100 Subject: [PATCH 52/63] Implemented TCs for configure platform for App operation for MEC010p2 V2.2.1 specification. --- MEC010p2/MEPM/LCM/PlatformConfiguration.robot | 59 +++++++++++++++++++ MEC010p2/MEPM/LCM/environment/variables.txt | 44 ++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 MEC010p2/MEPM/LCM/PlatformConfiguration.robot create mode 100644 MEC010p2/MEPM/LCM/environment/variables.txt diff --git a/MEC010p2/MEPM/LCM/PlatformConfiguration.robot b/MEC010p2/MEPM/LCM/PlatformConfiguration.robot new file mode 100644 index 0000000..422c196 --- /dev/null +++ b/MEC010p2/MEPM/LCM/PlatformConfiguration.robot @@ -0,0 +1,59 @@ +''[Documentation] robot --outputdir ./outputs ./PlatformConfiguration.robot +... Test Suite to validate Platform Configuration operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../GenericKeywords.robot +Library REST ${MEPM_SCHEMA}://${MEPM_HOST}:${MEPM_PORT} ssl_verify=false +Library BuiltIn +Library OperatingSystem + + +*** Test Cases *** +TP_MEC_MEC010p2_MEPM_LCM_001_OK + [Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_OK + ... Check that MEC API provider has created the configuration information in AppD to the MEPM-V + ... ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.21.2-1 #ConfigPlatformForAppRequest + + Request to configure Platform ${APP_INSTANCE_ID} ConfigPlatformForAppRequest + Check HTTP Response Status Code Is 202 + Check Response Header contains Location + + +TP_MEC_MEC010p2_MEPM_LCM_001_BR + [Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_BR + ... Check that MEC API provider sends an error when it receives a malformed request for the configuration information in AppD to the MEPM-V + ... ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.21.2-1 #ConfigPlatformForAppRequest + + Request to configure Platform ${APP_INSTANCE_ID} ConfigPlatformForAppRequestBadRequest + Check HTTP Response Status Code Is 400 + + + +TP_MEC_MEC010p2_MEPM_LCM_001_NF + [Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_BR + ... "Check that MEC API provider sends an error when it receives a request + ... for the configuration information in AppD to the MEPM-V with not valid app instance ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.21.2-1 #ConfigPlatformForAppRequest + + Request to configure Platform ${NOT_EXISTING_APP_INSTANCE_ID} ConfigPlatformForAppRequest + Check HTTP Response Status Code Is 404 + + + +*** Keywords *** +Request to configure Platform + [Argument] ${appInstanceId} ${content} + Log Request to configure platform + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/app_instances/${appInstanceId}/configure_platform_for_app ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + \ No newline at end of file diff --git a/MEC010p2/MEPM/LCM/environment/variables.txt b/MEC010p2/MEPM/LCM/environment/variables.txt new file mode 100644 index 0000000..4385a0b --- /dev/null +++ b/MEC010p2/MEPM/LCM/environment/variables.txt @@ -0,0 +1,44 @@ +*** Variables *** +# Generic variables +${MEPM_SCHEMA} http +${MEPM_HOST} 127.0.0.1 +${MEPM_PORT} 8081 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} apmi +${apiVersion} v1 + +# Specific variables +${APP_PKG_NAME} APP_PKG_NAME +${APP_PKG_VERSION} APP_PKG_VERSION +${CHECKSUM} CHECKSUM +${OPERATIONAL_STATE} OPERATIONAL_STATE +${USAGE_STATE} USAGE_STATE +${ON_BOARDED_APP_PKG_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f +${APPD_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 +${MALFORMED_FILTER_NAME} operationalStatus +${FILTER_VALUE} NOT_IN_USE +${NON_EXISTENT_APP_PKG_ID} NON_EXISTENT_APP_PKG_ID +${OPERATION_VALUE} DISABLE + +${ACCEPTED_CONTENT_TYPE} text/plain +${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 +${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID + + + + +${SUBSCRIPTION_TYPE} MobilityProcedureSubscription + + + +# Notifications variables +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${callback_port} 9091 +${callback_uri} http://172.22.1.7:${callback_port} +${callback_endpoint} /amsi/subscriptions +${callback_endpoint_error} /subs_404 +${total_polling_time} 2 min +${polling_interval} 10 sec \ No newline at end of file -- GitLab From 26b358912e6d1234358ed99bbb1433a2075605c7 Mon Sep 17 00:00:00 2001 From: piscione Date: Wed, 5 Jan 2022 11:23:18 +0100 Subject: [PATCH 53/63] Minor fixes --- MEC010p2/MEPM/LCM/PlatformConfiguration.robot | 1 - MEC010p2/MEPM/LCM/environment/variables.txt | 41 +++---------------- 2 files changed, 6 insertions(+), 36 deletions(-) diff --git a/MEC010p2/MEPM/LCM/PlatformConfiguration.robot b/MEC010p2/MEPM/LCM/PlatformConfiguration.robot index 422c196..13716c3 100644 --- a/MEC010p2/MEPM/LCM/PlatformConfiguration.robot +++ b/MEC010p2/MEPM/LCM/PlatformConfiguration.robot @@ -43,7 +43,6 @@ TP_MEC_MEC010p2_MEPM_LCM_001_NF Check HTTP Response Status Code Is 404 - *** Keywords *** Request to configure Platform [Argument] ${appInstanceId} ${content} diff --git a/MEC010p2/MEPM/LCM/environment/variables.txt b/MEC010p2/MEPM/LCM/environment/variables.txt index 4385a0b..705a3af 100644 --- a/MEC010p2/MEPM/LCM/environment/variables.txt +++ b/MEC010p2/MEPM/LCM/environment/variables.txt @@ -3,42 +3,13 @@ ${MEPM_SCHEMA} http ${MEPM_HOST} 127.0.0.1 ${MEPM_PORT} 8081 -${response} {} -${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} -${apiName} apmi +${apiName} app_lcm ${apiVersion} v1 -# Specific variables -${APP_PKG_NAME} APP_PKG_NAME -${APP_PKG_VERSION} APP_PKG_VERSION -${CHECKSUM} CHECKSUM -${OPERATIONAL_STATE} OPERATIONAL_STATE -${USAGE_STATE} USAGE_STATE -${ON_BOARDED_APP_PKG_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f -${APPD_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 -${MALFORMED_FILTER_NAME} operationalStatus -${FILTER_VALUE} NOT_IN_USE -${NON_EXISTENT_APP_PKG_ID} NON_EXISTENT_APP_PKG_ID -${OPERATION_VALUE} DISABLE - -${ACCEPTED_CONTENT_TYPE} text/plain -${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 -${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID - - - -${SUBSCRIPTION_TYPE} MobilityProcedureSubscription - - - -# Notifications variables -${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar - -${callback_port} 9091 -${callback_uri} http://172.22.1.7:${callback_port} -${callback_endpoint} /amsi/subscriptions -${callback_endpoint_error} /subs_404 -${total_polling_time} 2 min -${polling_interval} 10 sec \ No newline at end of file +# Specific variables +${APP_INSTANCE_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 +${NOT_EXISTING_APP_INSTANCE_ID} NOT_EXISTING_APP_INSTANCE_ID \ No newline at end of file -- GitLab From 7b6322c98decdc095089c6bd430d7de1a75194fd Mon Sep 17 00:00:00 2001 From: piscione Date: Wed, 5 Jan 2022 11:31:12 +0100 Subject: [PATCH 54/63] Implemented TCs for App Instance Management in MEC010p2 V2.2.1 specification. --- MEC010p2/MEX/LCM/AppInstanceMgmt.robot | 574 ++++++++++++++++++ MEC010p2/MEX/LCM/environment/variables.txt | 23 + .../LCM/jsons/AppInstSubscriptionRequest.json | 4 + .../AppInstSubscriptionRequestBadRequest.json | 4 + MEC010p2/MEX/LCM/jsons/CancelMode.json | 3 + .../MEX/LCM/jsons/CancelModeBadRequest.json | 3 + .../LCM/jsons/CreateAppInstanceRequest.json | 5 + .../CreateAppInstanceRequestBadRequest.json | 5 + .../MEX/LCM/jsons/InstantiateAppRequest.json | 9 + .../InstantiateAppRequestBadRequest.json | 10 + MEC010p2/MEX/LCM/jsons/OperateAppRequest.json | 3 + .../jsons/OperateAppRequestBadRequest.json | 3 + .../MEX/LCM/jsons/TerminateAppRequest.json | 4 + .../jsons/TerminateAppRequestBadRequest.json | 4 + .../AppInstSubscriptionRequest.schema.json | 104 ++++ .../LCM/schemas/AppInstanceInfo.schema.json | 197 ++++++ .../MEX/LCM/schemas/AppLcmOpOcc.schema.json | 138 +++++ 17 files changed, 1093 insertions(+) create mode 100644 MEC010p2/MEX/LCM/AppInstanceMgmt.robot create mode 100644 MEC010p2/MEX/LCM/environment/variables.txt create mode 100644 MEC010p2/MEX/LCM/jsons/AppInstSubscriptionRequest.json create mode 100644 MEC010p2/MEX/LCM/jsons/AppInstSubscriptionRequestBadRequest.json create mode 100644 MEC010p2/MEX/LCM/jsons/CancelMode.json create mode 100644 MEC010p2/MEX/LCM/jsons/CancelModeBadRequest.json create mode 100644 MEC010p2/MEX/LCM/jsons/CreateAppInstanceRequest.json create mode 100644 MEC010p2/MEX/LCM/jsons/CreateAppInstanceRequestBadRequest.json create mode 100644 MEC010p2/MEX/LCM/jsons/InstantiateAppRequest.json create mode 100644 MEC010p2/MEX/LCM/jsons/InstantiateAppRequestBadRequest.json create mode 100644 MEC010p2/MEX/LCM/jsons/OperateAppRequest.json create mode 100644 MEC010p2/MEX/LCM/jsons/OperateAppRequestBadRequest.json create mode 100644 MEC010p2/MEX/LCM/jsons/TerminateAppRequest.json create mode 100644 MEC010p2/MEX/LCM/jsons/TerminateAppRequestBadRequest.json create mode 100644 MEC010p2/MEX/LCM/schemas/AppInstSubscriptionRequest.schema.json create mode 100644 MEC010p2/MEX/LCM/schemas/AppInstanceInfo.schema.json create mode 100644 MEC010p2/MEX/LCM/schemas/AppLcmOpOcc.schema.json diff --git a/MEC010p2/MEX/LCM/AppInstanceMgmt.robot b/MEC010p2/MEX/LCM/AppInstanceMgmt.robot new file mode 100644 index 0000000..be62181 --- /dev/null +++ b/MEC010p2/MEX/LCM/AppInstanceMgmt.robot @@ -0,0 +1,574 @@ +''[Documentation] robot --outputdir ./outputs ./AppInstanceMgmt.robot +... Test Suite to validate App Instance Management operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../GenericKeywords.robot +Library REST ${MEPM_SCHEMA}://${MEPM_HOST}:${MEPM_PORT} ssl_verify=false +Library BuiltIn +Library OperatingSystem + + +*** Test Cases *** +TP_MEC_MEC010p2_MEX_LCM_001_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_001_OK + ... Check that MEC API provider creates a new App Package when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.3.2-1 #CreateAppInstanceRequest + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo + Create new App Instance CreateAppInstanceRequest + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is AppInstanceInfo + Check HTTP Response Header Contains Location + Should Be Equal As Strings ${response['body']['appDId']} ${APPD_ID} + Should Be Equal As Strings ${response['body']['instantiationState']} NOT_INSTANTIATED + + +TP_MEC_MEC010p2_MEX_LCM_001_BR + [Documentation] TP_MEC_MEC010p2_MEX_LCM_001_BR + ... Check that MEC API provider sends an error when it receives a malformed request for the creation of a new App Instance + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.3.2-1 #CreateAppInstanceRequest + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo + Create new App Instance CreateAppInstanceRequestBadRequest + Check HTTP Response Status Code Is 400 + + + + +TP_MEC_MEC010p2_MEX_LCM_002_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_002_OK + ... Check that MEC API provider retrieves the list of App instances when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo + GET all APP Instances + Check HTTP Response Status Code Is 200 + + FOR ${appInstance} IN @{response['body']} + Validate Json AppInstanceInfo.schema.json ${appInstance} + Log ${appInstance} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${appInstance}[id] ${APP_INSTANCE_ID} + Exit For Loop If ${passed} + END + Should Be True ${passed} + + + +TP_MEC_MEC010p2_MEX_LCM_003_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_003_OK + ... Check that MEC API provider retrieves an App Package when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo + GET APP Instance ${APP_INSTANCE_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AppInstanceInfo + Log ${response['body']} + Should Be Equal As Strings ${response['body']['id']} ${APP_INSTANCE_ID} + + +TP_MEC_MEC010p2_MEX_LCM_003_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_003_NF + ... Check that MEC API provider fails on deletion of an App Instance when requested using wrong appInstanceId + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo + GET APP Instance ${NOT_EXISTING_APP_INSTANCE_ID} + Check HTTP Response Status Code Is 404 + +TP_MEC_MEC010p2_MEX_LCM_004_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_003_OK + ... Check that MEC API provider service deletes an App Instance when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.4 + Delete APP Instance ${APP_INSTANCE_ID} + Check HTTP Response Status Code Is 204 + +TP_MEC_MEC010p2_MEX_LCM_004_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_004_NF + ... Check that MEC API provider fails on deletion of an App Instance when requested using wrong appInstanceId + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.4 + Delete APP Instance ${NOT_EXISTING_APP_INSTANCE_ID} + Check HTTP Response Status Code Is 404 + + + + +TP_MEC_MEC010p2_MEX_LCM_005_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_005_OK + ... Check that MEC API provider service instantiates an App Instance when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.6.3.1 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.7.2-1 #InstantiateAppRequest + Instantiate App Request ${APP_INSTANCE_ID} InstantiateAppRequest + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + +TP_MEC_MEC010p2_MEX_LCM_005_BR + [Documentation] TP_MEC_MEC010p2_MEX_LCM_005_BR + ... Check that MEC API provider service fails to instantiate an App Instance when it receives a malformed request + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.6.3.1 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.7.2-1 #InstantiateAppRequest + Instantiate App Request ${APP_INSTANCE_ID} InstantiateAppRequestBadRequest + Check HTTP Response Status Code Is 400 + + + +TP_MEC_MEC010p2_MEX_LCM_005_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_005_NF + ... Check that MEC API provider service fails to instantiate an App Instance when it receives a request related to a not existing App Instance + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.6.3.1 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.7.2-1 #InstantiateAppRequest + Instantiate App Request ${NOT_EXISTING_APP_INSTANCE_ID} InstantiateAppRequest + Check HTTP Response Status Code Is 404 + + + +TP_MEC_MEC010p2_MEX_LCM_006_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_006_OK + ... Check that MEC API provider service terminates an App Instance when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.7.3.1 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.9.2-1 #TerminateAppRequest + Terminate App Request ${APP_INSTANCE_ID} TerminateAppRequest + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + +TP_MEC_MEC010p2_MEX_LCM_006_BR + [Documentation] TP_MEC_MEC010p2_MEX_LCM_006_OK + ... Check that MEC API provider service fails to terminate an App Instance when it receives a malformed request + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.7.3.1 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.9.2-1 #TerminateAppRequest + Terminate App Request ${APP_INSTANCE_ID} TerminateAppRequestBadRequest + Check HTTP Response Status Code Is 400 + + +TP_MEC_MEC010p2_MEX_LCM_006_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_006_NF + ... Check that MEC API provider service fails to terminate an App Instance when it receives a request related to a not existing App Instance + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.7.3.1 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.9.2-1 #TerminateAppRequest + Terminate App Request ${NOT_EXISTING_APP_INSTANCE_ID} TerminateAppRequest + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC010p2_MEX_LCM_007_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_007_OK + ... Check that MEC API provider service changes the status of an App Instance from its INITIAL_STATE to a given FINAL_STATE, when requested. + ... The following combinations INITIAL_STATE - FINAL_STATE are supported: + ... - STARTED/STOP + ... - STOPPED/STARTCheck that MEC API provider service terminates an App Instance when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.8.3.1 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.8.2-1 #OperateAppRequest + Operate App Request ${APP_INSTANCE_ID} OperateAppRequest + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + + +TP_MEC_MEC010p2_MEX_LCM_007_BR + [Documentation] TP_MEC_MEC010p2_MEX_LCM_007_BR + ... Check that MEC API provider service fails to operate on an App Instance when it receives a malformed request + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.8.3.1 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.8.2-1 #OperateAppRequest + Operate App Request ${APP_INSTANCE_ID} OperateAppRequestBadRequest + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC010p2_MEX_LCM_007_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_007_NF + ... Check that MEC API provider service fails to change the status of an App Instance when it receives a request related to a not existing App Instance + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.8.3.1 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.8.2-1 #OperateAppRequest + Operate App Request ${NOT_EXISTING_APP_INSTANCE_ID} OperateAppRequest + Check HTTP Response Status Code Is 404 + + + +TP_MEC_MEC010p2_MEX_LCM_008_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_008_OK + ... Check that MEC API provider service retrieves info about LCM Operation Occurrence on App Instances when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.9.3.2 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.13.2-1 #AppLcmOpOcc + GET all App LCM op Occs + Check HTTP Response Status Code Is 200 + + FOR ${appLcmOpOcc} IN @{response['body']} + ##The referred JSON schema is in compliance with MEC010p2 v2.1.1 but not with v2.2.1. Some attributes are missing in the older version + Validate Json AppLcmOpOcc.schema.json ${appLcmOpOcc} + ${passed} Run Keyword And Return Status Should Be Equal As Strings ${appLcmOpOcc}[id] ${APP_LCM_OP_OCC_ID} + Exit For Loop If ${passed} + END + + Should Be True ${passed} + + + +TP_MEC_MEC010p2_MEX_LCM_009_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_009_OK + ... Check that MEC API provider service retrieves info about LCM Operation Occurrence on an App Instance when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.10.3.2 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.13.2-1 #AppLcmOpOcc + GET App LCM op Occ ${APP_LCM_OP_OCC_ID} + Check HTTP Response Status Code Is 200 + Validate Json AppLcmOpOcc.schema.json ${response}[body] + Should Be Equal As Strings ${response}[body][id] ${APP_LCM_OP_OCC_ID} + + +TP_MEC_MEC010p2_MEX_LCM_009_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_009_NF + ... Check that MEC API provider service sends an error when it receives a query for a not existing LCM Operation Occurence + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.10.3.2 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.13.2-1 #AppLcmOpOcc + GET App LCM op Occ ${NOT_EXISTING_APP_LCM_OP_OCC_ID} + Check HTTP Response Status Code Is 404 + + + + +TP_MEC_MEC010p2_MEX_LCM_010_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_010_OK + ... Check that MEC API provider service creates a LCM Subscription when requested, where the subscription request can + ... have SUBSCRIPTION_TYPE AppInstanceStateChangeSubscription or AppLcmOpOccStateChangeSubscription + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.1, + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.12.2-1 #AppInstSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.14.2-1 #AppLcmOpOccSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.25.2-1 #AppInstIdCreationSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.28.2-1 #AppInstIdDeletionSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo + + Send a request for a subscription AppInstSubscriptionRequest + Check HTTP Response Status Code Is 201 + Validate Json AppInstSubscriptionRequest.schema.json ${response}[body] + + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + Should Be Equal As Strings ${response['body']['callbackUri']} ${CALLBACK_URI} + + + +TP_MEC_MEC010p2_MEX_LCM_010_BR + [Documentation] TP_MEC_MEC010p2_MEX_LCM_010_BR + ... Check that MEC API provider service sends an error when it receives a malformed request to create a LCM Subscription + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.1, + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.12.2-1 #AppInstSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.14.2-1 #AppLcmOpOccSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.25.2-1 #AppInstIdCreationSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.28.2-1 #AppInstIdDeletionSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo + + Send a request for a subscription AppInstSubscriptionRequestBadRequest + Check HTTP Response Status Code Is 400 + + +TP_MEC_MEC010p2_MEX_LCM_011_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_011_OK + ... Check that MEC API provider service sends the list of LCM Subscriptions when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.2, + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.12.2-1 #AppInstSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.14.2-1 #AppLcmOpOccSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.25.2-1 #AppInstIdCreationSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.28.2-1 #AppInstIdDeletionSubscriptionRequest + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo + + Send a request for retrieving all subscriptions + Check HTTP Response Status Code Is 200 + ##In the MEC010p2 v2.1.1 Specification, the response data model is SubscriptionLinkList. + ##In the MEC010p2 v2.2.1 Specification, the response data model is AppInstanceSubscriptionLinkList. + ##These data models differ only for the subscriptionType attribute. + ##Since the OAS v2.2.1 is not available yet, the response data model is not checked yet. + + #Validate Json AppInstanceSubscriptionLinkList.schema.json ${response}[body] + +TP_MEC_MEC010p2_MEX_LCM_012_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_012_OK + ... Check that MEC API provider service sends the information about an existing LCM subscription when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.4.3.2 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo + + Send a request for retrieving a subscription ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 200 + Should Be Equal As Strings ${response['body']['id']} ${SUBSCRIPTION_ID} + + +TP_MEC_MEC010p2_MEX_LCM_012_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_012_NF + ... Check that MEC API provider service sends an error when it receives a query for a not existing LCM Subscription + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.4.3.2 + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo + + Send a request for retrieving a subscription ${NOT_EXISTING_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC010p2_MEX_LCM_013_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_013_OK + ... Check that MEC API provider service delete an existing LCM Subscription when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.4 + Send a request for deleting a subscription ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 204 + +TP_MEC_MEC010p2_MEX_LCM_013_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_013_NF + ... Check that MEC API provider service sends an error when it receives a deletion request for a not existing LCM Subscription + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.4 + Send a request for deleting a subscription ${NOT_EXISTING_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC010p2_MEX_LCM_014_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_014_OK + ... Check that MEC API provider service cancels an on going LCM Operation + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.11.3.1", + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.32.2-1" #CancelMode + Cancel on going LCM Operation ${APP_LCM_OP_OCC_ID} CancelMode + Check HTTP Response Status Code Is 202 + + +TP_MEC_MEC010p2_MEX_LCM_014_BR + [Documentation] TP_MEC_MEC010p2_MEX_LCM_014_BR + ... Check that MEC API provider service fails to cancel an on going LCM Operation when it receives a malformed request + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.11.3.1", + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.32.2-1" #CancelMode + Cancel on going LCM Operation ${APP_LCM_OP_OCC_ID} CancelModeBadRequest + Check HTTP Response Status Code Is 400 + +TP_MEC_MEC010p2_MEX_LCM_014_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_014_NF + ... Check that MEC API provider service fails to cancel an on going LCM Operation when it receives a request related to a not existing application LCM Operation + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.11.3.1", + ... ETSI GS MEC 010-2 2.2.1, table 6.2.2.32.2-1" #CancelMode + Cancel on going LCM Operation ${NOT_EXISTING_APP_LCM_OP_OCC_ID} CancelMode + Check HTTP Response Status Code Is 404 + + + +TP_MEC_MEC010p2_MEX_LCM_015_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_015_OK + ... Check that MEC API provider service makes failed an on going LCM Operation + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.12.3.1 + Fail on going LCM Operation ${APP_LCM_OP_OCC_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AppLcmOpOcc + + +TP_MEC_MEC010p2_MEX_LCM_015_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_015_NF + ... Check that MEC API provider service makes failed an on going LCM Operation + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.12.3.1 + Fail on going LCM Operation ${NOT_EXISTING_APP_LCM_OP_OCC_ID} + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC010p2_MEX_LCM_016_OK + [Documentation] TP_MEC_MEC010p2_MEX_LCM_016_OK + ... Check that MEC API provider service retries an on going LCM Operation + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.13.3.1 + Retry on going LCM Operation ${APP_LCM_OP_OCC_ID} + Check HTTP Response Status Code Is 200 + + +TP_MEC_MEC010p2_MEX_LCM_016_NF + [Documentation] TP_MEC_MEC010p2_MEX_LCM_016_NF + ... Check that MEC API provider service fails to retry an LCM Operation when it receives a request related to a not existing application LCM Operation + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.13.3.1 + Retry on going LCM Operation ${NOT_EXISTING_APP_LCM_OP_OCC_ID} + Check HTTP Response Status Code Is 404 + + + +*** Keywords *** +Create new App Instance + [Arguments] ${content} + Log Creating a new app package + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/app_instances ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +GET all APP Instances + Log Get all App Instances + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_instances + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +GET APP Instance + [Arguments] ${app_instance_id} + Log Get single App Instance + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_instances/${app_instance_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Delete APP Instance + [Arguments] ${app_instance_id} + Log Get single App Instance + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/app_instances/${app_instance_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Instantiate App Request + [Arguments] ${appInstanceId} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json*"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/app_instances/${appInstanceId}/instantiate ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Terminate App Request + [Arguments] ${appInstanceId} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/app_instances/${appInstanceId}/terminate ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Operate App Request + [Arguments] ${appInstanceId} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/app_instances/${appInstanceId}/operate ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +GET all App LCM op Occs + Log Get all App LCM Operation occurrences + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_lcm_op_occs + ${output}= Output response + Set Suite Variable ${response} ${output} + + + + +GET App LCM op Occ + [Arguments] ${appLcmOpOccsId} + Log Get App LCM Operation occurrence + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_lcm_op_occs/${appLcmOpOccsId} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Send a request for a subscription + [Arguments] ${content} + Log Creating a new subscription + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + + +Send a request for retrieving all subscriptions + Log Get all subscriptions + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Send a request for retrieving a subscription + [Arguments] ${subscriptionId} + Log Get all subscriptions + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Send a request for deleting a subscription + [Arguments] ${subscriptionId} + Log Get all subscriptions + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Cancel on going LCM Operation + [Arguments] ${appLcmOccOpId} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/app_lcm_op_occs/${appLcmOccOpId}/cancel ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Fail on going LCM Operation + [Arguments] ${appLcmOccOpId} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Post ${apiRoot}/${apiName}/${apiVersion}/app_lcm_op_occs/${appLcmOccOpId}/fail + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Retry on going LCM Operation + [Arguments] ${appLcmOccOpId} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Post ${apiRoot}/${apiName}/${apiVersion}/app_lcm_op_occs/${appLcmOccOpId}/retry + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/MEC010p2/MEX/LCM/environment/variables.txt b/MEC010p2/MEX/LCM/environment/variables.txt new file mode 100644 index 0000000..a82e2bb --- /dev/null +++ b/MEC010p2/MEX/LCM/environment/variables.txt @@ -0,0 +1,23 @@ +*** Variables *** +# Generic variables +${MEPM_SCHEMA} http +${MEPM_HOST} 127.0.0.1 +${MEPM_PORT} 8081 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} app_lcm +${apiVersion} v1 + +# Specific variables +${NOT_EXISTING_APP_INSTANCE_ID} NOT_EXISTING_APP_INSTANCE_ID +${APP_INSTANCE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f +${APPD_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 +${APP_LCM_OP_OCC_ID} abceee2b-6e50-4f33-ab09-8bf05850abcd +${NOT_EXISTING_APP_LCM_OP_OCC_ID} NOT_EXISTING_APP_LCM_OP_OCC_ID +${NON_EXISTENT_APP_PKG_ID} NON_EXISTENT_APP_PKG_ID +${OPERATION_VALUE} DISABLE +${CALLBACK_URI} https://callback.uri/path +${SUB_TYPE} AppInstanceStateChangeSubscription +${SUBSCRIPTION_ID} 01234e2b-6e50-4f33-ab09-8bf05850890 +${NOT_EXISTING_SUBSCRIPTION_ID} NOT_EXISTING_SUBSCRIPTION_ID \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/AppInstSubscriptionRequest.json b/MEC010p2/MEX/LCM/jsons/AppInstSubscriptionRequest.json new file mode 100644 index 0000000..0735540 --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/AppInstSubscriptionRequest.json @@ -0,0 +1,4 @@ +{ + "subscriptionType": "AppInstanceStateChangeSubscription", + "callbackUri": "https://callback.uri/path" +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/AppInstSubscriptionRequestBadRequest.json b/MEC010p2/MEX/LCM/jsons/AppInstSubscriptionRequestBadRequest.json new file mode 100644 index 0000000..52fa7c3 --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/AppInstSubscriptionRequestBadRequest.json @@ -0,0 +1,4 @@ +{ + "callbackERRORUri": "AppInstanceStateChangeSubscription", + "callbackUri": "https://callback.uri/path" +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/CancelMode.json b/MEC010p2/MEX/LCM/jsons/CancelMode.json new file mode 100644 index 0000000..1efafeb --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/CancelMode.json @@ -0,0 +1,3 @@ +{ + "CancelMode": "GRACEFUL" +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/CancelModeBadRequest.json b/MEC010p2/MEX/LCM/jsons/CancelModeBadRequest.json new file mode 100644 index 0000000..23f30eb --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/CancelModeBadRequest.json @@ -0,0 +1,3 @@ +{ + "CancelMode": "GRACEFULLL" +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/CreateAppInstanceRequest.json b/MEC010p2/MEX/LCM/jsons/CreateAppInstanceRequest.json new file mode 100644 index 0000000..3691ba6 --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/CreateAppInstanceRequest.json @@ -0,0 +1,5 @@ +{ + "appDId": "e0deee2b-6e50-4f33-ab09-8bf0585025d3", + "appInstanceDescription": "description", + "appInstanceName": "name" +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/CreateAppInstanceRequestBadRequest.json b/MEC010p2/MEX/LCM/jsons/CreateAppInstanceRequestBadRequest.json new file mode 100644 index 0000000..3eedcaa --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/CreateAppInstanceRequestBadRequest.json @@ -0,0 +1,5 @@ +{ + "appDDDId": "e0deee2b-6e50-4f33-ab09-8bf0585025d3", + "appInstanceDescription": "description", + "appInstanceName": "name" +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/InstantiateAppRequest.json b/MEC010p2/MEX/LCM/jsons/InstantiateAppRequest.json new file mode 100644 index 0000000..cfcb77c --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/InstantiateAppRequest.json @@ -0,0 +1,9 @@ +{ + "selectedMECHostInfo": [{ + "hostId": { + "key1": 123, + "key2": 456 + }, + "hostName": "hostname" + }] +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/InstantiateAppRequestBadRequest.json b/MEC010p2/MEX/LCM/jsons/InstantiateAppRequestBadRequest.json new file mode 100644 index 0000000..034b3ac --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/InstantiateAppRequestBadRequest.json @@ -0,0 +1,10 @@ +{ + "appERRORId": "1234", + "selectedMECHostInfo": [{ + "hostId": { + "key1": 123, + "key2": 456 + }, + "hostName": "hostname" + }] +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/OperateAppRequest.json b/MEC010p2/MEX/LCM/jsons/OperateAppRequest.json new file mode 100644 index 0000000..472fae8 --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/OperateAppRequest.json @@ -0,0 +1,3 @@ +{ + "changeStateTo": "STARTED" +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/OperateAppRequestBadRequest.json b/MEC010p2/MEX/LCM/jsons/OperateAppRequestBadRequest.json new file mode 100644 index 0000000..e881c4e --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/OperateAppRequestBadRequest.json @@ -0,0 +1,3 @@ +{ + "changeERRORStateTo": "STARTED" +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/TerminateAppRequest.json b/MEC010p2/MEX/LCM/jsons/TerminateAppRequest.json new file mode 100644 index 0000000..9066b57 --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/TerminateAppRequest.json @@ -0,0 +1,4 @@ +{ + "terminationType": "FORCEFUL", + "gracefulTerminationTimeout": 0 +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/jsons/TerminateAppRequestBadRequest.json b/MEC010p2/MEX/LCM/jsons/TerminateAppRequestBadRequest.json new file mode 100644 index 0000000..1aceaba --- /dev/null +++ b/MEC010p2/MEX/LCM/jsons/TerminateAppRequestBadRequest.json @@ -0,0 +1,4 @@ +{ + "terminationERRORType": "FORCEFUL", + "gracefulTerminationTimeout": 0 +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/schemas/AppInstSubscriptionRequest.schema.json b/MEC010p2/MEX/LCM/schemas/AppInstSubscriptionRequest.schema.json new file mode 100644 index 0000000..b807f53 --- /dev/null +++ b/MEC010p2/MEX/LCM/schemas/AppInstSubscriptionRequest.schema.json @@ -0,0 +1,104 @@ +{ + "type": "object", + "required": [ + "subscriptionType", + "callbackUri" + ], + "properties": { + "subscriptionType": { + "description": "Shall be set to AppInstanceStateChange.", + "type": "string" + }, + "callbackUri": { + "description": "The URI of the endpoint for the notification to be sent to.", + "type": "string", + "format": "uri" + }, + "appInstanceState": { + "description": "Only send notifications for application instances that are in one of the states listed in this attribute. If this attribute is absent, match all states.", + "type": "string", + "format": "enum", + "enum": [ + "NOT_INSTANTIATED", + "STARTED", + "STOPPED" + ] + }, + "appInstanceSubscriptionFilter": { + "description": "'This data type represents subscription filter criteria to match application instances. '", + "type": "object", + "required": [ + "appInstSelectorType" + ], + "properties": { + "appInstSelectorType": { + "description": "0 = void", + "type": "string", + "enum": [ + "VOID", + "APP_IDENTITY", + "APP_NAME", + "APP_D_ID", + "APP_FROM_PROVIDER" + ] + }, + "appInstances": { + "type": "array", + "items": { + "description": "If appInstIdSelector = APP_IDENTITY match existing application instances with an application instance identifier listed in this attribute.", + "type": "string" + } + }, + "appsFromProviders": { + "type": "array", + "items": { + "description": "'Present only if appInstIdSelector = APP_FROM_PROVIDER. Match existing application instances, or those created in the future whilst the subscription is active, that belong to applications from certain providers.'", + "type": "object", + "required": [ + "appProvider" + ], + "properties": { + "appProvider": { + "description": "Provider of the application and of the AppD.", + "type": "string" + }, + "appProducts": { + "description": "'If present, match application instances that belong to application products with certain product names, from one particular provider.'", + "type": "object", + "required": [ + "appName" + ], + "properties": { + "appName": { + "description": "Name to identify the MEC application.", + "type": "string" + }, + "versions": { + "description": "'If present, match application instances that belong to application products with certain versions and a certain product name, from one particular provider.'", + "type": "object", + "required": [ + "appSoftVersion" + ], + "properties": { + "appSoftVersion": { + "description": "Identifies the version of software of the MEC application.", + "type": "string" + }, + "appDVersion": { + "type": "array", + "items": { + "description": "Identifies the version of the application descriptor.", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/schemas/AppInstanceInfo.schema.json b/MEC010p2/MEX/LCM/schemas/AppInstanceInfo.schema.json new file mode 100644 index 0000000..875a946 --- /dev/null +++ b/MEC010p2/MEX/LCM/schemas/AppInstanceInfo.schema.json @@ -0,0 +1,197 @@ + { + "description": "'The data type of AppInstanceInfo represents the parameters of instantiated application instance resources.'", + "type": "object", + "required": [ + "id", + "appDId", + "appProvider", + "appName", + "appSoftVersion", + "appDVersion", + "appPkgId", + "instantiationState", + "_links" + ], + "properties": { + "id": { + "description": "Identifier of application instance.", + "type": "string" + }, + "appInstanceName": { + "description": "Name of the application instance.", + "type": "string" + }, + "appInstanceDescription": { + "description": "Human-readable description of the application instance to be created.", + "type": "string" + }, + "appDId": { + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.", + "type": "string" + }, + "appProvider": { + "description": "Provider of the application and of the AppD.", + "type": "string" + }, + "appName": { + "description": "Name to identify the MEC application.", + "type": "string" + }, + "appSoftVersion": { + "description": "Identifies the version of software of the MEC application.", + "type": "string" + }, + "appDVersion": { + "description": "Identifies the version of the application descriptor.", + "type": "string" + }, + "appPkgId": { + "description": "Identifier of the onboarded application package.", + "type": "string" + }, + "vimConnectionInfo": { + "type": "array", + "items": { + "properties": { + "accessInfo": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "extra": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "id": { + "description": "The identifier of the VIM Connection. This identifier is managed by the MEO.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "interfaceInfo": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "vimId": { + "description": "The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to address additional information about the VIM if such information has been configured into the MEPM by means outside the scope of the present document, and should be absent otherwise.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information.The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM.The set of permitted values is expected to change over time as new types or versions of VIMs become available. ", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "id", + "vimType" + ], + "type": "object", + "x-etsi-ref": "6.2.2.18" + } + }, + "instantiationState": { + "description": "Instantiation state of the application instance", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] + }, + "instantiatedAppState": { + "description": "'Information specific to an instantiated application. This attribute shall be present if the instantiationState attribute value is INSTANTIATED.'", + "type": "object", + "required": [ + "operationalState" + ], + "properties": { + "operationalState": { + "description": "Operational state is applicable in the instantiation state INSTANTIATED", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + } + } + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "instantiate": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "terminate": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "operate": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + } + } + } + } \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/schemas/AppLcmOpOcc.schema.json b/MEC010p2/MEX/LCM/schemas/AppLcmOpOcc.schema.json new file mode 100644 index 0000000..9494bd1 --- /dev/null +++ b/MEC010p2/MEX/LCM/schemas/AppLcmOpOcc.schema.json @@ -0,0 +1,138 @@ +{ + "description": "'This data type represents an application lifecycle management operation occurrence'", + "type": "object", + "required": [ + "id", + "operationState", + "stateEnteredTime", + "startTime", + "lcmOperation", + "_links" + ], + "properties": { + "id": { + "description": "'Identifier of the subscription to application LCM operation occurrence notification'", + "type": "string" + }, + "operationState": { + "description": "Operation state", + "type": "string", + "format": "enum", + "enum": [ + "STARTING", + "PROCESSING", + "COMPLETED", + "FAILED" + ] + }, + "stateEnteredTime": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.2.5.4" + }, + "startTime": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.2.5.4" + }, + "lcmOperation": { + "description": "Type of the actual LCM operation represented by this application instance LCM operation occurrence", + "type": "string", + "format": "enum", + "enum": [ + "INSTATIATE", + "OPERATE", + "TERMINATE" + ] + }, + "operationParams": { + "description": "'Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation.'", + "type": "string", + "enum": [ + "INSTANTIATE", + "OPERATE", + "TERMINATE" + ] + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self", + "appInstance" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appInstance": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + } + } + } + } \ No newline at end of file -- GitLab From ccedd079a040aa521618167155e7c6a13b4742c6 Mon Sep 17 00:00:00 2001 From: piscione Date: Mon, 31 Jan 2022 10:00:36 +0100 Subject: [PATCH 55/63] Implemented Grant TCs for MEC010p2. --- MEC010p2/MEO/GRANT/Grant.robot | 94 +++++++++++++------ MEC010p2/MEO/GRANT/environment/variables.txt | 4 +- ...ectedRequest.json => grantBadRequest.json} | 0 .../MEO/GRANT/jsons/grantBadRequest2.json | 6 ++ MEC010p2/MEO/GRANT/jsons/grantRequest2.json | 8 ++ .../GRANT/jsons/grantRequestAsynchronous.json | 22 +++++ .../jsons/grantRequestAsynchronous2.json | 22 +++++ 7 files changed, 126 insertions(+), 30 deletions(-) rename MEC010p2/MEO/GRANT/jsons/{grantRejectedRequest.json => grantBadRequest.json} (100%) create mode 100644 MEC010p2/MEO/GRANT/jsons/grantBadRequest2.json create mode 100644 MEC010p2/MEO/GRANT/jsons/grantRequestAsynchronous.json create mode 100644 MEC010p2/MEO/GRANT/jsons/grantRequestAsynchronous2.json diff --git a/MEC010p2/MEO/GRANT/Grant.robot b/MEC010p2/MEO/GRANT/Grant.robot index bb8075f..b83ccff 100644 --- a/MEC010p2/MEO/GRANT/Grant.robot +++ b/MEC010p2/MEO/GRANT/Grant.robot @@ -8,14 +8,13 @@ Library REST ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT} ssl_verify=false Library OperatingSystem - - *** Test Cases *** TP_MEC_MEC010p2_MEO_GRANT_001_OK - [Documentation] + [Documentation] TP_MEC_MEC010p2_MEO_GRANT_001_OK ... Check that MEO sends a synchronous grant response when a grant request is requested ... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1 ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 (GrantRequest) + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest) ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant) [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Create a GRANT request grantRequest @@ -23,43 +22,90 @@ TP_MEC_MEC010p2_MEO_GRANT_001_OK Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is Grant - - - TP_MEC_MEC010p2_MEO_GRANT_001_BR - [Documentation] TP_MEC_MEO_GRANT_001_BR + [Documentation] TP_MEC_MEC010p2_MEO_GRANT_001_BR ... Check that MEO responds with an error when it receives a malformed request when a new grant request is performed ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant) [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Create a GRANT request grantRejectedRequest + Create a GRANT request grantBadRequest Check HTTP Response Status Code Is 400 - - - TP_MEC_MEC010p2_MEO_GRANT_002_OK - [Documentation] TP_MEC_MEO_GRANT_002_OK - ... Check that MEO sends a asynchronous grant response when a grant request is requested - ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.1 - ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant) + [Documentation] TP_MEC_MEC010p2_MEO_GRANT_002_OK + ... Check that MEO sends a synchronous grant response when a grant request is requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 //GrantRequest + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Create a GRANT request grantRequest2 Check HTTP Response Status Code Is 201 - Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is Grant + +#TP_MEC_MEC010p2_MEO_GRANT_002_BR TODO clarify TPs before implementing this +# [Documentation] TP_MEC_MEC010p2_MEO_GRANT_002_BR +# ... Check that MEO responds with an error when it receives a malformed request when a new grant request is performed +# ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 +# ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant) +# [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS +# Create a GRANT request grantBadRequest2 +# Check HTTP Response Status Code Is 400 +TP_MEC_MEC010p2_MEO_GRANT_003_OK + [Documentation] TP_MEC_MEC010p2_MEO_GRANT_003_OK + ... Check that MEO sends an asynchronous grant response when a grant request is requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 (GrantRequest) + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest) + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant) + [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Create a GRANT request grantRequestAsynchronous + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location +##TODO Fix numbering against success case +TP_MEC_MEC010p2_MEO_GRANT_003_NF + [Documentation] TP_MEC_MEO_GRANT_003_NF + ... Check that MEO responds with an error when it receives a request for returning a grant referred with a wrong ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 + [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get an individual grant ${NOT_EXISTING_GRANT_ID} + Check HTTP Response Status Code Is 404 + + +TP_MEC_MEC010p2_MEO_GRANT_004_OK + [Documentation] TP_MEC_MEC010p2_MEO_GRANT_004_OK + ... Check that MEO sends an asynchronous grant response when a grant request is requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.2.2-1 (GrantRequest) + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant) + [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Create a GRANT request grantRequestAsynchronous2 + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + +TP_MEC_MEC010p2_MEO_GRANT_005_OK + [Documentation] TP_MEC_MEC010p2_MEO_GRANT_005_OK + ... Check that MEO sends the status of a grant request when a query on a granting ID is performed. + ... The process of creating the grant is ongoing, no grant is available yet + ... ETSI GS MEC 010-2 2.2.1, clause 7.5.2.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 + [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get an individual grant ${GRANT_ID_ACCEPTED} + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + TP_MEC_MEC010p2_MEO_GRANT_006_OK - [Documentation] TP_MEC_MEO_GRANT_003_OK + [Documentation] TP_MEC_MEC010p2_MEO_GRANT_006_OK ... Check that MEO sends the status of a grant request when a query on a granting ID is performed. ... The process of creating the grant is ongoing, no grant is available yet - ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 7.5.2.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Get an individual grant ${GRANT_ID} Check HTTP Response Status Code Is 200 @@ -67,17 +113,7 @@ TP_MEC_MEC010p2_MEO_GRANT_006_OK Check HTTP Response Body Json Schema Is Grant - -TP_MEC_MEC010p2_MEO_GRANT_003_NF - [Documentation] TP_MEC_MEO_GRANT_003_NF - ... Check that MEO responds with an error when it receives a request for returning a grant referred with a wrong ID - ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 - [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an individual grant ${NOT_EXISTING_GRANT_ID} - Check HTTP Response Status Code Is 404 - - - + *** Keywords *** Create a GRANT request diff --git a/MEC010p2/MEO/GRANT/environment/variables.txt b/MEC010p2/MEO/GRANT/environment/variables.txt index 750b765..603052e 100644 --- a/MEC010p2/MEO/GRANT/environment/variables.txt +++ b/MEC010p2/MEO/GRANT/environment/variables.txt @@ -12,7 +12,9 @@ ${apiVersion} v1 # Specific variables ${GRANT_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 -${NOT_EXISTING_GRANT_ID} non_existant_grant_id +${GRANT_ID_ACCEPTED} abcdee2b-6e50-4f33-ab09-8bf05850abcd +${NOT_EXISTING_GRANT_ID} NOT_EXISTING_GRANT_ID +${APP_INSTANCE_ID} 456 # Notifications variables diff --git a/MEC010p2/MEO/GRANT/jsons/grantRejectedRequest.json b/MEC010p2/MEO/GRANT/jsons/grantBadRequest.json similarity index 100% rename from MEC010p2/MEO/GRANT/jsons/grantRejectedRequest.json rename to MEC010p2/MEO/GRANT/jsons/grantBadRequest.json diff --git a/MEC010p2/MEO/GRANT/jsons/grantBadRequest2.json b/MEC010p2/MEO/GRANT/jsons/grantBadRequest2.json new file mode 100644 index 0000000..36380ae --- /dev/null +++ b/MEC010p2/MEO/GRANT/jsons/grantBadRequest2.json @@ -0,0 +1,6 @@ +{ + "id": "123", + "appInstanceId": "456", + "appLcmOpOccId": "789", + "operationERROR":"INSTANTIATE" +} \ No newline at end of file diff --git a/MEC010p2/MEO/GRANT/jsons/grantRequest2.json b/MEC010p2/MEO/GRANT/jsons/grantRequest2.json index da29253..4a9a1d4 100644 --- a/MEC010p2/MEO/GRANT/jsons/grantRequest2.json +++ b/MEC010p2/MEO/GRANT/jsons/grantRequest2.json @@ -3,6 +3,14 @@ "appInstanceId": "456", "appLcmOpOccId": "789", "operation": "OPERATE", + "addResources": [ + { + "resourceDefinitionId": "resourceDefinitionId", + "vimConnectionId": "vimConnectionId", + "resourceGroupId": "resourceGroupId", + "zoneId": "zoneId" + } + ], "_links": { "appLcmOpOcc": { "href": "https://anexample.ex/" diff --git a/MEC010p2/MEO/GRANT/jsons/grantRequestAsynchronous.json b/MEC010p2/MEO/GRANT/jsons/grantRequestAsynchronous.json new file mode 100644 index 0000000..edc0c4c --- /dev/null +++ b/MEC010p2/MEO/GRANT/jsons/grantRequestAsynchronous.json @@ -0,0 +1,22 @@ +{ + "id": "456", + "appInstanceId": "456", + "appLcmOpOccId": "789", + "operation": "INSTANTIATE", + "addResources": [ + { + "resourceDefinitionId": "resourceDefinitionId", + "vimConnectionId": "vimConnectionId", + "resourceGroupId": "resourceGroupId", + "zoneId": "zoneId" + } + ], + "_links": { + "appLcmOpOcc": { + "href": "https://anexample.ex/" + }, + "appInstance": { + "href": "https://anexample.ex/" + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEO/GRANT/jsons/grantRequestAsynchronous2.json b/MEC010p2/MEO/GRANT/jsons/grantRequestAsynchronous2.json new file mode 100644 index 0000000..b72c923 --- /dev/null +++ b/MEC010p2/MEO/GRANT/jsons/grantRequestAsynchronous2.json @@ -0,0 +1,22 @@ +{ + "id": "456", + "appInstanceId": "456", + "appLcmOpOccId": "789", + "operation": "OPERATE", + "addResources": [ + { + "resourceDefinitionId": "resourceDefinitionId", + "vimConnectionId": "vimConnectionId", + "resourceGroupId": "resourceGroupId", + "zoneId": "zoneId" + } + ], + "_links": { + "appLcmOpOcc": { + "href": "https://anexample.ex/" + }, + "appInstance": { + "href": "https://anexample.ex/" + } + } +} \ No newline at end of file -- GitLab From 53ea122e65afd4adf689b9b723044ca3d7f655b8 Mon Sep 17 00:00:00 2001 From: piscione Date: Mon, 31 Jan 2022 16:49:26 +0100 Subject: [PATCH 56/63] Added JSON bodies for platform configuration TCs for MEC010p2 v2.2.1. --- MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequest.json | 5 +++++ .../MEPM/LCM/json/ConfigPlatformForAppRequestBadRequest.json | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequest.json create mode 100644 MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequestBadRequest.json diff --git a/MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequest.json b/MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequest.json new file mode 100644 index 0000000..2c6e92f --- /dev/null +++ b/MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequest.json @@ -0,0 +1,5 @@ +{ + "appServiceRequired": [{ + "sernName": "serviceName" + }] +} \ No newline at end of file diff --git a/MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequestBadRequest.json b/MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequestBadRequest.json new file mode 100644 index 0000000..79d5829 --- /dev/null +++ b/MEC010p2/MEPM/LCM/json/ConfigPlatformForAppRequestBadRequest.json @@ -0,0 +1,5 @@ +{ + "appServiceWrongRequired": [{ + "sernName": "serviceName" + }] +} \ No newline at end of file -- GitLab From cbf7bbb772b99789d7e356a0e6a1d4c7e4318a30 Mon Sep 17 00:00:00 2001 From: piscione Date: Mon, 31 Jan 2022 16:54:18 +0100 Subject: [PATCH 57/63] Updated TCs of Package Management of MEPM for MEC010p2 v2.2.1 --- MEC010p2/MEPM/PKGM/PackageManagement.robot | 476 ++++++++++++------ MEC010p2/MEPM/PKGM/environment/variables.txt | 45 +- .../MEPM/PKGM/jsons/AppPkgSubscription.json | 4 + .../jsons/AppPkgSubscriptionBadRequest.json | 4 + .../MEPM/PKGM/jsons/CreateAppPackage.json | 1 - MEC010p2/MEPM/PKGM/jsons/MalformedAppPkg.json | 0 .../jsons/MalformedAppPkgSubscription.json | 0 .../MEPM/PKGM/schemas/AppPkgInfo.schema.json | 169 +++++++ .../PKGM/schemas/AppPkgSubscriptionInfo.json | 0 .../AppPkgSubscriptionInfo.schema.json | 55 ++ .../schemas/AppPkgSubscriptionLinkList.json | 0 .../AppPkgSubscriptionLinkList.schema.json | 61 +++ .../PKGM/schemas/OnboardedAppPkgInfo.json | 0 .../PKGM/schemas/OnboardedAppPkgInfos.json | 0 14 files changed, 633 insertions(+), 182 deletions(-) create mode 100644 MEC010p2/MEPM/PKGM/jsons/AppPkgSubscriptionBadRequest.json delete mode 100644 MEC010p2/MEPM/PKGM/jsons/CreateAppPackage.json delete mode 100644 MEC010p2/MEPM/PKGM/jsons/MalformedAppPkg.json delete mode 100644 MEC010p2/MEPM/PKGM/jsons/MalformedAppPkgSubscription.json create mode 100644 MEC010p2/MEPM/PKGM/schemas/AppPkgInfo.schema.json delete mode 100644 MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionInfo.json create mode 100644 MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionInfo.schema.json delete mode 100644 MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.json create mode 100644 MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.schema.json delete mode 100644 MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfo.json delete mode 100644 MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfos.json diff --git a/MEC010p2/MEPM/PKGM/PackageManagement.robot b/MEC010p2/MEPM/PKGM/PackageManagement.robot index 188df53..6845b23 100644 --- a/MEC010p2/MEPM/PKGM/PackageManagement.robot +++ b/MEC010p2/MEPM/PKGM/PackageManagement.robot @@ -1,5 +1,5 @@ -''[Documentation] robot --outputdir ./outputs ./SRV/UETAG/PlatUeIdentity.robot -... Test Suite to validate UE Identity Tag (UETAG) operations. +''[Documentation] robot --outputdir ./outputs ./PackageManagement.robot +... Test Suite to validate Package Management (PKGM) operations. *** Settings *** Resource environment/variables.txt @@ -7,229 +7,417 @@ Resource ../../../GenericKeywords.robot Library REST ${MEPM_SCHEMA}://${MEPM_HOST}:${MEPM_PORT} ssl_verify=false Library BuiltIn Library OperatingSystem -Library MockServerLibrary +#Library MockServerLibrary *** Test Cases *** -TC_MEC_MEC010p2_MEPM_PKGM_001_OK - [Documentation] TP_MEC_MEPM_PKGM_001_OK - ... Check that MEPM returns the list of App Packages when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.1.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo) +TC_MEC_MEC010p2_MEPM_PKGM_001_01_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_001_01_OK + ... Check that MEPM returns the list of App Packages when requested - Note 3 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS GET all APP Packages Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is OnboardedAppPkgInfos - Check Result Contains ${response} appPkgId ${ON_BOARDED_APP_PKG_ID} - Check Result Contains ${response} appDId ${APPD_ID} + FOR ${appPkg} IN @{response['body']} + Validate Json AppPkgInfo.schema.json ${appPkg} + END -TC_MEC_MEC010p2_MEPM_PKGM_001_BR - [Documentation] TP_MEC_MEPM_PKGM_001_BR - ... Check that MEPM responds with an error when it receives - ... a malformed request for requesting the list of existing App Packages - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.1.3.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - GET all APP Packages with filters ${MALFORMED_FILTER_NAME} ${FILTER_VALUE} - Check HTTP Response Status Code Is 400 - - -TC_MEC_MEC010p2_MEPM_PKGM_002_OK - [Documentation] TP_MEC_MEPM_PKGM_002_OK - ... Check that MEPM returns the an App Package when requested - ... EETSI GS MEC 010-2 2.0.10, clause 7.4.2.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo) +TC_MEC_MEC010p2_MEPM_PKGM_001_02_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_001_02_OK + ... Check that MEPM returns the list of on boarded app Packages when requested - Note 3 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - GET an APP Package identified by ${ON_BOARDED_APP_PKG_ID} + GET all onboarded APP Packages Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is OnboardedAppPkgInfo - Check Result Contains ${response} appPkgId ${ON_BOARDED_APP_PKG_ID} - Check Result Contains ${response} appDId ${APPD_ID} + FOR ${appPkg} IN @{response['body']} + Validate Json AppPkgInfo.schema.json ${appPkg} + END + - -TC_MEC_MEC010p2_MEPM_PKGM_002_NF - [Documentation] TP_MEC_MEPM_PKGM_002_NF - ... Check that MEPM responds with an error when it receives - ... a request for returning a App Package referred with a wrong ID - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.2.3.2 +TC_MEC_MEC010p2_MEPM_PKGM_002_01_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_002_01_OK + ... Check that MEPM returns the an App Package when requested - Note 3 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - GET an APP Package identified by ${NON_EXISTENT_APP_PKG_ID} - Check HTTP Response Status Code Is 404 - + GET an APP Package identified by ${APP_PKG_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AppPkgInfo + Should Be Equal As Strings ${response['body']['id']} ${APP_PKG_ID} - -TC_MEC_MEC010p2_MEPM_PKGM_003_OK - [Documentation] TP_MEC_MEPM_PKGM_003_OK + +TC_MEC_MEC010p2_MEPM_PKGM_003_01_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_01_OK ... Check that MEPM returns the Application Descriptor contained on a on-boarded Application Package when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.4.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an AppD from App Package identified by ${ON_BOARDED_APP_PKG_ID} + Get AppD by ${APPD_ID} Check HTTP Response Status Code Is 200 - Check HTTP Response Contain Header with value Content-Type ${ACCEPTED_CONTENT_TYPE} - ##TODO: How to check content returned? - -TC_MEC_MEC010p2_MEPM_PKGM_003_NF - [Documentation] TP_MEC_MEPM_PKGM_003_NF - ... Check that MEPM responds with an error when it receives - ... a request for returning a App Descriptor referred with a wrong App Package ID - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.4.3.2 + +TC_MEC_MEC010p2_MEPM_PKGM_003_02_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_02_OK + ... Check that MEPM returns the Application Descriptor contained on a on-boarded Application Package when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an AppD from App Package identified by ${NON_EXISTENT_APP_PKG_ID} - Check HTTP Response Status Code Is 404 - - -TC_MEC_MEC010p2_MEPM_PKGM_004_OK - [Documentation] TP_MEC_MEPM_PKGM_004_OK - ... Check that MEPM returns the content on a on-boarded Application Package when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.3.3.2 + Get AppD from onboarded app packages by ${APPD_ID} + Check HTTP Response Status Code Is 200 + + +TC_MEC_MEC010p2_MEPM_PKGM_004_01_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_004_01_OK + ... Check that MEPM fetches the on-boarded application package content identified by appPkgId when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get the Content from an App Package identified by ${ON_BOARDED_APP_PKG_ID} + Get onboarded application package ${APP_PKG_ID} Check HTTP Response Status Code Is 200 - ##TODO: How to check content returned? + Should Be Equal As Strings ${response}[headers][Content-Type] application/zip + -TC_MEC_MEC010p2_MEPM_PKGM_004_NF - [Documentation] TP_MEC_MEPM_PKGM_004_NF - ... Check that MEPM responds with an error when it receives - ... a request for returning a application package content referred with a wrong App Package ID - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.4.3.2 +TC_MEC_MEC010p2_MEPM_PKGM_004_02_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_004_02_OK + ... Check that MEPM fetches the on-boarded application package content identified by appDId when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get the Content from an App Package identified by ${NON_EXISTENT_APP_PKG_ID} - Check HTTP Response Status Code Is 404 + Get onboarded application package by AppdId ${APPD_ID} + Check HTTP Response Status Code Is 200 + Should Be Equal As Strings ${response}[headers][Content-Type] application/zip TC_MEC_MEC010p2_MEPM_PKGM_005_OK - [Documentation] TP_MEC_MEPM_PKGM_005_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_005_OK ... Check that MEPM service returns an application package subscription when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.5.3.1 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.7.2-1 (AppPkgSubscription) - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.4.2-1 (AppPkgSubscriptionInfo) + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.1", + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Send a request for a subscription AppPkgSubscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo - Check Result Contains ${response} subscriptionType ON_BOARDING - Check Result Contains ${response} callbackUri ${CALLBACK_URI} + Should Be Equal As Strings ${response}[body][subscriptionType] AppPackageOnBoardingSubscription + Should Be Equal As Strings ${response}[body][callbackUri] ${CALLBACK_URI} -TC_MEC_MEC010p2_MEPM_PKGM_005_BR - [Documentation] TP_MEC_MEPM_PKGM_005_BR - ... Check that MEPM service sends an error when it receives a - ... malformed request for creating a new subscription on AppPackages - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.5.3.1 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.7.2-1 (AppPkgSubscription) - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Send a request for a subscription MalformedAppPkgSubscription - Check HTTP Response Status Code Is 400 - TC_MEC_MEC010p2_MEPM_PKGM_006_OK - [Documentation] TP_MEC_MEPM_PKGM_006_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_006_OK ... Check that MEPM service returns the list of Application Package Subscriptions when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.5.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.4.2-1 (AppPkgSubscriptionLinkList) + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.5.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.4.2-1 (AppPkgSubscriptionLinkList) [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Get all APP Package subscriptions Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is AppPkgSubscriptionLinkList - Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID} + TC_MEC_MEC010p2_MEPM_PKGM_007_OK - [Documentation] TP_MEC_MEPM_PKGM_007_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_007_OK ... Check that MEPM service returns an Application Package Subscription when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.6.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.4.2-1 (AppPkgSubscriptionInfo) + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Get an individual APP Package subscriptions ${SUBSCRIPTION_ID} - Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo - Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 200 + Should Be Equal As Strings ${response}[body][id] ${SUBSCRIPTION_ID} + Should Contain ${response}[body][_links][self][href] /app_pkgm/v1/subscriptions/${SUBSCRIPTION_ID} + +TC_MEC_MEC010p2_MEPM_PKGM_008_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_008_OK + ... Check that MEPM service deletes an Application Package Subscription when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Delete an App Package Subscription identified by ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 204 + Check HTTP Response Body is Empty + + +#TC_MEC_MEC010p2_MEPM_PKGM_009_OK +# [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_009_OK +# ... Check that the MEPM service sends a application package notification +# ... if the MEO service has an associated subscription and the event is generated +# ... ETSI GS MEC 010-2 2.2.1, clause 7.3.5.3.1 +# ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.6 +# ${json}= Get File schemas/AppPkgNotification.schema.json +# Log Creating mock request and response to handle Application Package Notification +# &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} +# &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 +# Create Mock Expectation ${req} ${rsp} +# Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} +# Log Verifying results +# Verify Mock Expectation ${req} +# Log Cleaning the endpoint +# Clear Requests ${callback_endpoint} + + +TC_MEC_MEC010p2_MEPM_PKGM_001_BR + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_001_BR + ... Check that MEPM responds with an error when it receives + ... a malformed request for requesting the list of existing App Packages + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + GET all APP Packages with filters ${MALFORMED_FILTER_NAME} ${FILTER_VALUE} + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC010p2_MEPM_PKGM_002_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_001_BR + ... Check that MEPM responds with an error when it receives + ... a request for returning a App Package referred with a wrong ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get AppD by ${NON_EXISTENT_APP_PKG_ID} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC010p2_MEPM_PKGM_003_01_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_01_NF + ... Check that MEPM responds with an error when it receives + ... a request for returning a App Descriptor referred with a wrong App Package ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get AppD from onboarded app packages by ${NON_EXISTENT_APP_PKG_ID} + Check HTTP Response Status Code Is 404 + + + + +TC_MEC_MEC010p2_MEPM_PKGM_003_02_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_02_NF + ... Check that MEPM responds with an error when it receives + ... a request for returning a App Descriptor referred with a wrong appDId + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get AppD from onboarded app packages by ${NON_EXISTENT_APP_PKG_ID} + Check HTTP Response Status Code Is 404 + -TC_MEC_MEC010p2_MEPM_PKGM_007_NF - [Documentation] TP_MEC_MEPM_PKGM_007_NF - ... Check that MEPM service sends an error when it receives a query for a subscription - ... on AppPackages with a wrong identifier - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.6.3.2 +TC_MEC_MEC010p2_MEPM_PKGM_004_BR + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_004_BR + ... Check that MEPM service sends an error when it receives a + ... malformed request for creating a new subscription on AppPackages + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.1 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Send a request for a subscription AppPkgSubscriptionBadRequest + Check HTTP Response Status Code Is 400 + + + +TC_MEC_MEC010p2_MEPM_PKGM_005_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_005_NF + ... Check that MEPM service sends an error when it receives a query for a subscription on AppPackages + ... with a wrong identifier + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Get an individual APP Package subscriptions ${NON_EXISTENT_SUBSCRIPTION_ID} Check HTTP Response Status Code Is 404 -TC_MEC_MEC010p2_MEPM_PKGM_008_OK - [Documentation] TP_MEC_MEPM_PKGM_008_OK - ... Check that MEPM service deletes an Application Package Subscription when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.6.3.4 + +TC_MEC_MEC010p2_MEPM_PKGM_007_01_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_007_01_NF + ... Check that MEPM responds with an error when it receives + ... a POST request referring an application descriptor AppD + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.1 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Delete an App Package Subscription identified by ${SUBSCRIPTION_ID} - Check HTTP Response Status Code Is 204 - Check HTTP Response Body is Empty + Post AppD by ${APPD_ID} + Check HTTP Response Status Code Is 405 -TC_MEC_MEC010p2_MEPM_PKGM_008_NF - [Documentation] TP_MEC_MEPM_PKGM_008_NF - ... Check that MEPM service sends an error when it receives a deletion - ... request for a subscription on AppPackages with a wrong identifier - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.6.3.4 + +TC_MEC_MEC010p2_MEPM_PKGM_007_02_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_007_02_NF + ... Check that MEPM responds with an error when it receives + ... a POST request referring an application descriptor AppD + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.1 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Post AppD from onboarded app packages by ${APPD_ID} + Check HTTP Response Status Code Is 405 + + + +TC_MEC_MEC010p2_MEO_PKGM_009_NF + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_009_NF + ... Check that MEPM service sends an error when it receives a deletion request for a subscription on AppPackages with a wrong identifier + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Delete an App Package Subscription identified by ${NON_EXISTENT_SUBSCRIPTION_ID} Check HTTP Response Status Code Is 404 -TC_MEC_MEC010p2_MEPM_PKGM_009_OK - [Documentation] TP_MEC_MEPM_PKGM_009_OK - ... Check that the MEPM service sends a application package notification - ... if the MEPM service has an associated subscription and the event is generated - ... ETSI GS MEC 010-2 2.0.10, clause 7.4.7.3.1 - ${json}= Get File schemas/AppPkgNotification.schema.json - Log Creating mock request and response to handle Application Package Notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} +TC_MEC_MEC010p2_MEPM_PKGM_010_BR + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_010_BR + ... Check that MEPM service sends an error when it receives a + ... malformed request for creating a new subscription on AppPackages + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.1 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Send a request for a subscription AppPkgSubscriptionBadRequest + Check HTTP Response Status Code Is 400 + + + +TC_MEC_MEC010p2_MEPM_PKGM_011_01_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_011_01_NF + ... Check that MEPM fetches the on-boarded application package content identified by appPkgId when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get onboarded application package ${NON_EXISTENT_APPD_ID} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC010p2_MEPM_PKGM_011_02_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_011_02_NF + ... Check that MEPM fetches the on-boarded application package content identified by appDId when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get onboarded application package by AppdId ${NON_EXISTENT_APPD_ID} + Check HTTP Response Status Code Is 404 + *** Keywords *** +Post APP Package + Log Getting all App Packages + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Post ${apiRoot}/${apiName}/${apiVersion}/app_packages + ${output}= Output response + Set Suite Variable ${response} ${output} + + GET all APP Packages Log Getting all App Packages Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} + Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/app_packages ${output}= Output response Set Suite Variable ${response} ${output} +GET all onboarded APP Packages + Log Getting all App Packages + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages + ${output}= Output response + Set Suite Variable ${response} ${output} GET all APP Packages with filters [Arguments] ${key} ${value} Log Getting all App Packages using filtering parameters Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} + Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/app_packages?${key}=${value} ${output}= Output response Set Suite Variable ${response} ${output} - - + + GET an APP Package identified by [Arguments] ${value} Log Getting an App Package Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} + Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${value} ${output}= Output response Set Suite Variable ${response} ${output} + +GET an onboarded APP Package identified by + [Arguments] ${value} + Log Getting an App Package + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${value} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get AppD by + [Arguments] ${appdId} + Log Getting App Descriptor by its identifier + Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appdId}/appd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get AppD from onboarded app packages by + [Arguments] ${appdId} + Log Getting App Descriptor by its identigier + Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/appd + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Post AppD by + [Arguments] ${appdId} + Log Getting App Descriptor by its identigier + Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} + Set Headers {"Authorization":"${TOKEN}"} + Post ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appdId}/appd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Post AppD from onboarded app packages by + [Arguments] ${appdId} + Log Getting App Descriptor by its identigier + Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} + Set Headers {"Authorization":"${TOKEN}"} + Post ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/appd + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get onboarded application package + [Arguments] ${appPkgId} + Log Getting App descriptor for App Package + Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/package_content + ${output}= Output response + Set Suite Variable ${response} ${output} - +Get onboarded application package by AppdId + [Arguments] ${appdId} + Log Getting App descriptor for App Package + Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/package_content + ${output}= Output response + Set Suite Variable ${response} ${output} + + Get an AppD from App Package identified by [Arguments] ${appPkgId} Log Getting App descriptor for App Package - Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} + Set Headers {"Accept":"application/zip"} + Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/app_descriptor ${output}= Output response @@ -242,16 +430,16 @@ Send a request for a subscription Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${content} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} - - Get all APP Package subscriptions Log Getting list of subscriptions Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} + Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${output}= Output response @@ -261,7 +449,7 @@ Get an individual APP Package subscriptions [Arguments] ${subId} Log Getting an individual subscription Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} + Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subId} ${output}= Output response @@ -271,18 +459,8 @@ Delete an App Package Subscription identified by [Arguments] ${subId} Log Deleting a subscription Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} + Set Headers {"Content-Type":"*/*"} Set Headers {"Authorization":"${TOKEN}"} Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subId} ${output}= Output response Set Suite Variable ${response} ${output} - - -Get the Content from an App Package identified by - [Arguments] ${appPkgId} - Log Getting App descriptor for App Package - Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} - Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/appPkgContent - ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC010p2/MEPM/PKGM/environment/variables.txt b/MEC010p2/MEPM/PKGM/environment/variables.txt index 4685b21..f831a32 100644 --- a/MEC010p2/MEPM/PKGM/environment/variables.txt +++ b/MEC010p2/MEPM/PKGM/environment/variables.txt @@ -1,44 +1,25 @@ *** Variables *** # Generic variables ${MEPM_SCHEMA} http -${MEPM_HOST} 10.192.2.172 +${MEPM_HOST} 127.0.0.1 ${MEPM_PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} -${apiName} apmi +${apiName} app_pkgm ${apiVersion} v1 +${ACCEPTED_CONTENT_TYPE} text/plain + # Specific variables -${APP_PKG_NAME} APP_PKG_NAME // Should be the same as in AppPkg.json -${APP_PKG_VERSION} APP_PKG_VERSION // Should be the same as in AppPkg.json -${CHECKSUM} CHECKSUM // Should be the same as in AppPkg.json -${OPERATIONAL_STATE} OPERATIONAL_STATE // Should be the same as in AppPkg.json -${USAGE_STATE} USAGE_STATE // Should be the same as in AppPkg.json -${ON_BOARDED_APP_PKG_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f -${APPD_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 -${MALFORMED_FILTER_NAME} operationalStatus // Should be operationalState -${FILTER_VALUE} NOT_IN_USE +${APP_PKG_ID} appPkgId +${APP_INSTANCE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f +${APPD_ID} appdId +${NOT_EXISTING_APP_INSTANCE_ID} NOT_EXISTING_APP_INSTANCE_ID +${CALLBACK_URI} http://some.url/somepath +${SUBSCRIPTION_ID} 1234782-2c70-4e47-9a4e-0ee3a1a0fabcd +${MALFORMED_FILTER_NAME} operationalStatus +${FILTER_VALUE} ENABLED ${NON_EXISTENT_APP_PKG_ID} NON_EXISTENT_APP_PKG_ID -${OPERATION_VALUE} DISABLE - -${ACCEPTED_CONTENT_TYPE} text/plain // Should refer to the type of AppD -${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 ${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID - - - - -${SUBSCRIPTION_TYPE} MobilityProcedureSubscription - - - -# Notifications variables -${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar - -${callback_port} 9091 -${callback_uri} http://172.22.1.7:${callback_port} -${callback_endpoint} /amsi/subscriptions -${callback_endpoint_error} /subs_404 -${total_polling_time} 2 min -${polling_interval} 10 sec \ No newline at end of file +${NON_EXISTENT_APPD_ID} NON_EXISTENT_APPD_ID \ No newline at end of file diff --git a/MEC010p2/MEPM/PKGM/jsons/AppPkgSubscription.json b/MEC010p2/MEPM/PKGM/jsons/AppPkgSubscription.json index e69de29..391ec3a 100644 --- a/MEC010p2/MEPM/PKGM/jsons/AppPkgSubscription.json +++ b/MEC010p2/MEPM/PKGM/jsons/AppPkgSubscription.json @@ -0,0 +1,4 @@ +{ + "callbackUri": "http://some.url/somepath", + "subsctiptionType": "AppPackageOnBoardingSubscription" +} \ No newline at end of file diff --git a/MEC010p2/MEPM/PKGM/jsons/AppPkgSubscriptionBadRequest.json b/MEC010p2/MEPM/PKGM/jsons/AppPkgSubscriptionBadRequest.json new file mode 100644 index 0000000..a94317c --- /dev/null +++ b/MEC010p2/MEPM/PKGM/jsons/AppPkgSubscriptionBadRequest.json @@ -0,0 +1,4 @@ +{ + "callbackUri": "http://some.url/somepath", + "subscriptionType": "ON-BOARDING" +} \ No newline at end of file diff --git a/MEC010p2/MEPM/PKGM/jsons/CreateAppPackage.json b/MEC010p2/MEPM/PKGM/jsons/CreateAppPackage.json deleted file mode 100644 index 9e26dfe..0000000 --- a/MEC010p2/MEPM/PKGM/jsons/CreateAppPackage.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/MEC010p2/MEPM/PKGM/jsons/MalformedAppPkg.json b/MEC010p2/MEPM/PKGM/jsons/MalformedAppPkg.json deleted file mode 100644 index e69de29..0000000 diff --git a/MEC010p2/MEPM/PKGM/jsons/MalformedAppPkgSubscription.json b/MEC010p2/MEPM/PKGM/jsons/MalformedAppPkgSubscription.json deleted file mode 100644 index e69de29..0000000 diff --git a/MEC010p2/MEPM/PKGM/schemas/AppPkgInfo.schema.json b/MEC010p2/MEPM/PKGM/schemas/AppPkgInfo.schema.json new file mode 100644 index 0000000..3a9a469 --- /dev/null +++ b/MEC010p2/MEPM/PKGM/schemas/AppPkgInfo.schema.json @@ -0,0 +1,169 @@ +{ + "description": "'The data type AppPkgInfo represents the parameters for an application package resource'", + "type": "object", + "required": [ + "id", + "appDId", + "appName", + "appSoftwareVersion", + "appDVersion", + "checksum", + "softwareImages", + "onboardingState", + "operationalState", + "usageState", + "mecInfo", + "_links" + ], + "properties": { + "id": { + "description": "Identifier of the onboarded application package.", + "type": "string" + }, + "appDId": { + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.", + "type": "string" + }, + "appProvider": { + "description": "Provider of the application and of the AppD.", + "type": "string" + }, + "appName": { + "description": "Name to identify the MEC application.", + "type": "string" + }, + "appSoftwareVersion": { + "description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package.", + "type": "string" + }, + "appDVersion": { + "description": "Identifies the version of the application descriptor.", + "type": "string" + }, + "checksum": { + "description": "", + "properties": { + "algorithm": { + "description": " Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.", + "type": "string" + }, + "hash": { + "description": "'String 1 The hexadecimal value of the checksum'", + "type": "string" + } + }, + "required": [ + "algorithm", + "hash" + ], + "type": "object" + }, + "softwareImages": { + "description": "Information of application software image in application package. Type is TBD" + }, + "additionalArtifacts": { + "description": "Additional information of application package artifacts that are not application software images. Type is TBD" + }, + "onboardingState": { + "description": "Onboarding state of application package", + "type": "string", + "format": "enum", + "enum": [ + "CREATED", + "UPLOADING", + "PROCESSING", + "ONBOARDED" + ] + }, + "operationalState": { + "description": "Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] + }, + "usageState": { + "description": "Usage state of the onboarded instance of the application package", + "type": "string", + "format": "enum", + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] + }, + "mecInfo": { + "description": "", + "type": "array", + "items": { + "type": "string" + } + }, + + + "userDefinedData": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self", + "appD", + "appPkgContent" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appD": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appPkgContent": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + } + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionInfo.json b/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionInfo.json deleted file mode 100644 index e69de29..0000000 diff --git a/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionInfo.schema.json b/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionInfo.schema.json new file mode 100644 index 0000000..81141b9 --- /dev/null +++ b/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionInfo.schema.json @@ -0,0 +1,55 @@ +{ + "description": "'The data type represents a subscription to notification of application package management for the onboarding, or operational state change of application package'", + "type": "object", + "required": [ + "id", + "subscriptionType", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "''", + "type": "string" + }, + "subscriptionType": { + "description": "Subscribed notification type.", + "type": "string", + "enum": [ + "AppPackageOnBoardingSubscription", + "AppPacakgeOperationChangeSubscription", + "AppPackageDeletionSubscription" + ] + }, + "callbackUri": { + "description": "The URI of the endpoint for the notification to be sent to.", + "type": "string", + "format": "uri" + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + } + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.json b/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.json deleted file mode 100644 index e69de29..0000000 diff --git a/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.schema.json b/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.schema.json new file mode 100644 index 0000000..84302c8 --- /dev/null +++ b/MEC010p2/MEPM/PKGM/schemas/AppPkgSubscriptionLinkList.schema.json @@ -0,0 +1,61 @@ +{ + "description": "'The data type represents a subscription link list of notification on application package management'", + "type": "object", + "required": [ + "_links" + ], + "properties": { + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "subscriptions": { + "type": "array", + "items": { + "description": "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'", + "type": "object", + "required": [ + "href", + "subsctiptionType" + ], + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "format": "uri" + }, + "subsctiptionType": { + "description": "'Subscribed notification type'", + "type": "string", + "enum": [ + "AppPackageOnBoardingSubscription", + "AppPacakgeOperationChangeSubscription", + "AppPackageDeletionSubscription" + ] + } + } + } + } + } + } + } + } \ No newline at end of file diff --git a/MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfo.json b/MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfo.json deleted file mode 100644 index e69de29..0000000 diff --git a/MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfos.json b/MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfos.json deleted file mode 100644 index e69de29..0000000 -- GitLab From 0c96fc4c7e592b3a6908f76cf4080fb62ece882c Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 10 Feb 2022 09:16:25 +0100 Subject: [PATCH 58/63] Updated App Package Management TCs for MEC010p2 v2.2.1 --- MEC010p2/MEO/PKGM/AppPkgMgt.robot | 496 ++++++++++ MEC010p2/MEO/PKGM/PackageManagement.robot | 374 -------- MEC010p2/MEO/PKGM/environment/variables.txt | 31 +- .../PKGM/jsons/AppPkgInfoModifications.json | 3 + .../AppPkgInfoModificationsBadRequest.json | 3 + .../MEO/PKGM/jsons/AppPkgSubscription.json | 10 + .../jsons/AppPkgSubscriptionBadRequest.json | 10 + MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json | 29 +- .../jsons/CreateAppPackageBadRequest.json | 3 + MEC010p2/MEO/PKGM/jsons/MalformedAppPkg.json | 0 .../jsons/MalformedAppPkgSubscription.json | 0 MEC010p2/MEO/PKGM/schemas/AppD.schema.json | 879 ++++++++++++++++++ .../MEO/PKGM/schemas/AppPkgInfo.schema.json | 159 ++++ .../AppPkgInfoModifications.schema.json | 16 + .../schemas/AppPkgNotification.schema.json | 98 ++ .../PKGM/schemas/AppPkgSubscriptionInfo.json | 0 .../AppPkgSubscriptionInfo.schema.json | 55 ++ .../schemas/AppPkgSubscriptionLinkList.json | 0 .../AppPkgSubscriptionLinkList.schema.json | 61 ++ .../MEO/PKGM/schemas/CreateAppPkg.schema.json | 57 ++ .../MEO/PKGM/schemas/OnboardedAppPkgInfo.json | 0 .../PKGM/schemas/OnboardedAppPkgInfos.json | 0 22 files changed, 1897 insertions(+), 387 deletions(-) create mode 100644 MEC010p2/MEO/PKGM/AppPkgMgt.robot delete mode 100644 MEC010p2/MEO/PKGM/PackageManagement.robot create mode 100644 MEC010p2/MEO/PKGM/jsons/AppPkgInfoModifications.json create mode 100644 MEC010p2/MEO/PKGM/jsons/AppPkgInfoModificationsBadRequest.json create mode 100644 MEC010p2/MEO/PKGM/jsons/AppPkgSubscriptionBadRequest.json create mode 100644 MEC010p2/MEO/PKGM/jsons/CreateAppPackageBadRequest.json delete mode 100644 MEC010p2/MEO/PKGM/jsons/MalformedAppPkg.json delete mode 100644 MEC010p2/MEO/PKGM/jsons/MalformedAppPkgSubscription.json create mode 100644 MEC010p2/MEO/PKGM/schemas/AppD.schema.json create mode 100644 MEC010p2/MEO/PKGM/schemas/AppPkgInfo.schema.json create mode 100644 MEC010p2/MEO/PKGM/schemas/AppPkgInfoModifications.schema.json create mode 100644 MEC010p2/MEO/PKGM/schemas/AppPkgNotification.schema.json delete mode 100644 MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionInfo.json create mode 100644 MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionInfo.schema.json delete mode 100644 MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionLinkList.json create mode 100644 MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionLinkList.schema.json create mode 100644 MEC010p2/MEO/PKGM/schemas/CreateAppPkg.schema.json delete mode 100644 MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfo.json delete mode 100644 MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfos.json diff --git a/MEC010p2/MEO/PKGM/AppPkgMgt.robot b/MEC010p2/MEO/PKGM/AppPkgMgt.robot new file mode 100644 index 0000000..992c6e4 --- /dev/null +++ b/MEC010p2/MEO/PKGM/AppPkgMgt.robot @@ -0,0 +1,496 @@ +''[Documentation] robot --outputdir ./outputs ./AppPkgMgt.robot +... Test Suite to validate Package Management (PKGM) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../GenericKeywords.robot +Library REST ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT} ssl_verify=false +Library BuiltIn +Library OperatingSystem +#Library MockServerLibrary + + +*** Test Cases *** +TC_MEC_MEC010p2_MEO_PKGM_001_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_001_OK + ... Check that MEO creates a new App Package when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo) + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.2.2-1 (AppPkg) + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Post Request to create new App Package Resource CreateAppPackage.json + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is AppPkgInfo + Check HTTP Response Header Contains Location + Should Be Equal As Strings ${response['body']['appDVersion']} ${APP_PKG_VERSION} + Should Be Equal As Strings ${response['body']['checksum']['algorithm']} ${CHECKSUM} + Should Be Equal As Strings ${response['body']['operationalState']} ${OPERATIONAL_STATE} + Should Be Equal As Strings ${response['body']['onboardingState']} ${ONBOARDING_STATE} + Should Be Equal As Strings ${response['body']['usageState']} ${USAGE_STATE} + + +TC_MEC_MEC010p2_MEO_PKGM_001_BR + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_001_BR + ... Check that MEO creates a new App Package when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.2.2-1 (AppPkg) + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Post Request to create new App Package Resource CreateAppPackageBadRequest.json + Check HTTP Response Status Code Is 400 + + + +TC_MEC_MEC010p2_MEO_PKGM_002_01_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_002_01_OK + ... Check that MEO returns the list of App Packages when requested - Note 3 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + GET all app Packages + Check HTTP Response Status Code Is 200 + FOR ${onBoardedAppPkgInfo} IN @{response['body']} + Validate Json AppPkgInfo.schema.json ${onBoardedAppPkgInfo} + END + + + +TC_MEC_MEC010p2_MEO_PKGM_002_02_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_002_02_OK + ... Check that MEO returns the list of App Packages when requested - Note 3 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + GET all onboarded app Packages + Check HTTP Response Status Code Is 200 + FOR ${onBoardedAppPkgInfo} IN @{response['body']} + Validate Json AppPkgInfo.schema.json ${onBoardedAppPkgInfo} + END + +TC_MEC_MEC010p2_MEO_PKGM_002_BR + [Documentation] TP_MEC_MEO_PKGM_002_BR + ... Check that MEO responds with an error when it receives + ... a malformed request for retrieving the list of existing App Packages + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.1.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + GET all APP Packages with filters ${MALFORMED_FILTER_NAME} ${FILTER_VALUE} + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC010p2_MEO_PKGM_003_01_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_003_01_OK + ... Check that MEO returns the an App Package when requested - Note 3 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + GET an app Package identified by ${ON_BOARDED_APP_PKG_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AppPkgInfo + Should Be Equal As Strings ${response['body']['id']} ${ON_BOARDED_APP_PKG_ID} + Should Be Equal As Strings ${response['body']['appName']} ${APP_NAME} + + + +TC_MEC_MEC010p2_MEO_PKGM_003_02_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_003_02_OK + ... Check that MEO returns the an onboarded App Package when requested - Note 3 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + GET an onboarded app Package identified by ${ON_BOARDED_APP_PKG_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AppPkgInfo + Should Be Equal As Strings ${response['body']['id']} ${ON_BOARDED_APP_PKG_ID} + Should Be Equal As Strings ${response['body']['appName']} ${APP_NAME} + + +TC_MEC_MEC010p2_MEO_PKGM_003_NF + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_003_NF + ... Check that MEO responds with an error when it receives + ... a request for retrieving a App Package referred with a wrong ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + GET an APP Package identified by ${NON_EXISTENT_APP_PKG_ID} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC010p2_MEO_PKGM_004_OK + [Documentation] TP_MEC_MEO_PKGM_004_OK + ... Check that MEO deletes an App Package when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.4 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Delete an individual APP Package identified by ${ON_BOARDED_APP_PKG_ID} + Check HTTP Response Status Code Is 204 + Check HTTP Response Body is Empty + + +TC_MEC_MEC010p2_MEO_PKGM_004_NF + [Documentation] TP_MEC_MEO_PKGM_004_NF + ... Check that MEO responds with an error when it receives + ... a request for deleting an App Package referred with a wrong ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.4 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Delete an individual APP Package identified by ${NON_EXISTENT_APP_PKG_ID} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC010p2_MEO_PKGM_005_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_005_OK + ... Check that MEO updates the operational state of an individual application package resource + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.5 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Update Operational State for an app Package ${ON_BOARDED_APP_PKG_ID} AppPkgInfoModifications.json + Check HTTP Response Body Json Schema Is AppPkgInfoModifications + Check HTTP Response Status Code Is 200 + Should Be Equal As Strings ${response['body']['operationalState']} ${OPERATIONAL_STATE} + + +TC_MEC_MEC010p2_MEO_PKGM_005_BR + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_005_BR + ... Check that MEO sends an error when it receives a malformed request to modify the operational state of an application package + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.5 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Update Operational State for an app Package ${ON_BOARDED_APP_PKG_ID} AppPkgInfoModificationsBadRequest.json + Check HTTP Response Status Code Is 400 + +TC_MEC_MEC010p2_MEO_PKGM_005_NF + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_005_NF + ... Check that MEO responds with an error when it receives + ... a request for updating an App Package referred with a wrong ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.5 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Update Operational State for an app Package ${NON_EXISTENT_APP_PKG_ID} AppPkgInfoModificationsBadRequest.json + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC010p2_MEO_PKGM_006_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_006_OK + ... Check that MEO service returns an application package subscription when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.1 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Send a request for a subscription AppPkgSubscription.json + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUBSCRIPTION_TYPE} + Should Be Equal As Strings ${response['body']['callbackUri']} ${CALLBACK_URI} + +TC_MEC_MEC010p2_MEO_PKGM_006_BR + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_006_BR + ... Check that MEO service sends an error when it receives a malformed request for creating a new subscription on AppPackages + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.1", + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4", + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Send a request for a subscription AppPkgSubscriptionBadRequest.json + Check HTTP Response Status Code Is 400 + + + +TC_MEC_MEC010p2_MEO_PKGM_007_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_007_OK + ... Check that MEO service returns the list of Application Package Subscriptions when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get all APP Package subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AppPkgSubscriptionLinkList + + +TC_MEC_MEC010p2_MEO_PKGM_008_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_008_OK + ... Check that MEO service returns an Application Package Subscription when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get an individual APP Package subscriptions ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo + Should Be Equal As Strings ${response['body']['id']} ${SUBSCRIPTION_ID} + +TC_MEC_MEC010p2_MEO_PKGM_008_NF + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_008_NF + ... Check that MEO service sends an error when it receives a query for a subscription on AppPackages with a wrong identifier + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get an individual APP Package subscriptions ${NON_EXISTENT_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + + +TC_MEC_MEC010p2_MEO_PKGM_009_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_009_OK + ... Check that MEO service deletes an Application Package Subscription when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Delete an App Package Subscription identified by ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 204 + Check HTTP Response Body is Empty + + +TC_MEC_MEC010p2_MEO_PKGM_009_NF + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_009_NF + ... Check that MEO service sends an error when it receives a deletion request for a subscription on AppPackages + ... with a wrong identifier + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Delete an App Package Subscription identified by ${NON_EXISTENT_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC010p2_MEO_PKGM_011_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_011_OK + ... Check that MEO reads the content of the AppD of on-boarded individual application package resources when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get an AppD from App Package identified by ${ON_BOARDED_APP_PKG_ID} + Check HTTP Response Status Code Is 200 + + +TC_MEC_MEC010p2_MEO_PKGM_011_NF + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_011_NF + ... Check that MEO responds with an error when it receives + ... a request to retrieve an application descriptor referred with a wrong app package ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2", + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get an AppD from App Package identified by ${NON_EXISTENT_APP_PKG_ID} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC010p2_MEO_PKGM_012_01_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_01_OK + ... Check that MEO fetches the application package content identified by appPkgId when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get app Package identified by ${ON_BOARDED_APP_PKG_ID} ${ACCEPTED_CONTENT_TYPE_ZIP} + Check HTTP Response Status Code Is 200 + +TC_MEC_MEC010p2_MEO_PKGM_012_02_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_02_OK + ... Check that MEO fetches the application package content identified by appPkgId when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get onboarded app Package identified by ${ON_BOARDED_APP_PKG_ID} ${ACCEPTED_CONTENT_TYPE_ZIP} + Check HTTP Response Status Code Is 200 + + +TC_MEC_MEC010p2_MEO_PKGM_012_BR + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_BR + ... Check that MEO service sends an error when it receives a malformed request + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get app Package identified by ${ON_BOARDED_APP_PKG_ID} ${WRONG_CONTENT_TYPE} + Check HTTP Response Status Code Is 400 + +TC_MEC_MEC010p2_MEO_PKGM_013_OK + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_013_OK + ... Check that MEO accepts application package when submitted + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.3 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Submit application package ${APP_PKG_ID} + Check HTTP Response Status Code Is 202 + + +TC_MEC_MEC010p2_MEO_PKGM_013_NF + [Documentation] TP_MEC_MEC010p2_MEO_PKGM_013_NF + ... Check that MEO returns an errore when an application package with wrong id is submitted + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.3 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Submit application package ${NOT_EXISTING_APP_PKG_ID} + Check HTTP Response Status Code Is 404 + + + +*** Keywords *** +Post Request to create new App Package Resource + [Arguments] ${content} + Log Creating a new App Package + Set Headers {"Accept":"*/*"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/app_packages ${body} allow_redirects=false + ${output}= Output response + Set Suite Variable ${response} ${output} + + +GET all app Packages + Log Getting all App Packages + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_packages + ${output}= Output response + Set Suite Variable ${response} ${output} + + +GET all onboarded app Packages + Log Getting all App Packages + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages + ${output}= Output response + Set Suite Variable ${response} ${output} + + +GET all app Packages with filters + [Arguments] ${key} ${value} + Log Getting all App Packages using filtering parameters + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_packages?${key}=${value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +GET an app Package identified by + [Arguments] ${value} + Log Getting an App Package + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +GET an onboarded app Package identified by + [Arguments] ${value} + Log Getting an App Package + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Delete an individual APP Package identified by + [Arguments] ${value} + Log Removing an App Package + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/app_packages/${value} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Update Operational State for an app Package + [Arguments] ${appPkgId} ${content} + Log Updating an App Package + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + PATCH ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Get an AppD from App Package identified by + [Arguments] ${appPkgId} + Log Getting App descriptor for App Package + Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/appd + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get app Package identified by + [Arguments] ${appPkgId} ${CONTENT_TYPE} + Log Getting App descriptor for App Package + Set Headers {"Accept":"${CONTENT_TYPE}"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/package_content + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get onboarded app Package identified by + [Arguments] ${appPkgId} ${CONTENT_TYPE} + Log Getting App descriptor for App Package + Set Headers {"Accept":"${CONTENT_TYPE}"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appPkgId}/package_content + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Submit application package + [Arguments] ${appPkgId} + Log Getting App descriptor for App Package + Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE_ZIP}"} + Set Headers {"Authorization":"${TOKEN}"} + Put ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/package_content + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send a request for a subscription + [Arguments] ${content} + Log Creating a new subscription + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${path} Catenate SEPARATOR= jsons/ ${content} + ${body} Get File ${path} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Get all app Package subscriptions + Log Getting list of subscriptions + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get an individual APP Package subscriptions + [Arguments] ${subId} + Log Getting an individual subscription + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subId} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Delete an App Package Subscription identified by + [Arguments] ${subId} + Log Deleting a subscription + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subId} + ${output}= Output response + Set Suite Variable ${response} ${output} + + \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/PackageManagement.robot b/MEC010p2/MEO/PKGM/PackageManagement.robot deleted file mode 100644 index 4741401..0000000 --- a/MEC010p2/MEO/PKGM/PackageManagement.robot +++ /dev/null @@ -1,374 +0,0 @@ -''[Documentation] robot --outputdir ./outputs ./SRV/UETAG/PlatUeIdentity.robot -... Test Suite to validate UE Identity Tag (UETAG) operations. - -*** Settings *** -Resource environment/variables.txt -Resource ../../../GenericKeywords.robot -Library REST ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT} ssl_verify=false -Library BuiltIn -Library OperatingSystem -Library MockServerLibrary - - -*** Test Cases *** -TC_MEC_MEC010p2_MEO_PKGM_001_OK - [Documentation] - ... Check that MEO creates a new App Package when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.1 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo) - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.2.2-1 (AppPkg) - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Post Request to create new App Package Resource AppPkg - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is OnboardedAppPkgInfos - Check HTTP Response Header Contains Location - Check Result Contains ${response} appName ${APP_PKG_NAME} - Check Result Contains ${response} appDVersion ${APP_PKG_VERSION} - Check Result Contains ${response} checksum ${CHECKSUM} - Check Result Contains ${response} operationalState ${OPERATIONAL_STATE} - Check Result Contains ${response} usageState ${USAGE_STATE} - - -TC_MEC_MEC010p2_MEO_PKGM_001_BR - [Documentation] - ... Check that MEO creates a new App Package when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.1 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.2.2-1 (AppPkg) - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Post Request to create new App Package Resource MalformedAppPkg - Check HTTP Response Status Code Is 400 - - -TC_MEC_MEC010p2_MEO_PKGM_002_OK - [Documentation] TP_MEC_MEO_PKGM_002_OK - ... Check that MEO returns the list of App Packages when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo) - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - GET all APP Packages - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is OnboardedAppPkgInfos - Check Result Contains ${response} appPkgId ${ON_BOARDED_APP_PKG_ID} - Check Result Contains ${response} appDId ${APPD_ID} - - -TC_MEC_MEC010p2_MEO_PKGM_002_BR - [Documentation] TP_MEC_MEO_PKGM_002_BR - ... Check that MEO responds with an error when it receives - ... a malformed request for retrieving the list of existing App Packages - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - GET all APP Packages with filters ${MALFORMED_FILTER_NAME} ${FILTER_VALUE} - Check HTTP Response Status Code Is 400 - - -TC_MEC_MEC010p2_MEO_PKGM_003_OK - [Documentation] TP_MEC_MEO_PKGM_003_OK - ... Check that MEO returns the list of App Packages when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo) - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - GET an APP Package identified by ${ON_BOARDED_APP_PKG_ID} - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is OnboardedAppPkgInfo - Check Result Contains ${response} appPkgId ${ON_BOARDED_APP_PKG_ID} - Check Result Contains ${response} appDId ${APPD_ID} - - -TC_MEC_MEC010p2_MEO_PKGM_003_NF - [Documentation] TP_MEC_MEO_PKGM_003_NF - ... Check that MEO responds with an error when it receives - ... a request for retrieving a App Package referred with a wrong ID - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.1.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo) - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - GET an APP Package identified by ${NON_EXISTENT_APP_PKG_ID} - Check HTTP Response Status Code Is 404 - - -TC_MEC_MEC010p2_MEO_PKGM_004_OK - [Documentation] TP_MEC_MEO_PKGM_004_OK - ... Check that MEO deletes an App Package when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.4 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Delete an individual APP Package identified by ${ON_BOARDED_APP_PKG_ID} - Check HTTP Response Status Code Is 204 - Check HTTP Response Body is Empty - - -TC_MEC_MEC010p2_MEO_PKGM_004_NF - [Documentation] TP_MEC_MEO_PKGM_004_NF - ... Check that MEO responds with an error when it receives - ... a request for deleting an App Package referred with a wrong ID - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.4 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Delete an individual APP Package identified by ${NON_EXISTENT_APP_PKG_ID} - Check HTTP Response Status Code Is 404 - - -TC_MEC_MEC010p2_MEO_PKGM_005_OK - [Documentation] TP_MEC_MEO_PKGM_005_OK - ... Check that MEO changes the status of an App Package from INITIAL_OP_STATE with an operation of type OPERATION_VALUE when requested, with the following possible combinations: - ... - ENABLED, DISABLE - ... - DISABLED, ENABLE - ... - DELETION_PENDING, ABORT - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.3 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Update Operational State for an APP Package ${ON_BOARDED_APP_PKG_ID} ${OPERATION_VALUE} - Check HTTP Response Status Code Is 200 - Check HTTP Response Body is Empty - - -TC_MEC_MEC010p2_MEO_PKGM_005_BR - [Documentation] TP_MEC_MEO_PKGM_005_BR - ... Check that MEO sends an error when it receives a malformed request to modify the operational state of an application package - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.3 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Update Operational State for an APP Package ${ON_BOARDED_APP_PKG_ID} WRONG_OP_VALUE - Check HTTP Response Status Code Is 400 - - -TC_MEC_MEC010p2_MEO_PKGM_005_NF - [Documentation] TP_MEC_MEO_PKGM_005_NF - ... Check that MEO responds with an error when it receives a request for updating an App Package referred with a wrong ID - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.2.3.3 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Update Operational State for an APP Package ${NON_EXISTENT_APP_PKG_ID} ${OPERATION_VALUE} - Check HTTP Response Status Code Is 404 - - -TC_MEC_MEC010p2_MEO_PKGM_006_OK - [Documentation] TP_MEC_MEO_PKGM_006_OK - ... Check that MEO returns the Application Descriptor contained on a on-boarded Application Package when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.6.3.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an AppD from App Package identified by ${ON_BOARDED_APP_PKG_ID} - Check HTTP Response Status Code Is 200 - Check HTTP Response Contain Header with value Content-Type ${ACCEPTED_CONTENT_TYPE} - - -TC_MEC_MEC010p2_MEO_PKGM_006_NF - [Documentation] TP_MEC_MEO_PKGM_006_NF - ... Check that MEO responds with an error when it receives a request to retrieve an application descriptor referred with a wrong app package ID - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.6.3.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an AppD from App Package identified by ${NON_EXISTENT_APP_PKG_ID} - Check HTTP Response Status Code Is 404 - - -TC_MEC_MEC010p2_MEO_PKGM_007_OK - [Documentation] TP_MEC_MEO_PKGM_007_OK - ... Check that MEO service sends a Application Package Subscription when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.3.3.1 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.7.2-1 (AppPkgSubscription) - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.4.2-1 (AppPkgSubscriptionInfo) - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Send a request for a subscription AppPkgSubscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo - Check Result Contains ${response} subscriptionType ON_BOARDING - Check Result Contains ${response} callbackUri ${CALLBACK_URI} - - -TC_MEC_MEC010p2_MEO_PKGM_007_BR - [Documentation] TP_MEC_MEO_PKGM_007_BR - ... Check that MEO service sends an error when it receives a malformed request for creating a new subscription on AppPackages - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.3.3.1 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.7.2-1 (AppPkgSubscription) - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Send a request for a subscription MalformedAppPkgSubscription - Check HTTP Response Status Code Is 400 - - -TC_MEC_MEC010p2_MEO_PKGM_008_OK - [Documentation] TP_MEC_MEO_PKGM_008_OK - ... Check that MEO service returns the list of Application Package Subscriptions when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.3.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.4.2-1 (AppPkgSubscriptionLinkList) - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get all APP Package subscriptions - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is AppPkgSubscriptionLinkList - Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID} - - -TC_MEC_MEC010p2_MEO_PKGM_009_OK - [Documentation] TP_MEC_MEO_PKGM_009_OK - ... Check that MEO service returns an Application Package Subscription when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.2 - ... ETSI GS MEC 010-2 2.0.10, Table 6.2.3.4.2-1 (AppPkgSubscriptionInfo) - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an individual APP Package subscriptions ${SUBSCRIPTION_ID} - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo - Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID} - - -TC_MEC_MEC010p2_MEO_PKGM_009_NF - [Documentation] TP_MEC_MEO_PKGM_009_NF - ... Check that MEO service sends an error when it receives a query for a subscription - ... on AppPackages with a wrong identifier - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an individual APP Package subscriptions ${NON_EXISTENT_SUBSCRIPTION_ID} - Check HTTP Response Status Code Is 404 - - -TC_MEC_MEC010p2_MEO_PKGM_010_OK - [Documentation] TP_MEC_MEO_PKGM_010_OK - ... Check that MEO service deletes an Application Package Subscription when requested - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.4 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Delete an App Package Subscription identified by ${SUBSCRIPTION_ID} - Check HTTP Response Status Code Is 204 - Check HTTP Response Body is Empty - - -TC_MEC_MEC010p2_MEO_PKGM_010_NF - [Documentation] TP_MEC_MEO_PKGM_010_NF - ... Check that MEO service sends an error when it receives a deletion request - ... for a subscription on AppPackages with a wrong identifier - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.4 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Delete an App Package Subscription identified by ${NON_EXISTENT_SUBSCRIPTION_ID} - Check HTTP Response Status Code Is 404 - - -TC_MEC_MEC010p2_MEO_PKGM_011_OK - [Documentation] TP_MEC_MEO_PKGM_011_OK - ... Check that the MEO service sends a application package notification - ... if the MEO service has an associated subscription and the event is generated - ... ETSI GS MEC 010-2 2.0.10, clause 7.3.5.1 - ${json}= Get File schemas/AppPkgNotification.schema.json - Log Creating mock request and response to handle Application Package Notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - - -*** Keywords *** -Post Request to create new App Package Resource - [Arguments] ${content} - Log Creating a new App Package - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Post ${apiRoot}/${apiName}/${apiVersion}/app_packages ${content} allow_redirects=false - ${output}= Output response - Set Suite Variable ${response} ${output} - - -GET all APP Packages - Log Getting all App Packages - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/app_packages - ${output}= Output response - Set Suite Variable ${response} ${output} - - -GET all APP Packages with filters - [Arguments] ${key} ${value} - Log Getting all App Packages using filtering parameters - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/app_packages?${key}=${value} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -GET an APP Package identified by - [Arguments] ${value} - Log Getting an App Package - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${value} - ${output}= Output response - Set Suite Variable ${response} ${output} - - - -Delete an individual APP Package identified by - [Arguments] ${value} - Log Removing an App Package - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/app_packages/${value} - ${output}= Output response - Set Suite Variable ${response} ${output} - - - -Update Operational State for an APP Package - [Arguments] ${appPkgId} ${operation} - Log Updating an App Package - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}?appPkgOperation=${operation} - ${output}= Output response - Set Suite Variable ${response} ${output} - - - -Get an AppD from App Package identified by - [Arguments] ${appPkgId} - Log Getting App descriptor for App Package - Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} - Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appPkgId}/addDId - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Send a request for a subscription - [Arguments] ${content} - Log Creating a new subscription - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${content} - ${output}= Output response - Set Suite Variable ${response} ${output} - - - -Get all APP Package subscriptions - Log Getting list of subscriptions - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions - ${output}= Output response - Set Suite Variable ${response} ${output} - -Get an individual APP Package subscriptions - [Arguments] ${subId} - Log Getting an individual subscription - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subId} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Delete an App Package Subscription identified by - [Arguments] ${subId} - Log Deleting a subscription - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subId} - ${output}= Output response - Set Suite Variable ${response} ${output} - - \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/environment/variables.txt b/MEC010p2/MEO/PKGM/environment/variables.txt index 6fd4c4b..49be91d 100644 --- a/MEC010p2/MEO/PKGM/environment/variables.txt +++ b/MEC010p2/MEO/PKGM/environment/variables.txt @@ -1,36 +1,43 @@ *** Variables *** # Generic variables ${MEO_SCHEMA} http -${MEO_HOST} 10.192.2.172 +${MEO_HOST} 127.0.0.1 +#${MEO_HOST} 10.192.2.172 ${MEO_PORT} 8081 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} -${apiName} apmi +${apiName} app_pkgm ${apiVersion} v1 # Specific variables -${APP_PKG_NAME} APP_PKG_NAME // Should be the same as in AppPkg.json -${APP_PKG_VERSION} APP_PKG_VERSION // Should be the same as in AppPkg.json -${CHECKSUM} CHECKSUM // Should be the same as in AppPkg.json -${OPERATIONAL_STATE} OPERATIONAL_STATE // Should be the same as in AppPkg.json -${USAGE_STATE} USAGE_STATE // Should be the same as in AppPkg.json +${APP_PKG_NAME} appName +${APP_PKG_VERSION} APP_PKG_VERSION +${APP_NAME} appName +${CHECKSUM} SHA-256 +${OPERATIONAL_STATE} ENABLED +${ONBOARDING_STATE} CREATED +${USAGE_STATE} NOT_IN_USE +${APP_PKG_ID} 01234782-2c70-4e47-9a4e-0ee3a1a00123 ${ON_BOARDED_APP_PKG_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f ${APPD_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 -${MALFORMED_FILTER_NAME} operationalStatus // Should be operationalState +${MALFORMED_FILTER_NAME} operationalStatus ${FILTER_VALUE} NOT_IN_USE ${NON_EXISTENT_APP_PKG_ID} NON_EXISTENT_APP_PKG_ID ${OPERATION_VALUE} DISABLE +${WRONG_OPERATION_VALUE} DISABL -${ACCEPTED_CONTENT_TYPE} text/plain // Should refer to the type of AppD +${ACCEPTED_CONTENT_TYPE} text/plain; charset=utf-8 +${ACCEPTED_CONTENT_TYPE_ZIP} application/zip +${WRONG_CONTENT_TYPE} application/json ${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 +${NOT_EXISTING_APP_PKG_ID} NOT_EXISTING_APP_PKG_ID - -${SUBSCRIPTION_TYPE} MobilityProcedureSubscription +${SUBSCRIPTION_TYPE} AppPackageOnBoardingSubscription ${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID - +${CALLBACK_URI} http://some.url/somepath # Notifications variables diff --git a/MEC010p2/MEO/PKGM/jsons/AppPkgInfoModifications.json b/MEC010p2/MEO/PKGM/jsons/AppPkgInfoModifications.json new file mode 100644 index 0000000..8db7a2f --- /dev/null +++ b/MEC010p2/MEO/PKGM/jsons/AppPkgInfoModifications.json @@ -0,0 +1,3 @@ +{ + "operationalState": "ENABLED" +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/jsons/AppPkgInfoModificationsBadRequest.json b/MEC010p2/MEO/PKGM/jsons/AppPkgInfoModificationsBadRequest.json new file mode 100644 index 0000000..ea646d8 --- /dev/null +++ b/MEC010p2/MEO/PKGM/jsons/AppPkgInfoModificationsBadRequest.json @@ -0,0 +1,3 @@ +{ + "operationalState": "DISABL" +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/jsons/AppPkgSubscription.json b/MEC010p2/MEO/PKGM/jsons/AppPkgSubscription.json index e69de29..8ab6429 100644 --- a/MEC010p2/MEO/PKGM/jsons/AppPkgSubscription.json +++ b/MEC010p2/MEO/PKGM/jsons/AppPkgSubscription.json @@ -0,0 +1,10 @@ +{ + "id": "1234", + "subscriptionType": "AppPackageOnBoardingSubscription", + "callbackUri": "http://172.22.1.7:9091", + "_links": { + "self": { + "href": "https://app_lcm/subscriptions/1234" + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/jsons/AppPkgSubscriptionBadRequest.json b/MEC010p2/MEO/PKGM/jsons/AppPkgSubscriptionBadRequest.json new file mode 100644 index 0000000..7eb6d6a --- /dev/null +++ b/MEC010p2/MEO/PKGM/jsons/AppPkgSubscriptionBadRequest.json @@ -0,0 +1,10 @@ +{ + "id": "1234", + "subscriptionType": "ON-BOARDING", + "callbackUri": "http://172.22.1.7:9091", + "_links": { + "self": { + "href": "https://app_lcm/subscriptions/1234" + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json b/MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json index 9e26dfe..b50ced3 100644 --- a/MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json +++ b/MEC010p2/MEO/PKGM/jsons/CreateAppPackage.json @@ -1 +1,28 @@ -{} \ No newline at end of file +{ + "id": "AppPkgInfoId", + "appDid": "appdId", + "appName": "APP_NAME", + "appSoftwareVersion": "APP_SOFTWARE_VERSION", + "appDVersion": "APP_D_VERSION", + "checksum": { + "algorithm": "SHA-256", + "hash": "0x1234567890abcdef" + }, + "softwareImages": ["info about sofware image"], + "onBoardingState": "CREATED", + "operationalState": "ENABLED", + "usageState": "NOT_IN_USE", + "mecInfo": ["mecInfo"], + "links": { + "self": { + "href": "/app_lcm/v1/app_packages/123" + }, + "appD": { + "href": "/app_lcm/v1/on_boarded_app_packages/456/appd" + }, + "appPkgContent": { + "href": "/app_lcm/v1/on_boarded_app_packages/456/package_content" + } + } + +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/jsons/CreateAppPackageBadRequest.json b/MEC010p2/MEO/PKGM/jsons/CreateAppPackageBadRequest.json new file mode 100644 index 0000000..0e0dcd2 --- /dev/null +++ b/MEC010p2/MEO/PKGM/jsons/CreateAppPackageBadRequest.json @@ -0,0 +1,3 @@ +{ + +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/jsons/MalformedAppPkg.json b/MEC010p2/MEO/PKGM/jsons/MalformedAppPkg.json deleted file mode 100644 index e69de29..0000000 diff --git a/MEC010p2/MEO/PKGM/jsons/MalformedAppPkgSubscription.json b/MEC010p2/MEO/PKGM/jsons/MalformedAppPkgSubscription.json deleted file mode 100644 index e69de29..0000000 diff --git a/MEC010p2/MEO/PKGM/schemas/AppD.schema.json b/MEC010p2/MEO/PKGM/schemas/AppD.schema.json new file mode 100644 index 0000000..c322452 --- /dev/null +++ b/MEC010p2/MEO/PKGM/schemas/AppD.schema.json @@ -0,0 +1,879 @@ +{ + "properties": { + "appDId": { + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appDNSRule": { + "description": "Describes DNS rules the MEC application requires.", + "items": { + "properties": { + "dnsRuleId": { + "description": "Identifies the DNS Rule", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "domainName": { + "description": "FQDN of the DNS rule", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddress": { + "description": "IP address given by the DNS rule", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ipAddressType": { + "description": "Specifies the IP address type", + "type": "string", + "enum": [ + "IP_V6", + "IP_V4" + ] + }, + "ttl": { + "description": "Time-to-live value", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Int" + } + }, + "required": [ + "dnsRuleId", + "domainName", + "ipAddressType", + "ipAddress" + ], + "type": "object", + "x-etsi-ref": "6.2.1.13" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "DNSRuleDescriptor" + }, + "appDVersion": { + "description": "Identifies the version of the application descriptor.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appDescription": { + "description": "Human readable description of the MEC application.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appExtCpd": { + "description": "Describes external interface(s) exposed by this MEC application.", + "items": { + "properties": { + "inherited_attributes": { + "description": "All attributes inherited from Cpd.", + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "inherited_attributes" + }, + "virtualNetworkInterfaceRequirements": { + "description": "Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N" + } + }, + "required": [ + "inherited_attributes" + ], + "type": "object", + "x-etsi-ref": "6.2.1.6" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AppExternalCpd" + }, + "appFeatureOptional": { + "description": "Describes features a MEC application may use if available.", + "items": { + "properties": { + "featureName": { + "description": "The name of the feature, for example, UserApps, UEIdentity, etc.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "version": { + "description": "The version of the feature.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "featureName", + "version" + ], + "type": "object", + "x-etsi-ref": "6.2.1.8" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "FeatureDependency" + }, + "appFeatureRequired": { + "description": "Describes features a MEC application requires to run.", + "items": { + "properties": { + "featureName": { + "description": "The name of the feature, for example, UserApps, UEIdentity, etc.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "version": { + "description": "The version of the feature.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "featureName", + "version" + ], + "type": "object", + "x-etsi-ref": "6.2.1.8" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "FeatureDependency" + }, + "appInfoName": { + "description": "Human readable name for the MEC application.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "appLatency": { + "properties": { + "maxLatency": { + "description": "The value of the maximum latency in nano seconds tolerated by the MEC application. See note.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "maxLatency" + ], + "type": "object", + "x-etsi-notes": "NOTE:\tThe latency is considered to be the one way end-to-end latency between the client application (e.g. in a device) and the service (i.e. the MEC Application instance).", + "x-etsi-ref": "6.2.1.14" + }, + "appName": { + "description": "Name to identify the MEC application.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appProvider": { + "description": "Provider of the application and of the AppD.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appServiceOptional": { + "description": "Describes services a MEC application may use if available.", + "items": { + "properties": { + "requestedPermissions": { + "description": "Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009 [4].\nThe format of this attribute is left for the data model design stage.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Not_specified" + }, + "serCategory": { + "description": "See MEC011" + }, + "serName": { + "description": "The name of the service, for example, RNIS, LocationService, etc.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "serTransportDependencies": { + "description": "Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note.", + "items": { + "properties": { + "labels": { + "description": "Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "serializers": { + "description": "Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "SerializerTypes" + }, + "transport": { + "properties": { + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "security": { + "description": "See MEC011" + }, + "type": { + "type": "string" + }, + "version": { + "description": "The version of the protocol used.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "protocol", + "version", + "security" + ], + "type": "object", + "x-etsi-ref": "6.2.1.19" + } + }, + "required": [ + "transport", + "serializers", + "labels" + ], + "type": "object", + "x-etsi-ref": "6.2.1.18" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "TransportDependency" + }, + "version": { + "description": "The version of the service.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "serName", + "version" + ], + "type": "object", + "x-etsi-notes": "NOTE:\tThis attribute indicates groups of transport bindings that a service-consuming MEC application supports for the consumption of the MEC service defined by this ServiceDependency structure. If at least one of the indicated groups is supported by the service it may be consumed by the application.", + "x-etsi-ref": "6.2.1.17" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "ServiceDependency" + }, + "appServiceProduced": { + "description": "Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps.", + "items": { + "description": "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'", + "type": "object", + "required": [ + "serName", + "version" + ], + "properties": { + "serName": { + "description": "The name of the service, for example, RNIS, LocationService, etc.", + "type": "string" + }, + "serCategory": { + "description": "See MEC011" + }, + "version": { + "description": "The version of the service.", + "type": "string" + }, + "transportsSupported": { + "description": "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'", + "type": "object", + "required": [ + "featureName", + "version" + ], + "properties": { + "transport": { + "properties": { + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "security": { + "description": "See MEC011" + }, + "type": { + "type": "string" + }, + "version": { + "description": "The version of the protocol used.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "protocol", + "version", + "security" + ], + "type": "object", + "x-etsi-ref": "6.2.1.19" + }, + "serializers": { + "description": "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '", + "type": "array", + "minItems": 1, + "items": { + "type": "string" + } + } + } + } + } + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "ServiceDescriptor" + }, + "appServiceRequired": { + "description": "Describes services a MEC application requires to run.", + "items": { + "properties": { + "requestedPermissions": { + "description": "Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009 [4].\nThe format of this attribute is left for the data model design stage.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Not_specified" + }, + "serCategory": { + "description": "See MEC011" + }, + "serName": { + "description": "The name of the service, for example, RNIS, LocationService, etc.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "serTransportDependencies": { + "description": "Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note.", + "items": { + "properties": { + "labels": { + "description": "Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "serializers": { + "description": "Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "SerializerTypes" + }, + "transport": { + "properties": { + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "security": { + "description": "See MEC011" + }, + "type": { + "type": "string" + }, + "version": { + "description": "The version of the protocol used.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "protocol", + "version", + "security" + ], + "type": "object", + "x-etsi-ref": "6.2.1.19" + } + }, + "required": [ + "transport", + "serializers", + "labels" + ], + "type": "object", + "x-etsi-ref": "6.2.1.18" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "TransportDependency" + }, + "version": { + "description": "The version of the service.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "serName", + "version" + ], + "type": "object", + "x-etsi-notes": "NOTE:\tThis attribute indicates groups of transport bindings that a service-consuming MEC application supports for the consumption of the MEC service defined by this ServiceDependency structure. If at least one of the indicated groups is supported by the service it may be consumed by the application.", + "x-etsi-ref": "6.2.1.17" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "ServiceDependency" + }, + "appSoftVersion": { + "description": "Identifies the version of software of the MEC application.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appTrafficRule": { + "description": "Describes traffic rules the MEC application requires.", + "items": { + "properties": { + "action": { + "description": "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'", + "type": "string", + "enum": [ + "DROP", + "FORWARD_DECAPSULATED", + "FORWARD_AS_IS", + "PASSTHROUGH", + "DUPLICATED_DECAPSULATED", + "DUPLICATE_AS_IS" + ] + }, + "dstInterface": { + "type": "array", + "minItems": 0, + "maxItems": 2, + "items": { + "properties": { + "dstIPAddress": { + "description": "If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "dstMACAddress": { + "description": "If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "interfaceType": { + "description": "Type of interface.", + "type": "string", + "enum": [ + "TUNNEL", + "MAC", + "IP" + ] + }, + "srcMACAddress": { + "description": "If the interface type is MAC, the source address identifies the MAC address of the interface.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "tunnelInfo": { + "properties": { + "tunnelDstAddress": { + "description": "Destination address of the tunnel.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "tunnelSpecificData": { + "type": "string" + }, + "tunnelSrcAddress": { + "description": "Source address of the tunnel.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "tunnelType": { + "description": "Type of tunnel.", + "type": "string", + "enum": [ + "GTP-U", + "GRE" + ] + } + }, + "required": [ + "tunnelType", + "tunnelDstAddress", + "tunnelSrcAddress" + ], + "type": "object", + "x-etsi-ref": "6.2.1.12" + } + }, + "required": [ + "interfaceType" + ], + "type": "object", + "x-etsi-ref": "6.2.1.11" + } + }, + "filterType": { + "description": "Definition of filter type: per FLOW or PACKET", + "type": "string", + "enum": [ + "FLOW", + "PACKET" + ] + }, + "priority": { + "description": "Priority of this traffic rule. If traffic rule conflicts, the one with higher priority take precedence.", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Int" + }, + "trafficFilter": { + "description": "The filter used to identify specific flow/packets that need to be handled by the MEC host.", + "items": { + "properties": { + "dSCP": { + "description": "Used to match all IPv4 packets that have the same DSCP.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Int" + }, + "dstAddress": { + "description": "A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "dstPort": { + "description": "A port or a range of ports.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "dstTunnelPort": { + "description": "Used for GTP tunnel based traffic rule.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "protocol": { + "description": "Specify the protocol of the traffic filter.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "qCI": { + "description": "Used to match all packets that have the same QCI.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Int" + }, + "srcAddress": { + "description": "An IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "srcPort": { + "description": "A port or a range of ports.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "srcTunnelAddress": { + "description": "Used for GTP tunnel based traffic rule.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "srcTunnelPort": { + "description": "Used for GTP tunnel based traffic rule.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "tC": { + "description": "Used to match all IPv6 packets that have the same TC.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Int" + }, + "tag": { + "description": "Used for tag based traffic rule.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + }, + "tgtTunnelAddress": { + "description": "Used for GTP tunnel based traffic rule.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "String" + } + }, + "type": "object", + "x-etsi-ref": "6.2.1.10" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "TrafficFilter" + }, + "trafficRuleId": { + "description": "Identifies the traffic rule.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "trafficRuleId", + "filterType", + "priority", + "trafficFilter", + "action" + ], + "type": "object", + "x-etsi-ref": "6.2.1.9" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "TrafficRuleDescriptor" + }, + "changeAppInstanceStateOpConfig": { + "description": "NFV", + "type": "string" + }, + "mecVersion": { + "description": "Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "swImageDescriptor": { + "description": "Ref NFV", + "type": "string" + }, + "terminateAppInstanceOpConfig": { + "description": "NFV", + "type": "string", + "x-etsi-ref": "6.2.2.9" + }, + "transportDependencies": { + "description": "Transports, if any, that this application requires to be provided by the platform. These transports will be used by the application to deliver services provided by this application. Only relevant for service-producing apps. See note 2.", + "items": { + "properties": { + "labels": { + "description": "Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "String" + }, + "serializers": { + "description": "Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "SerializerTypes" + }, + "transport": { + "properties": { + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "security": { + "description": "See MEC011" + }, + "type": { + "type": "string" + }, + "version": { + "description": "The version of the protocol used.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "protocol", + "version", + "security" + ], + "type": "object", + "x-etsi-ref": "6.2.1.19" + } + }, + "required": [ + "transport", + "serializers", + "labels" + ], + "type": "object", + "x-etsi-ref": "6.2.1.18" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "TransportDependency" + }, + "virtualComputeDescriptor": { + "description": "Ref NFV", + "type": "string" + }, + "virtualStorageDescriptor": { + "description": "Defines descriptors of virtual storage resources to be used by the MEC application.", + "items": { + "description": "Ref NFV", + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "VirtualStorageDescriptor" + } + }, + "required": [ + "appDId", + "appName", + "appProvider", + "appSoftVersion", + "appDVersion", + "mecVersion", + "appDescription", + "virtualComputeDescriptor", + "swImageDescriptor" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tThe appDId shall be used as the unique identifier of the application package that contains this AppD.\nNOTE 2:\tThis attribute indicates groups of transport bindings which a service-producing MEC application requires to be supported by the platform in order to be able to produce its services. At least one of the indicated groups needs to be supported to fulfil the requirements.", + "x-etsi-ref": "6.2.1.2" +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/schemas/AppPkgInfo.schema.json b/MEC010p2/MEO/PKGM/schemas/AppPkgInfo.schema.json new file mode 100644 index 0000000..06783a7 --- /dev/null +++ b/MEC010p2/MEO/PKGM/schemas/AppPkgInfo.schema.json @@ -0,0 +1,159 @@ +{ + "description": "'The data type AppPkgInfo represents the parameters for an application package resource'", + "type": "object", + "required": [ + "id", + "appDId", + "appName", + "appSoftwareVersion", + "appDVersion", + "checksum", + "softwareImages", + "onboardingState", + "operationalState", + "usageState", + "_links" + ], + "properties": { + "id": { + "description": "Identifier of the onboarded application package.", + "type": "string" + }, + "appDId": { + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.", + "type": "string" + }, + "appProvider": { + "description": "Provider of the application and of the AppD.", + "type": "string" + }, + "appName": { + "description": "Name to identify the MEC application.", + "type": "string" + }, + "appSoftwareVersion": { + "description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package.", + "type": "string" + }, + "appDVersion": { + "description": "Identifies the version of the application descriptor.", + "type": "string" + }, + "checksum": { + "description": "", + "properties": { + "algorithm": { + "description": " Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.", + "type": "string" + }, + "hash": { + "description": "'String 1 The hexadecimal value of the checksum'", + "type": "string" + } + }, + "required": [ + "algorithm", + "hash" + ], + "type": "object" + }, + "softwareImages": { + "description": "Information of application software image in application package. Type is TBD" + }, + "additionalArtifacts": { + "description": "Additional information of application package artifacts that are not application software images. Type is TBD" + }, + "onboardingState": { + "description": "Onboarding state of application package", + "type": "string", + "format": "enum", + "enum": [ + "CREATED", + "UPLOADING", + "PROCESSING", + "ONBOARDED" + ] + }, + "operationalState": { + "description": "Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] + }, + "usageState": { + "description": "Usage state of the onboarded instance of the application package", + "type": "string", + "format": "enum", + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] + }, + "userDefinedData": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self", + "appD", + "appPkgContent" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appD": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appPkgContent": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + } + } + } + } \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/schemas/AppPkgInfoModifications.schema.json b/MEC010p2/MEO/PKGM/schemas/AppPkgInfoModifications.schema.json new file mode 100644 index 0000000..5088206 --- /dev/null +++ b/MEC010p2/MEO/PKGM/schemas/AppPkgInfoModifications.schema.json @@ -0,0 +1,16 @@ +{ + "description": "'The data type represents the operational state for an application package resource'", + "type": "object", + "required": [ + "operationalState" + ], + "properties": { + "operationalState": { + "type": "string", + "enum": [ + "DISABLED", + "ENABLED" + ] + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/schemas/AppPkgNotification.schema.json b/MEC010p2/MEO/PKGM/schemas/AppPkgNotification.schema.json new file mode 100644 index 0000000..5a9542e --- /dev/null +++ b/MEC010p2/MEO/PKGM/schemas/AppPkgNotification.schema.json @@ -0,0 +1,98 @@ +{ + "description": "'This data type represents an application package management notification for informing the subscribers about onboarding application package resources. The notification is triggered when a new application package is onboarded'", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "appPkgId", + "appDId", + "operationalState", + "_links" + ], + "properties": { + "id": { + "description": "''", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types", + "type": "string", + "enum": [ + "AppPackageOnBoarded", + "AppPacakgeEnabled", + "AppPacakgeDisabled", + "AppPackageDeleted" + ] + }, + "subscriptionId": { + "description": "Identifier of the subscription related to this notification.", + "type": "string" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "seconds": { + "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "Uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.2.5.4" + }, + "appPkgId": { + "description": "Identifier of the onboarded application package.", + "type": "string" + }, + "appDId": { + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.", + "type": "string" + }, + "operationalState": { + "type": "string", + "enum": [ + "DISABLED", + "ENABLED" + ] + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "subscription" + ], + "properties": { + "subscription": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + } + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionInfo.json b/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionInfo.json deleted file mode 100644 index e69de29..0000000 diff --git a/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionInfo.schema.json b/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionInfo.schema.json new file mode 100644 index 0000000..13f9161 --- /dev/null +++ b/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionInfo.schema.json @@ -0,0 +1,55 @@ +{ + "description": "'The data type represents a subscription to notification of application package management for the onboarding, or operational state change of application package'", + "type": "object", + "required": [ + "id", + "subscriptionType", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "''", + "type": "string" + }, + "subscriptionType": { + "description": "Subscribed notification type.", + "type": "string", + "enum": [ + "AppPackageOnBoardingSubscription", + "AppPacakgeOperationChange", + "AppPackageDeletion" + ] + }, + "callbackUri": { + "description": "The URI of the endpoint for the notification to be sent to.", + "type": "string", + "format": "uri" + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + } + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionLinkList.json b/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionLinkList.json deleted file mode 100644 index e69de29..0000000 diff --git a/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionLinkList.schema.json b/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionLinkList.schema.json new file mode 100644 index 0000000..ccad36e --- /dev/null +++ b/MEC010p2/MEO/PKGM/schemas/AppPkgSubscriptionLinkList.schema.json @@ -0,0 +1,61 @@ +{ + "description": "'The data type represents a subscription link list of notification on application package management'", + "type": "object", + "required": [ + "_links" + ], + "properties": { + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "subscriptions": { + "type": "array", + "items": { + "description": "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'", + "type": "object", + "required": [ + "href", + "subsctiptionType" + ], + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "format": "uri" + }, + "subsctiptionType": { + "description": "'Subscribed notification type'", + "type": "string", + "enum": [ + "AppPackageOnBoardingSubscription", + "AppPacakgeOperationChange", + "AppPackageDeletion" + ] + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/schemas/CreateAppPkg.schema.json b/MEC010p2/MEO/PKGM/schemas/CreateAppPkg.schema.json new file mode 100644 index 0000000..ffbb40b --- /dev/null +++ b/MEC010p2/MEO/PKGM/schemas/CreateAppPkg.schema.json @@ -0,0 +1,57 @@ +{ + "properties": { + "appPkgName": { + "description": "Name of the application package to be onboarded.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appPkgPath": { + "type": "string" + }, + "appPkgVersion": { + "description": "Version of the application package to be onboarded.\nThe appPkgName with appPkgVersion can be used to uniquely identify the application package.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "appProvider": { + "description": "The provider's name of the application package to be onboarded.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "checksum": { + "description": "", + "properties": { + "algorithm": { + "description": " Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.", + "type": "string" + }, + "hash": { + "description": "'String 1 The hexadecimal value of the checksum'", + "type": "string" + } + }, + "required": [ + "algorithm", + "hash" + ], + "type": "object" + }, + "userDefinedData": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "appPkgName", + "appPkgVersion", + "checksum", + "appPkgPath" + ], + "type": "object", + "x-etsi-notes": "NOTE:\tIt is for further study how to convey appPkgPath, and align with ETSI GS NFV-SOL 005 [i.7].", + "x-etsi-ref": "6.2.3.2" +} \ No newline at end of file diff --git a/MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfo.json b/MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfo.json deleted file mode 100644 index e69de29..0000000 diff --git a/MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfos.json b/MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfos.json deleted file mode 100644 index e69de29..0000000 -- GitLab From 119656a4eb83e1343a9e212ba5e84b6d05d5fcc1 Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 10 Feb 2022 09:31:43 +0100 Subject: [PATCH 59/63] Updated Grant TCs of MEC010p2 v2.2.1 according to the corresponding TPs updates. --- MEC010p2/MEO/GRANT/Grant.robot | 44 +++++++++++++--------------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/MEC010p2/MEO/GRANT/Grant.robot b/MEC010p2/MEO/GRANT/Grant.robot index b83ccff..15f350f 100644 --- a/MEC010p2/MEO/GRANT/Grant.robot +++ b/MEC010p2/MEO/GRANT/Grant.robot @@ -9,7 +9,7 @@ Library OperatingSystem *** Test Cases *** -TP_MEC_MEC010p2_MEO_GRANT_001_OK +TC_MEC_MEC010p2_MEO_GRANT_001_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_001_OK ... Check that MEO sends a synchronous grant response when a grant request is requested ... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1 @@ -22,7 +22,7 @@ TP_MEC_MEC010p2_MEO_GRANT_001_OK Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is Grant -TP_MEC_MEC010p2_MEO_GRANT_001_BR +TC_MEC_MEC010p2_MEO_GRANT_001_BR [Documentation] TP_MEC_MEC010p2_MEO_GRANT_001_BR ... Check that MEO responds with an error when it receives a malformed request when a new grant request is performed ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 @@ -31,7 +31,7 @@ TP_MEC_MEC010p2_MEO_GRANT_001_BR Create a GRANT request grantBadRequest Check HTTP Response Status Code Is 400 -TP_MEC_MEC010p2_MEO_GRANT_002_OK +TC_MEC_MEC010p2_MEO_GRANT_002_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_002_OK ... Check that MEO sends a synchronous grant response when a grant request is requested ... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1 @@ -40,22 +40,12 @@ TP_MEC_MEC010p2_MEO_GRANT_002_OK [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Create a GRANT request grantRequest2 Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is Grant -#TP_MEC_MEC010p2_MEO_GRANT_002_BR TODO clarify TPs before implementing this -# [Documentation] TP_MEC_MEC010p2_MEO_GRANT_002_BR -# ... Check that MEO responds with an error when it receives a malformed request when a new grant request is performed -# ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 -# ... ETSI GS MEC 010-2 2.2.1, Table 6.2.4.4.2-1 (Grant) -# [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS -# Create a GRANT request grantBadRequest2 -# Check HTTP Response Status Code Is 400 - - - -TP_MEC_MEC010p2_MEO_GRANT_003_OK +TC_MEC_MEC010p2_MEO_GRANT_003_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_003_OK ... Check that MEO sends an asynchronous grant response when a grant request is requested ... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1 @@ -67,17 +57,9 @@ TP_MEC_MEC010p2_MEO_GRANT_003_OK Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location -##TODO Fix numbering against success case -TP_MEC_MEC010p2_MEO_GRANT_003_NF - [Documentation] TP_MEC_MEO_GRANT_003_NF - ... Check that MEO responds with an error when it receives a request for returning a grant referred with a wrong ID - ... ETSI GS MEC 010-2 2.2.1, clause 7.6.1.3.2 - [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an individual grant ${NOT_EXISTING_GRANT_ID} - Check HTTP Response Status Code Is 404 - -TP_MEC_MEC010p2_MEO_GRANT_004_OK + +TC_MEC_MEC010p2_MEO_GRANT_004_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_004_OK ... Check that MEO sends an asynchronous grant response when a grant request is requested ... ETSI GS MEC 010-2 2.2.1, clause 7.5.1.3.1 @@ -89,7 +71,7 @@ TP_MEC_MEC010p2_MEO_GRANT_004_OK Check HTTP Response Header Contains Location -TP_MEC_MEC010p2_MEO_GRANT_005_OK +TC_MEC_MEC010p2_MEO_GRANT_005_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_005_OK ... Check that MEO sends the status of a grant request when a query on a granting ID is performed. ... The process of creating the grant is ongoing, no grant is available yet @@ -100,7 +82,7 @@ TP_MEC_MEC010p2_MEO_GRANT_005_OK Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location -TP_MEC_MEC010p2_MEO_GRANT_006_OK +TC_MEC_MEC010p2_MEO_GRANT_006_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_006_OK ... Check that MEO sends the status of a grant request when a query on a granting ID is performed. ... The process of creating the grant is ongoing, no grant is available yet @@ -112,6 +94,14 @@ TP_MEC_MEC010p2_MEO_GRANT_006_OK Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is Grant +TC_MEC_MEC010p2_MEO_GRANT_006_NF + [Documentation] TP_MEC_MEC010p2_MEO_GRANT_006_NF + ... Check that MEO responds with an error when it receives + ... a request for returning a grant referred with a wrong ID + ... ETSI GS MEC 010-2 2.1.1, clause 7.5.2.3.2 + [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get an individual grant ${NOT_EXISTING_GRANT_ID} + Check HTTP Response Status Code Is 404 -- GitLab From fbf3d895fc2f7ac7b0af1e08756543774a96e586 Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 10 Feb 2022 09:34:06 +0100 Subject: [PATCH 60/63] Minor fixes on Platform Configuration TCs for MEC010p2 v2.2.1 --- MEC010p2/MEPM/LCM/PlatformConfiguration.robot | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MEC010p2/MEPM/LCM/PlatformConfiguration.robot b/MEC010p2/MEPM/LCM/PlatformConfiguration.robot index 13716c3..00632c9 100644 --- a/MEC010p2/MEPM/LCM/PlatformConfiguration.robot +++ b/MEC010p2/MEPM/LCM/PlatformConfiguration.robot @@ -10,7 +10,7 @@ Library OperatingSystem *** Test Cases *** -TP_MEC_MEC010p2_MEPM_LCM_001_OK +TC_MEC_MEC010p2_MEPM_LCM_001_OK [Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_OK ... Check that MEC API provider has created the configuration information in AppD to the MEPM-V ... ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1 @@ -21,7 +21,7 @@ TP_MEC_MEC010p2_MEPM_LCM_001_OK Check Response Header contains Location -TP_MEC_MEC010p2_MEPM_LCM_001_BR +TC_MEC_MEC010p2_MEPM_LCM_001_BR [Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_BR ... Check that MEC API provider sends an error when it receives a malformed request for the configuration information in AppD to the MEPM-V ... ETSI GS MEC 010-2 2.2.1, clause 7.7.6.3.1 @@ -32,7 +32,7 @@ TP_MEC_MEC010p2_MEPM_LCM_001_BR -TP_MEC_MEC010p2_MEPM_LCM_001_NF +TC_MEC_MEC010p2_MEPM_LCM_001_NF [Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_BR ... "Check that MEC API provider sends an error when it receives a request ... for the configuration information in AppD to the MEPM-V with not valid app instance ID -- GitLab From 58b1acaf8c6a774389503fdce17d5ca5a48d79c6 Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 10 Feb 2022 11:51:39 +0100 Subject: [PATCH 61/63] Updated App Package Management TCs for MEC010p2 v2.2.1 according to the TPs updates. --- MEC010p2/MEO/PKGM/AppPkgMgt.robot | 2 +- MEC010p2/MEO/PKGM/environment/variables.txt | 1 + ...ackageManagement.robot => AppPkgMgt.robot} | 322 ++++++++---------- MEC010p2/MEPM/PKGM/environment/variables.txt | 4 +- 4 files changed, 155 insertions(+), 174 deletions(-) rename MEC010p2/MEPM/PKGM/{PackageManagement.robot => AppPkgMgt.robot} (75%) diff --git a/MEC010p2/MEO/PKGM/AppPkgMgt.robot b/MEC010p2/MEO/PKGM/AppPkgMgt.robot index 992c6e4..7c61012 100644 --- a/MEC010p2/MEO/PKGM/AppPkgMgt.robot +++ b/MEC010p2/MEO/PKGM/AppPkgMgt.robot @@ -265,7 +265,7 @@ TC_MEC_MEC010p2_MEO_PKGM_011_NF ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2", ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get an AppD from App Package identified by ${NON_EXISTENT_APP_PKG_ID} + Get an AppD from App Package identified by ${NON_EXISTING_APPD_ID} Check HTTP Response Status Code Is 404 diff --git a/MEC010p2/MEO/PKGM/environment/variables.txt b/MEC010p2/MEO/PKGM/environment/variables.txt index 49be91d..bdfa447 100644 --- a/MEC010p2/MEO/PKGM/environment/variables.txt +++ b/MEC010p2/MEO/PKGM/environment/variables.txt @@ -24,6 +24,7 @@ ${APPD_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 ${MALFORMED_FILTER_NAME} operationalStatus ${FILTER_VALUE} NOT_IN_USE ${NON_EXISTENT_APP_PKG_ID} NON_EXISTENT_APP_PKG_ID +${NON_EXISTING_APPD_ID} NON_EXISTENT_APPD_ID ${OPERATION_VALUE} DISABLE ${WRONG_OPERATION_VALUE} DISABL diff --git a/MEC010p2/MEPM/PKGM/PackageManagement.robot b/MEC010p2/MEPM/PKGM/AppPkgMgt.robot similarity index 75% rename from MEC010p2/MEPM/PKGM/PackageManagement.robot rename to MEC010p2/MEPM/PKGM/AppPkgMgt.robot index 6845b23..e45756f 100644 --- a/MEC010p2/MEPM/PKGM/PackageManagement.robot +++ b/MEC010p2/MEPM/PKGM/AppPkgMgt.robot @@ -1,4 +1,4 @@ -''[Documentation] robot --outputdir ./outputs ./PackageManagement.robot +''[Documentation] robot --outputdir ./outputs ./AppPkgMgt.robot ... Test Suite to validate Package Management (PKGM) operations. *** Settings *** @@ -39,6 +39,15 @@ TC_MEC_MEC010p2_MEPM_PKGM_001_02_OK Validate Json AppPkgInfo.schema.json ${appPkg} END +TC_MEC_MEC010p2_MEPM_PKGM_001_BR + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_001_BR + ... Check that MEPM responds with an error when it receives + ... a malformed request for requesting the list of existing App Packages + ... ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + GET all APP Packages with filters ${MALFORMED_FILTER_NAME} ${FILTER_VALUE} + Check HTTP Response Status Code Is 400 + TC_MEC_MEC010p2_MEPM_PKGM_002_01_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_002_01_OK @@ -53,48 +62,34 @@ TC_MEC_MEC010p2_MEPM_PKGM_002_01_OK Should Be Equal As Strings ${response['body']['id']} ${APP_PKG_ID} -TC_MEC_MEC010p2_MEPM_PKGM_003_01_OK - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_01_OK - ... Check that MEPM returns the Application Descriptor contained on a on-boarded Application Package when requested - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2 - ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get AppD by ${APPD_ID} - Check HTTP Response Status Code Is 200 - - -TC_MEC_MEC010p2_MEPM_PKGM_003_02_OK - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_02_OK - ... Check that MEPM returns the Application Descriptor contained on a on-boarded Application Package when requested - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2 - ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get AppD from onboarded app packages by ${APPD_ID} - Check HTTP Response Status Code Is 200 - -TC_MEC_MEC010p2_MEPM_PKGM_004_01_OK - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_004_01_OK - ... Check that MEPM fetches the on-boarded application package content identified by appPkgId when requested - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 +TC_MEC_MEC010p2_MEPM_PKGM_002_02_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_002_02_OK + ... Check that MEPM returns the an App Package when requested - Note 3 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get onboarded application package ${APP_PKG_ID} + GET an onboarded APP Package identified by ${APP_PKG_ID} Check HTTP Response Status Code Is 200 - Should Be Equal As Strings ${response}[headers][Content-Type] application/zip + Check HTTP Response Body Json Schema Is AppPkgInfo + Should Be Equal As Strings ${response['body']['id']} ${APP_PKG_ID} -TC_MEC_MEC010p2_MEPM_PKGM_004_02_OK - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_004_02_OK - ... Check that MEPM fetches the on-boarded application package content identified by appDId when requested - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 +TC_MEC_MEC010p2_MEPM_PKGM_002_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_002_NF + ... Check that MEPM responds with an error when it receives + ... a request for returning a App Package referred with a wrong ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 + ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.3.2-1 Note 3 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get onboarded application package by AppdId ${APPD_ID} - Check HTTP Response Status Code Is 200 - Should Be Equal As Strings ${response}[headers][Content-Type] application/zip - + GET an APP Package identified by ${NON_EXISTENT_APP_PKG_ID} + Check HTTP Response Status Code Is 404 -TC_MEC_MEC010p2_MEPM_PKGM_005_OK - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_005_OK + +TC_MEC_MEC010p2_MEPM_PKGM_003_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_OK ... Check that MEPM service returns an application package subscription when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.1", ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 @@ -105,25 +100,36 @@ TC_MEC_MEC010p2_MEPM_PKGM_005_OK Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo Should Be Equal As Strings ${response}[body][subscriptionType] AppPackageOnBoardingSubscription Should Be Equal As Strings ${response}[body][callbackUri] ${CALLBACK_URI} + + +TC_MEC_MEC010p2_MEPM_PKGM_003_BR + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_BR + ... Check that MEPM service sends an error when it receives a + ... malformed request for creating a new subscription on AppPackages + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.1 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Send a request for a subscription AppPkgSubscriptionBadRequest + Check HTTP Response Status Code Is 400 -TC_MEC_MEC010p2_MEPM_PKGM_006_OK +TC_MEC_MEC010p2_MEPM_PKGM_004_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_006_OK ... Check that MEPM service returns the list of Application Package Subscriptions when requested - ... ETSI GS MEC 010-2 2.2.1, clause 7.4.5.3.2 - ... ETSI GS MEC 010-2 2.2.1, Table 6.2.3.4.2-1 (AppPkgSubscriptionLinkList) + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Get all APP Package subscriptions Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is AppPkgSubscriptionLinkList + Check HTTP Response Body Json Schema Is AppPkgSubscriptionLinkList - -TC_MEC_MEC010p2_MEPM_PKGM_007_OK - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_007_OK +TC_MEC_MEC010p2_MEPM_PKGM_005_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_005_OK ... Check that MEPM service returns an Application Package Subscription when requested - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Get an individual APP Package subscriptions ${SUBSCRIPTION_ID} Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo @@ -131,91 +137,6 @@ TC_MEC_MEC010p2_MEPM_PKGM_007_OK Should Be Equal As Strings ${response}[body][id] ${SUBSCRIPTION_ID} Should Contain ${response}[body][_links][self][href] /app_pkgm/v1/subscriptions/${SUBSCRIPTION_ID} -TC_MEC_MEC010p2_MEPM_PKGM_008_OK - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_008_OK - ... Check that MEPM service deletes an Application Package Subscription when requested - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Delete an App Package Subscription identified by ${SUBSCRIPTION_ID} - Check HTTP Response Status Code Is 204 - Check HTTP Response Body is Empty - - -#TC_MEC_MEC010p2_MEPM_PKGM_009_OK -# [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_009_OK -# ... Check that the MEPM service sends a application package notification -# ... if the MEO service has an associated subscription and the event is generated -# ... ETSI GS MEC 010-2 2.2.1, clause 7.3.5.3.1 -# ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.6 -# ${json}= Get File schemas/AppPkgNotification.schema.json -# Log Creating mock request and response to handle Application Package Notification -# &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} -# &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 -# Create Mock Expectation ${req} ${rsp} -# Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} -# Log Verifying results -# Verify Mock Expectation ${req} -# Log Cleaning the endpoint -# Clear Requests ${callback_endpoint} - - -TC_MEC_MEC010p2_MEPM_PKGM_001_BR - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_001_BR - ... Check that MEPM responds with an error when it receives - ... a malformed request for requesting the list of existing App Packages - ... ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - GET all APP Packages with filters ${MALFORMED_FILTER_NAME} ${FILTER_VALUE} - Check HTTP Response Status Code Is 400 - - -TC_MEC_MEC010p2_MEPM_PKGM_002_NF - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_001_BR - ... Check that MEPM responds with an error when it receives - ... a request for returning a App Package referred with a wrong ID - ... ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get AppD by ${NON_EXISTENT_APP_PKG_ID} - Check HTTP Response Status Code Is 404 - - -TC_MEC_MEC010p2_MEPM_PKGM_003_01_NF - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_01_NF - ... Check that MEPM responds with an error when it receives - ... a request for returning a App Descriptor referred with a wrong App Package ID - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2 - ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get AppD from onboarded app packages by ${NON_EXISTENT_APP_PKG_ID} - Check HTTP Response Status Code Is 404 - - - - -TC_MEC_MEC010p2_MEPM_PKGM_003_02_NF - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_02_NF - ... Check that MEPM responds with an error when it receives - ... a request for returning a App Descriptor referred with a wrong appDId - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2 - ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get AppD from onboarded app packages by ${NON_EXISTENT_APP_PKG_ID} - Check HTTP Response Status Code Is 404 - - - -TC_MEC_MEC010p2_MEPM_PKGM_004_BR - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_004_BR - ... Check that MEPM service sends an error when it receives a - ... malformed request for creating a new subscription on AppPackages - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.1 - ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 - ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Send a request for a subscription AppPkgSubscriptionBadRequest - Check HTTP Response Status Code Is 400 - - TC_MEC_MEC010p2_MEPM_PKGM_005_NF [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_005_NF @@ -227,69 +148,111 @@ TC_MEC_MEC010p2_MEPM_PKGM_005_NF [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Get an individual APP Package subscriptions ${NON_EXISTENT_SUBSCRIPTION_ID} Check HTTP Response Status Code Is 404 + +TC_MEC_MEC010p2_MEPM_PKGM_006_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_006_OK + ... Check that MEPM service deletes an Application Package Subscription when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Delete an App Package Subscription identified by ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 204 + +TC_MEC_MEC010p2_MEPM_PKGM_006_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_006_NF + ... Check that MEPM service sends an error when it receives a deletion request for a subscription on AppPackages + ... with a wrong identifier + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Delete an App Package Subscription identified by ${NON_EXISTENT_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 - -TC_MEC_MEC010p2_MEPM_PKGM_007_01_NF - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_007_01_NF +TC_MEC_MEC010p2_MEPM_PKGM_008_NA + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_008_NA ... Check that MEPM responds with an error when it receives ... a POST request referring an application descriptor AppD - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.1 + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Post AppD by ${APPD_ID} Check HTTP Response Status Code Is 405 +TC_MEC_MEC010p2_MEPM_PKGM_009_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_009_OK + ... Check that MEPM returns the Application Descriptor contained on a on-boarded Application Package when requested + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2 + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get AppD by ${APPD_ID} + Check HTTP Response Status Code Is 200 - -TC_MEC_MEC010p2_MEPM_PKGM_007_02_NF - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_007_02_NF - ... Check that MEPM responds with an error when it receives - ... a POST request referring an application descriptor AppD - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.1 +TC_MEC_MEC010p2_MEPM_PKGM_009_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_009_NF + ... Check that MEPM responds with an error when it receives + ... a request for returning a App Descriptor referred with a wrong App Package ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.2", + ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Post AppD from onboarded app packages by ${APPD_ID} - Check HTTP Response Status Code Is 405 + Get AppD by ${NON_EXISTENT_APPD_ID} + Check HTTP Response Status Code Is 404 - -TC_MEC_MEC010p2_MEO_PKGM_009_NF - [Documentation] TP_MEC_MEC010p2_MEO_PKGM_009_NF - ... Check that MEPM service sends an error when it receives a deletion request for a subscription on AppPackages with a wrong identifier - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.4.3.4 - ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.4 - ... ETSI GS MEC 010-2 2.2.1, clause 6.2.3.7 - [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Delete an App Package Subscription identified by ${NON_EXISTENT_SUBSCRIPTION_ID} - Check HTTP Response Status Code Is 404 +TC_MEC_MEC010p2_MEPM_PKGM_010_FO + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_010_FO + ... Check that MEPM responds with an error when it receives + ... a PUT request referring an application descriptor AppD + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.3 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Put on AppD endpoint ${NON_EXISTENT_APP_PKG_ID} + Check HTTP Response Status Code Is 403 -TC_MEC_MEC010p2_MEPM_PKGM_010_BR - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_010_BR - ... Check that MEPM service sends an error when it receives a - ... malformed request for creating a new subscription on AppPackages - ... ETSI GS MEC 010-2 2.2.1, clause 7.3.3.3.1 +TC_MEC_MEC010p2_MEPM_PKGM_011_NA + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_011_NA + ... Check that MEPM responds with an error when it receives + ... a DELETE request referring an application descriptor AppD + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.6.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Send a request for a subscription AppPkgSubscriptionBadRequest - Check HTTP Response Status Code Is 400 - + Delete on AppD endpoint ${APP_PKG_ID} + Check HTTP Response Status Code Is 405 -TC_MEC_MEC010p2_MEPM_PKGM_011_01_NF - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_011_01_NF +TC_MEC_MEC010p2_MEPM_PKGM_012_01_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_012_01_OK ... Check that MEPM fetches the on-boarded application package content identified by appPkgId when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get onboarded application package ${NON_EXISTENT_APPD_ID} - Check HTTP Response Status Code Is 404 + Get application package by AppId ${APP_PKG_ID} + Check HTTP Response Status Code Is 200 - -TC_MEC_MEC010p2_MEPM_PKGM_011_02_NF - [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_011_02_NF +TC_MEC_MEC010p2_MEPM_PKGM_012_02_OK + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_012_02_OK ... Check that MEPM fetches the on-boarded application package content identified by appDId when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS - Get onboarded application package by AppdId ${NON_EXISTENT_APPD_ID} - Check HTTP Response Status Code Is 404 + Get onboarded application package by AppdId ${APPD_ID} + Check HTTP Response Status Code Is 200 + + +TC_MEC_MEC010p2_MEPM_PKGM_012_01_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_012_01_NF + ... Check that MEPM returns an error when performing + ... a request for returning a App Descriptor referred with a wrong App Package ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get application package by AppId ${NON_EXISTENT_APP_PKG_ID} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC010p2_MEPM_PKGM_012_02_NF + [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_012_02_NF + ... Check that MEPM returns an error when performing + ... a request for returning an onboarded App Descriptor referred with a wrong App Package ID + ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.2 + [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS + Get onboarded application package by AppdId ${NON_EXISTENT_APP_PKG_ID} + Check HTTP Response Status Code Is 404 *** Keywords *** @@ -375,7 +338,6 @@ Get AppD from onboarded app packages by Post AppD by [Arguments] ${appdId} - Log Getting App Descriptor by its identigier Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} Set Headers {"Authorization":"${TOKEN}"} Post ${apiRoot}/${apiName}/${apiVersion}/app_packages/${appdId}/appd @@ -384,7 +346,7 @@ Post AppD by Post AppD from onboarded app packages by [Arguments] ${appdId} - Log Getting App Descriptor by its identigier + Log Getting App Descriptor by its identifier Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} Set Headers {"Authorization":"${TOKEN}"} Post ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/appd @@ -392,7 +354,25 @@ Post AppD from onboarded app packages by Set Suite Variable ${response} ${output} -Get onboarded application package + +Put on AppD endpoint + [Arguments] ${appdId} + Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} + Set Headers {"Authorization":"${TOKEN}"} + Put ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/appd + ${output}= Output response + Set Suite Variable ${response} ${output} + +Delete on AppD endpoint + [Arguments] ${appdId} + Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${appdId}/appd + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get application package by AppId [Arguments] ${appPkgId} Log Getting App descriptor for App Package Set Headers {"Accept":"${ACCEPTED_CONTENT_TYPE}"} diff --git a/MEC010p2/MEPM/PKGM/environment/variables.txt b/MEC010p2/MEPM/PKGM/environment/variables.txt index f831a32..b71bde6 100644 --- a/MEC010p2/MEPM/PKGM/environment/variables.txt +++ b/MEC010p2/MEPM/PKGM/environment/variables.txt @@ -12,12 +12,12 @@ ${ACCEPTED_CONTENT_TYPE} text/plain # Specific variables -${APP_PKG_ID} appPkgId +${APP_PKG_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f ${APP_INSTANCE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f ${APPD_ID} appdId ${NOT_EXISTING_APP_INSTANCE_ID} NOT_EXISTING_APP_INSTANCE_ID ${CALLBACK_URI} http://some.url/somepath -${SUBSCRIPTION_ID} 1234782-2c70-4e47-9a4e-0ee3a1a0fabcd +${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 ${MALFORMED_FILTER_NAME} operationalStatus ${FILTER_VALUE} ENABLED ${NON_EXISTENT_APP_PKG_ID} NON_EXISTENT_APP_PKG_ID -- GitLab From eb0c88298bba9bb86713457d028a3d3b1951651b Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 10 Feb 2022 12:12:34 +0100 Subject: [PATCH 62/63] Minor fixes on App LCM TCs for MEC010p2 v2.2.1 --- MEC010p2/MEX/LCM/AppInstanceMgmt.robot | 76 +++++++++---------- ...ppInstanceSubscriptionLinkList.schema.json | 61 +++++++++++++++ 2 files changed, 96 insertions(+), 41 deletions(-) create mode 100644 MEC010p2/MEX/LCM/schemas/AppInstanceSubscriptionLinkList.schema.json diff --git a/MEC010p2/MEX/LCM/AppInstanceMgmt.robot b/MEC010p2/MEX/LCM/AppInstanceMgmt.robot index be62181..45d7cb0 100644 --- a/MEC010p2/MEX/LCM/AppInstanceMgmt.robot +++ b/MEC010p2/MEX/LCM/AppInstanceMgmt.robot @@ -10,7 +10,7 @@ Library OperatingSystem *** Test Cases *** -TP_MEC_MEC010p2_MEX_LCM_001_OK +TC_MEC_MEC010p2_MEX_LCM_001_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_001_OK ... Check that MEC API provider creates a new App Package when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.1 @@ -24,7 +24,7 @@ TP_MEC_MEC010p2_MEX_LCM_001_OK Should Be Equal As Strings ${response['body']['instantiationState']} NOT_INSTANTIATED -TP_MEC_MEC010p2_MEX_LCM_001_BR +TC_MEC_MEC010p2_MEX_LCM_001_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_001_BR ... Check that MEC API provider sends an error when it receives a malformed request for the creation of a new App Instance ... ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.1 @@ -36,7 +36,7 @@ TP_MEC_MEC010p2_MEX_LCM_001_BR -TP_MEC_MEC010p2_MEX_LCM_002_OK +TC_MEC_MEC010p2_MEX_LCM_002_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_002_OK ... Check that MEC API provider retrieves the list of App instances when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.1.3.2 @@ -54,7 +54,7 @@ TP_MEC_MEC010p2_MEX_LCM_002_OK -TP_MEC_MEC010p2_MEX_LCM_003_OK +TC_MEC_MEC010p2_MEX_LCM_003_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_003_OK ... Check that MEC API provider retrieves an App Package when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.2 @@ -66,21 +66,21 @@ TP_MEC_MEC010p2_MEX_LCM_003_OK Should Be Equal As Strings ${response['body']['id']} ${APP_INSTANCE_ID} -TP_MEC_MEC010p2_MEX_LCM_003_NF +TC_MEC_MEC010p2_MEX_LCM_003_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_003_NF ... Check that MEC API provider fails on deletion of an App Instance when requested using wrong appInstanceId ... ETSI GS MEC 010-2 2.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo GET APP Instance ${NOT_EXISTING_APP_INSTANCE_ID} Check HTTP Response Status Code Is 404 -TP_MEC_MEC010p2_MEX_LCM_004_OK +TC_MEC_MEC010p2_MEX_LCM_004_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_003_OK ... Check that MEC API provider service deletes an App Instance when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.4 Delete APP Instance ${APP_INSTANCE_ID} Check HTTP Response Status Code Is 204 -TP_MEC_MEC010p2_MEX_LCM_004_NF +TC_MEC_MEC010p2_MEX_LCM_004_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_004_NF ... Check that MEC API provider fails on deletion of an App Instance when requested using wrong appInstanceId ... ETSI GS MEC 010-2 2.2.1, clause 7.4.2.3.4 @@ -88,9 +88,7 @@ TP_MEC_MEC010p2_MEX_LCM_004_NF Check HTTP Response Status Code Is 404 - - -TP_MEC_MEC010p2_MEX_LCM_005_OK +TC_MEC_MEC010p2_MEX_LCM_005_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_005_OK ... Check that MEC API provider service instantiates an App Instance when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.6.3.1 @@ -99,7 +97,7 @@ TP_MEC_MEC010p2_MEX_LCM_005_OK Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location -TP_MEC_MEC010p2_MEX_LCM_005_BR +TC_MEC_MEC010p2_MEX_LCM_005_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_005_BR ... Check that MEC API provider service fails to instantiate an App Instance when it receives a malformed request ... ETSI GS MEC 010-2 2.2.1, clause 7.4.6.3.1 @@ -109,7 +107,7 @@ TP_MEC_MEC010p2_MEX_LCM_005_BR -TP_MEC_MEC010p2_MEX_LCM_005_NF +TC_MEC_MEC010p2_MEX_LCM_005_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_005_NF ... Check that MEC API provider service fails to instantiate an App Instance when it receives a request related to a not existing App Instance ... ETSI GS MEC 010-2 2.2.1, clause 7.4.6.3.1 @@ -119,7 +117,7 @@ TP_MEC_MEC010p2_MEX_LCM_005_NF -TP_MEC_MEC010p2_MEX_LCM_006_OK +TC_MEC_MEC010p2_MEX_LCM_006_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_006_OK ... Check that MEC API provider service terminates an App Instance when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.7.3.1 @@ -128,7 +126,7 @@ TP_MEC_MEC010p2_MEX_LCM_006_OK Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location -TP_MEC_MEC010p2_MEX_LCM_006_BR +TC_MEC_MEC010p2_MEX_LCM_006_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_006_OK ... Check that MEC API provider service fails to terminate an App Instance when it receives a malformed request ... ETSI GS MEC 010-2 2.2.1, clause 7.4.7.3.1 @@ -137,7 +135,7 @@ TP_MEC_MEC010p2_MEX_LCM_006_BR Check HTTP Response Status Code Is 400 -TP_MEC_MEC010p2_MEX_LCM_006_NF +TC_MEC_MEC010p2_MEX_LCM_006_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_006_NF ... Check that MEC API provider service fails to terminate an App Instance when it receives a request related to a not existing App Instance ... ETSI GS MEC 010-2 2.2.1, clause 7.4.7.3.1 @@ -146,7 +144,7 @@ TP_MEC_MEC010p2_MEX_LCM_006_NF Check HTTP Response Status Code Is 404 -TP_MEC_MEC010p2_MEX_LCM_007_OK +TPC_MEC_MEC010p2_MEX_LCM_007_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_007_OK ... Check that MEC API provider service changes the status of an App Instance from its INITIAL_STATE to a given FINAL_STATE, when requested. ... The following combinations INITIAL_STATE - FINAL_STATE are supported: @@ -159,7 +157,7 @@ TP_MEC_MEC010p2_MEX_LCM_007_OK Check HTTP Response Header Contains Location -TP_MEC_MEC010p2_MEX_LCM_007_BR +TC_MEC_MEC010p2_MEX_LCM_007_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_007_BR ... Check that MEC API provider service fails to operate on an App Instance when it receives a malformed request ... ETSI GS MEC 010-2 2.2.1, clause 7.4.8.3.1 @@ -167,7 +165,7 @@ TP_MEC_MEC010p2_MEX_LCM_007_BR Operate App Request ${APP_INSTANCE_ID} OperateAppRequestBadRequest Check HTTP Response Status Code Is 400 -TP_MEC_MEC010p2_MEX_LCM_007_NF +TC_MEC_MEC010p2_MEX_LCM_007_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_007_NF ... Check that MEC API provider service fails to change the status of an App Instance when it receives a request related to a not existing App Instance ... ETSI GS MEC 010-2 2.2.1, clause 7.4.8.3.1 @@ -177,7 +175,7 @@ TP_MEC_MEC010p2_MEX_LCM_007_NF -TP_MEC_MEC010p2_MEX_LCM_008_OK +TC_MEC_MEC010p2_MEX_LCM_008_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_008_OK ... Check that MEC API provider service retrieves info about LCM Operation Occurrence on App Instances when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.9.3.2 @@ -196,7 +194,7 @@ TP_MEC_MEC010p2_MEX_LCM_008_OK -TP_MEC_MEC010p2_MEX_LCM_009_OK +TC_MEC_MEC010p2_MEX_LCM_009_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_009_OK ... Check that MEC API provider service retrieves info about LCM Operation Occurrence on an App Instance when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.10.3.2 @@ -207,7 +205,7 @@ TP_MEC_MEC010p2_MEX_LCM_009_OK Should Be Equal As Strings ${response}[body][id] ${APP_LCM_OP_OCC_ID} -TP_MEC_MEC010p2_MEX_LCM_009_NF +TC_MEC_MEC010p2_MEX_LCM_009_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_009_NF ... Check that MEC API provider service sends an error when it receives a query for a not existing LCM Operation Occurence ... ETSI GS MEC 010-2 2.2.1, clause 7.4.10.3.2 @@ -218,7 +216,7 @@ TP_MEC_MEC010p2_MEX_LCM_009_NF -TP_MEC_MEC010p2_MEX_LCM_010_OK +TC_MEC_MEC010p2_MEX_LCM_010_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_010_OK ... Check that MEC API provider service creates a LCM Subscription when requested, where the subscription request can ... have SUBSCRIPTION_TYPE AppInstanceStateChangeSubscription or AppLcmOpOccStateChangeSubscription @@ -241,7 +239,7 @@ TP_MEC_MEC010p2_MEX_LCM_010_OK -TP_MEC_MEC010p2_MEX_LCM_010_BR +TC_MEC_MEC010p2_MEX_LCM_010_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_010_BR ... Check that MEC API provider service sends an error when it receives a malformed request to create a LCM Subscription ... ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.1, @@ -258,7 +256,7 @@ TP_MEC_MEC010p2_MEX_LCM_010_BR Check HTTP Response Status Code Is 400 -TP_MEC_MEC010p2_MEX_LCM_011_OK +TC_MEC_MEC010p2_MEX_LCM_011_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_011_OK ... Check that MEC API provider service sends the list of LCM Subscriptions when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.2, @@ -273,14 +271,9 @@ TP_MEC_MEC010p2_MEX_LCM_011_OK Send a request for retrieving all subscriptions Check HTTP Response Status Code Is 200 - ##In the MEC010p2 v2.1.1 Specification, the response data model is SubscriptionLinkList. - ##In the MEC010p2 v2.2.1 Specification, the response data model is AppInstanceSubscriptionLinkList. - ##These data models differ only for the subscriptionType attribute. - ##Since the OAS v2.2.1 is not available yet, the response data model is not checked yet. - - #Validate Json AppInstanceSubscriptionLinkList.schema.json ${response}[body] + Validate Json AppInstanceSubscriptionLinkList.schema.json ${response}[body] -TP_MEC_MEC010p2_MEX_LCM_012_OK +TC_MEC_MEC010p2_MEX_LCM_012_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_012_OK ... Check that MEC API provider service sends the information about an existing LCM subscription when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.4.3.2 @@ -294,7 +287,7 @@ TP_MEC_MEC010p2_MEX_LCM_012_OK Should Be Equal As Strings ${response['body']['id']} ${SUBSCRIPTION_ID} -TP_MEC_MEC010p2_MEX_LCM_012_NF +TC_MEC_MEC010p2_MEX_LCM_012_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_012_NF ... Check that MEC API provider service sends an error when it receives a query for a not existing LCM Subscription ... ETSI GS MEC 010-2 2.2.1, clause 7.4.4.3.2 @@ -307,14 +300,15 @@ TP_MEC_MEC010p2_MEX_LCM_012_NF Check HTTP Response Status Code Is 404 -TP_MEC_MEC010p2_MEX_LCM_013_OK +TC_MEC_MEC010p2_MEX_LCM_013_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_013_OK ... Check that MEC API provider service delete an existing LCM Subscription when requested ... ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.4 Send a request for deleting a subscription ${SUBSCRIPTION_ID} Check HTTP Response Status Code Is 204 -TP_MEC_MEC010p2_MEX_LCM_013_NF + +TC_MEC_MEC010p2_MEX_LCM_013_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_013_NF ... Check that MEC API provider service sends an error when it receives a deletion request for a not existing LCM Subscription ... ETSI GS MEC 010-2 2.2.1, clause 7.4.3.3.4 @@ -322,7 +316,7 @@ TP_MEC_MEC010p2_MEX_LCM_013_NF Check HTTP Response Status Code Is 404 -TP_MEC_MEC010p2_MEX_LCM_014_OK +TC_MEC_MEC010p2_MEX_LCM_014_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_014_OK ... Check that MEC API provider service cancels an on going LCM Operation ... ETSI GS MEC 010-2 2.2.1, clause 7.4.11.3.1", @@ -331,7 +325,7 @@ TP_MEC_MEC010p2_MEX_LCM_014_OK Check HTTP Response Status Code Is 202 -TP_MEC_MEC010p2_MEX_LCM_014_BR +TC_MEC_MEC010p2_MEX_LCM_014_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_014_BR ... Check that MEC API provider service fails to cancel an on going LCM Operation when it receives a malformed request ... ETSI GS MEC 010-2 2.2.1, clause 7.4.11.3.1", @@ -339,7 +333,7 @@ TP_MEC_MEC010p2_MEX_LCM_014_BR Cancel on going LCM Operation ${APP_LCM_OP_OCC_ID} CancelModeBadRequest Check HTTP Response Status Code Is 400 -TP_MEC_MEC010p2_MEX_LCM_014_NF +TC_MEC_MEC010p2_MEX_LCM_014_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_014_NF ... Check that MEC API provider service fails to cancel an on going LCM Operation when it receives a request related to a not existing application LCM Operation ... ETSI GS MEC 010-2 2.2.1, clause 7.4.11.3.1", @@ -349,7 +343,7 @@ TP_MEC_MEC010p2_MEX_LCM_014_NF -TP_MEC_MEC010p2_MEX_LCM_015_OK +TC_MEC_MEC010p2_MEX_LCM_015_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_015_OK ... Check that MEC API provider service makes failed an on going LCM Operation ... ETSI GS MEC 010-2 2.2.1, clause 7.4.12.3.1 @@ -358,7 +352,7 @@ TP_MEC_MEC010p2_MEX_LCM_015_OK Check HTTP Response Body Json Schema Is AppLcmOpOcc -TP_MEC_MEC010p2_MEX_LCM_015_NF +TC_MEC_MEC010p2_MEX_LCM_015_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_015_NF ... Check that MEC API provider service makes failed an on going LCM Operation ... ETSI GS MEC 010-2 2.2.1, clause 7.4.12.3.1 @@ -366,7 +360,7 @@ TP_MEC_MEC010p2_MEX_LCM_015_NF Check HTTP Response Status Code Is 404 -TP_MEC_MEC010p2_MEX_LCM_016_OK +TC_MEC_MEC010p2_MEX_LCM_016_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_016_OK ... Check that MEC API provider service retries an on going LCM Operation ... ETSI GS MEC 010-2 2.2.1, clause 7.4.13.3.1 @@ -374,7 +368,7 @@ TP_MEC_MEC010p2_MEX_LCM_016_OK Check HTTP Response Status Code Is 200 -TP_MEC_MEC010p2_MEX_LCM_016_NF +TC_MEC_MEC010p2_MEX_LCM_016_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_016_NF ... Check that MEC API provider service fails to retry an LCM Operation when it receives a request related to a not existing application LCM Operation ... ETSI GS MEC 010-2 2.2.1, clause 7.4.13.3.1 diff --git a/MEC010p2/MEX/LCM/schemas/AppInstanceSubscriptionLinkList.schema.json b/MEC010p2/MEX/LCM/schemas/AppInstanceSubscriptionLinkList.schema.json new file mode 100644 index 0000000..57be3c7 --- /dev/null +++ b/MEC010p2/MEX/LCM/schemas/AppInstanceSubscriptionLinkList.schema.json @@ -0,0 +1,61 @@ +{ + "description": "'The data type represents a subscription link list of notification on application package management'", + "type": "object", + "required": [ + "_links" + ], + "properties": { + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "subscriptions": { + "type": "array", + "items": { + "description": "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'", + "type": "object", + "required": [ + "href", + "subsctiptionType" + ], + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "format": "uri" + }, + "subsctiptionType": { + "description": "'Subscribed notification type'", + "type": "string", + "enum": [ + "AppPackageOnBoardingSubscription", + "AppPacakgeOperationChangeSubscription", + "AppPackageDeletionSubscription" + ] + } + } + } + } + } + } + } +} \ No newline at end of file -- GitLab From 980cf76128ab8c8383c2466dca968fa482d62de5 Mon Sep 17 00:00:00 2001 From: piscione Date: Thu, 10 Feb 2022 12:44:48 +0100 Subject: [PATCH 63/63] Minor. --- MEC010p2/MEO/PKGM/AppPkgMgt.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MEC010p2/MEO/PKGM/AppPkgMgt.robot b/MEC010p2/MEO/PKGM/AppPkgMgt.robot index 7c61012..6c47a0d 100644 --- a/MEC010p2/MEO/PKGM/AppPkgMgt.robot +++ b/MEC010p2/MEO/PKGM/AppPkgMgt.robot @@ -306,7 +306,7 @@ TC_MEC_MEC010p2_MEO_PKGM_013_OK TC_MEC_MEC010p2_MEO_PKGM_013_NF [Documentation] TP_MEC_MEC010p2_MEO_PKGM_013_NF - ... Check that MEO returns an errore when an application package with wrong id is submitted + ... Check that MEO returns an error when an application package with wrong id is submitted ... ETSI GS MEC 010-2 2.2.1, clause 7.3.7.3.3 ... ETSI GS MEC 010-2 2.2.1, clause 6.2.1.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS -- GitLab