pax_global_header 0000666 0000000 0000000 00000000064 13523015620 0014507 g ustar 00root root 0000000 0000000 52 comment=80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/ 0000775 0000000 0000000 00000000000 13523015620 0023221 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/GenericKeywords.robot 0000664 0000000 0000000 00000002572 13523015620 0027402 0 ustar 00root root 0000000 0000000 *** Settings ***
Library JSONSchemaLibrary schemas/
Library BuiltIn
*** Variables ***
${response}
*** Keywords ***
Check HTTP Response Status Code Is
[Arguments] ${expected_status}
${status}= Convert To Integer ${expected_status}
Should Be Equal ${response['status']} ${status}
Log Status code validated
Check HTTP Response Body Json Schema Is
[Arguments] ${input}
Should Contain ${response['headers']['Content-Type']} application/json
${schema} = Catenate SEPARATOR= ${input} .schema.json
Validate Json ${schema} ${response['body']}
Log Json Schema Validation OK
Should Be Present In Json List
[Arguments] ${expr} ${json_field} ${json_value}
Log Check if ${json_field} is present in ${expr} with the value ${jsonvalue}
:FOR ${item} IN @{expr}
\ Exit For Loop If "${item['${json_field}']}" == "${json_value}"
Log Item found ${item}
[return] ${item}
Check Result Contains
[Arguments] ${source} ${parameter} ${value}
Should Be Present In Json List ${source} ${parameter} ${value}
Check ProblemDetails
[Arguments] ${expected_status}
${status}= Convert To Integer ${expected_status}
Should Be Equal ${response['body']['problemDetails']['status']} ${status}
Log ProblemDetails Status code validated
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEO/ 0000775 0000000 0000000 00000000000 13523015620 0023641 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEO/GRANT/ 0000775 0000000 0000000 00000000000 13523015620 0024514 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEO/GRANT/README.md 0000664 0000000 0000000 00000000000 13523015620 0025761 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEO/PKGM/ 0000775 0000000 0000000 00000000000 13523015620 0024377 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEO/PKGM/README.md 0000664 0000000 0000000 00000000000 13523015620 0025644 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEO/UEAPPCTX/ 0000775 0000000 0000000 00000000000 13523015620 0025072 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEO/UEAPPCTX/README.md 0000664 0000000 0000000 00000000000 13523015620 0026337 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEO/UEAPPS/ 0000775 0000000 0000000 00000000000 13523015620 0024636 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEO/UEAPPS/README.md 0000664 0000000 0000000 00000000000 13523015620 0026103 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEPM/ 0000775 0000000 0000000 00000000000 13523015620 0023757 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEPM/PKGM/ 0000775 0000000 0000000 00000000000 13523015620 0024515 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEPM/PKGM/README.md 0000664 0000000 0000000 00000000000 13523015620 0025762 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEX/ 0000775 0000000 0000000 00000000000 13523015620 0023652 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEX/ANY/ 0000775 0000000 0000000 00000000000 13523015620 0024301 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEX/ANY/README.md 0000664 0000000 0000000 00000000000 13523015620 0025546 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEX/LCM/ 0000775 0000000 0000000 00000000000 13523015620 0024265 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/MEX/LCM/README.md 0000664 0000000 0000000 00000000000 13523015620 0025532 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/README.md 0000664 0000000 0000000 00000002453 13523015620 0024504 0 ustar 00root root 0000000 0000000 # MEC Testing Framework in Robot Framework
## Introduction
This repositories contains the test specifications and test adapter code for MEC Testing project in Robot Framework
## Contact information
Email at cti_support at etsi dot org
## License
Unless specified otherwise, the content of this repository and the files contained are released under the ETSI Software License.
See the attached LICENSE file or visit
https://forge.etsi.org/etsi-software-license
## Standard links
- Mobile-Edge Computation standards, accessible [here](https://www.etsi.org/standards#page=1&search=MEC&title=1&etsiNumber=1&content=1&version=0&onApproval=1&published=1&historical=1&startDate=1988-01-15&endDate=2019-05-06&harmonized=0&keyword=&TB=&stdType=&frequency=&mandate=&collection=&sort=1)
## RFC links
- RFC 7159 - The JavaScript Object Notation (JSON) Data Interchange Format, accessible [here](https://tools.ietf.org/html/rfc7159.html)
NOTE All draft can be found in the 'IETF XML Registry', accessible [here](https://www.iana.org/assignments/xml-registry/xml-registry.xhtml)
## Installation
TODO
## Usage
TODO
## How to Report a Bug
The ETSI MEC Testing Framework project is under constant development, so it is possible that you will
encounter a bug while using it. Please report bugs at cti_support at etsi dot org.
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/ 0000775 0000000 0000000 00000000000 13523015620 0023673 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/AMS/ 0000775 0000000 0000000 00000000000 13523015620 0024313 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/AMS/AMSService.robot 0000664 0000000 0000000 00000036061 13523015620 0027331 0 ustar 00root root 0000000 0000000 ''[Documentation] robot --outputdir ./outputs ./SRV/UETAG/PlatUeIdentity.robot
... Test Suite to validate UE Identity Tag (UETAG) operations.
*** Settings ***
Resource environment/variables.txt
Resource ../../pics.txt
Resource ../../GenericKeywords.robot
Library REST ${AMS_SCHEMA}://${AMS_HOST}:${AMS_PORT} ssl_verify=false
Library BuiltIn
Library OperatingSystem
Library MockServerLibrary
*** Test Cases ***
Request Registered AMS information
[Documentation] TP_MEC_SRV_AMS_001_OK
... 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
Get Registered AMS information
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppMobilityServiceInfos
Request Registered AMS information using attribute-selector
[Documentation] TP_MEC_SRV_AMS_001_OK
... 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
Get Registered AMS information using attribute-selector appMobilityServiceId ${APP_MOBILITY_SERVICE_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppMobilityServiceInfos
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
... 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
Get 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
... 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
Create a new application mobility service RegistrationRequest
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is AppMobilityServiceInfo
Log Checking Postcondition
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
... 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
Create a new application mobility service RegistrationRequestMalformed
Check HTTP Response Status Code Is 400
Request Subscriptions List for the registered AMS services
[Documentation] TP_MEC_SRV_AMS_003_OK
... Check that the AMS service returns information about the available subscriptions when requested.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
... - AdjacentAppInfoSubscription"
... ETSI GS MEC 021 2.0.8, clause 8.6.3.1
Get Subscriptions for registered AMS
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is SubscriptionLinks
Request Subscription List for registered AMS Services using wrong attribute parameters
[Documentation] TP_MEC_SRV_AMS_003_BR
... Check that the AMS service sends an error when it receives a malformed query about the available subscriptions
Get Subscriptions for registered AMS with wrong attbirube parameter
Check HTTP Response Status Code Is 400
Create a notification subscription
[Documentation] TP_MEC_SRV_AMS_004_OK
... Check that the AMS service creates a notification subscriptions when requested.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
... - AdjacentAppInfoSubscription"
... ETSI GS MEC 021 2.0.8, clause 8.6.3.4
Post a new notification subscription NotificationSubscription
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is NotificationSubscription
Create a notification subscription with wrong attribute parameter
[Documentation] TP_MEC_SRV_AMS_004_BR
... Check that the AMS service creates a notification subscriptions when requested.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
... - AdjacentAppInfoSubscription"
... ETSI GS MEC 021 2.0.8, clause 8.6.3.4
Post a new notification subscription NotificationSubscriptionError
Check HTTP Response Status Code Is 400
Request a specific subscription
[Documentation] TP_MEC_SRV_AMS_005_OK
... Check that the AMS service returns information about a given subscription when requested.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
... - AdjacentAppInfoSubscription"
... ETSI GS MEC 021 2.0.8, clause 8.7.3.1
Get individual subscription for AMS services ${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is NotificationSubscription
Request a specific subscription using wrong identifier
[Documentation] TP_MEC_SRV_AMS_005_NF
... 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
Get individual subscription for AMS services ${NON_EXISTENT_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
Modify a specific subscription
[Documentation] TP_MEC_SRV_AMS_007_OK
... Check that the AMS service modifies a given subscription when requested.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
... - AdjacentAppInfoSubscription
... ETSI GS MEC 021 2.0.8, clause 8.7.3.2
Update individual subscription for AMS services ${SUBSCRIPTION_ID} NotificationSubscription
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is NotificationSubscription
Modify a specific subscription using malformed request
[Documentation] TP_MEC_SRV_AMS_007_BR
... Check that the AMS service sends an error when it receives a malformed modify request for a given subscription.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
... - AdjacentAppInfoSubscription
... ETSI GS MEC 021 2.0.8, clause 8.7.3.2
Update individual subscription for AMS services ${SUBSCRIPTION_ID} NotificationSubscriptionError
Check HTTP Response Status Code Is 400
Modify a specific subscription using wrong identifier
[Documentation] TP_MEC_SRV_AMS_007_NF
... 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
Update individual subscription for AMS services ${NON_EXISTENT_SUBSCRIPTION_ID} NotificationSubscription
Check HTTP Response Status Code Is 404
Remove a specific subscription
[Documentation] TP_MEC_SRV_AMS_006_OK
... Check that the AMS service deletes a given subscription when requested
... ETSI GS MEC 021 2.0.8, clause 8.7.3.5
Delete individual subscription for AMS services ${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
Remove a specific subscription using wrong identifier
[Documentation] TP_MEC_SRV_AMS_006_NF
... 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
Delete individual subscription for AMS services ${NON_EXISTENT_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
Post Mobility Procedure Notification
[Documentation] TP_MEC_SRV_AMS_008_OK
... 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
${json}= Get File schemas/MobilityProcedureNotification.schema.json
Log Creating mock request and response to handle Mobility Procedure 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}
Post Adjacent Application Info Notification
[Documentation] TP_MEC_SRV_AMS_009_OK
... 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
${json}= Get File schemas/AdjacentAppInfoNotification.schema.json
Log Creating mock request and response to handle Adjacent Application Info 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}
Post Expire Notification
[Documentation] TP_MEC_SRV_AMS_010_OK
... 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
${json}= Get File schemas/ExpireNotification.schema.json
Log Creating mock request and response to handle Expire 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 ***
Get Registered AMS information
Should Be True ${PIC_AMS} == '1'
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices
${output}= Output response
Set Suite Variable ${response} ${output}
Get Registered AMS information using attribute-selector
[Arguments] ${key} ${value}
Should Be True ${PIC_AMS} == '1'
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices?${key}=${value}
${output}= Output response
Set Suite Variable ${response} ${output}
Get Registered AMS information using bad parameters
Should Be True ${PIC_AMS} == '1'
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices?appMobilityService=${APP_MOBILITY_SERVICE_ID} //param should be appMobilityServiceId
${output}= Output response
Set Suite Variable ${response} ${output}
Create a new application mobility service
[Arguments] ${content}
Should Be True ${PIC_AMS} == '1'
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
${file}= Catenate SEPARATOR= json/ ${content} .json
${body}= Get File ${file}
Post ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Get Subscriptions for registered AMS
Should Be True ${PIC_AMS} == '1'
Set Headers {"Accept":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions
${output}= Output response
Set Suite Variable ${response} ${output}
Get Subscriptions for registered AMS with wrong attbirube parameter
Should Be True ${PIC_AMS} == '1'
Set Headers {"Accept":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscriptionTyp=${SUBSCRIPTION_TYPE}
${output}= Output response
Set Suite Variable ${response} ${output}
Post a new notification subscription
[Arguments] ${content}
Should Be True ${PIC_AMS} == '1'
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
${file}= Catenate SEPARATOR= json/ ${content} .json
${body}= Get File ${file}
Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Get individual subscription for AMS services
[Arguments] ${content}
Should Be True ${PIC_AMS} == '1'
Set Headers {"Accept":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${content}
${output}= Output response
Set Suite Variable ${response} ${output}
Delete individual subscription for AMS services
[Arguments] ${content}
Should Be True ${PIC_AMS} == '1'
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${content}
${output}= Output response
Set Suite Variable ${response} ${output}
Update individual subscription for AMS services
[Arguments] ${identifier} ${content}
Should Be True ${PIC_AMS} == '1'
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
${file}= Catenate SEPARATOR= json/ ${content} .json
${body}= Get File ${file}
Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${identifier} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/AMS/README.md 0000664 0000000 0000000 00000000000 13523015620 0025560 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/AMS/environment/ 0000775 0000000 0000000 00000000000 13523015620 0026657 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/AMS/environment/variables.txt 0000664 0000000 0000000 00000001766 13523015620 0031402 0 ustar 00root root 0000000 0000000 *** Variables ***
# Generic variables
${AMS_SCHEMA} http
${AMS_HOST} 10.192.2.172
${AMS_PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${apiRoot}
${apiName}
${apiVersion} v1
# Specific variables
${APP_MOBILITY_SERVICE_ID} KtRGymNQ84dG3mQfRepa
${APP_INS_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
${SUBSCRIPTION_TYPE} MobilityProcedureSubscription
${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3
${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID
# 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 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/APPSAQ/ 0000775 0000000 0000000 00000000000 13523015620 0024660 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/APPSAQ/PlatAppServices.robot 0000664 0000000 0000000 00000006375 13523015620 0031007 0 ustar 00root root 0000000 0000000 *** Settings ***
Documentation
... A test suite for validating Application Service Availability Query (APPSAQ) operations.
Resource ../../resources/GenericKeywords.robot
Default Tags TP_MEC_SRV_APPSAQ
*** Variables ***
*** Test Cases ***
Get the available MEC services for a given application instance
[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.0.8, clause 7.15.3.1
... OpenAPI https://forge.etsi.org/gitlab/mec/gs011-app-enablement-api/blob/master/Mp1.yaml#/definitions/ServiceInfo
[Tags] TP_MEC_SRV_APPSAQ_001_OK TP_MEC_SRV_APPSAQ_BV
Given the Plaform IUT has a MEC Application instantiated
Log MEC 011, clause 5.2.5
# When the Plaform IUT entity receives a vGET for /mec_service_mgmt/v1/applications/${APP_INSTANCE_ID}/services
When the Plaform IUT entity receives a vGET for /${APP_INSTANCE_ID}/services
Log MEC 011, clause 7.15.3.1
Then the Plaform IUT sends a response 200 ServiceInfoList
MEC Applications sends incorrect parameters in request
[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.0.8, clause 7.15.3.1
[Tags] TP_MEC_SRV_APPSAQ_001_BR TP_MEC_SRV_APPSAQ_BI
Given the Plaform IUT has a MEC Application instantiated
Log MEC 011, clause 5.2.5
Log Wrong parameter name should trigger an error response.
# When the Plaform IUT entity receives a vGET for /mec_service_mgmt/v1/applications/${APP_INSTANCE_ID}/services?instance_id=some_instance_id
When the Plaform IUT entity receives a vGET for /${APP_INSTANCE_ID}/services?instance_id=some_instance_id
Log MEC 011, clause 7.15.3.1
Then the Plaform IUT sends a response 400 ProblemDetails
New MEC Applications service registration
[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.0.8, clause 7.15.3.4
[Tags] TP_MEC_SRV_APPSAQ_002_OK TP_MEC_SRV_APPSAQ_BV
Given the Plaform IUT has a MEC Application instantiated
# TODO where does the __some_service__ data comes from?
Given a MEC Application subscribed to service notifications for __some_service__
Log MEC 011, clause 5.2.4
Log Wrong parameter name should trigger an error response.
# TODO where does the __some_data__ comes from?
# When the Plaform IUT entity receives a vPOST for /mec_service_mgmt/v1/applications/${APP_INSTANCE_ID}/services
When the Plaform IUT entity receives a vPOST for /${APP_INSTANCE_ID}/services __some_data__ ServiceInfo
Log MEC 011, clause 7.15.3.4
Then the Plaform IUT sends a response 201 ServiceInfo
And the Plaform IUT response header parameter Location __location__
Log MEC 011, clause 6.4.2
And the Plaform IUT sends a notification message to the subscribed MEC Applications with ServiceAvailabilityNotification
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/APPSAQ/README.md 0000664 0000000 0000000 00000000000 13523015620 0026125 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/APPSUB/ 0000775 0000000 0000000 00000000000 13523015620 0024665 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/APPSUB/README.md 0000664 0000000 0000000 00000000000 13523015620 0026132 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/BWA/ 0000775 0000000 0000000 00000000000 13523015620 0024304 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/BWA/README.md 0000664 0000000 0000000 00000000000 13523015620 0025551 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/DNS/ 0000775 0000000 0000000 00000000000 13523015620 0024317 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/DNS/README.md 0000664 0000000 0000000 00000000000 13523015620 0025564 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/FAIS/ 0000775 0000000 0000000 00000000000 13523015620 0024415 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/FAIS/README.md 0000664 0000000 0000000 00000000000 13523015620 0025662 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/README.md 0000664 0000000 0000000 00000000000 13523015620 0025140 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RLOC/ 0000775 0000000 0000000 00000000000 13523015620 0024432 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RLOC/README.md 0000664 0000000 0000000 00000000000 13523015620 0025677 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/ 0000775 0000000 0000000 00000000000 13523015620 0024446 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/README.md 0000664 0000000 0000000 00000000000 13523015620 0025713 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/RnisQuery_BV.robot 0000664 0000000 0000000 00000005415 13523015620 0030052 0 ustar 00root root 0000000 0000000 ''[Documentation] robot --outputdir ../../outputs ./RnisQuery_BV.robot
... Test Suite to validate RNIS/Subscription (RNIS) operations.
*** Settings ***
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
*** Test Cases ***
Request RNIS subscription list
[Documentation] TC_MEC_SRV_RNIS_011_OK
... Check that the RNIS service sends the list of links to the relevant RNIS subscriptions when requested
... ETSI GS MEC 012 2.0.4, clause 7.6.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/SubscriptionLinkList
Get RNIS subscription list
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI
Check Subscription ${response['body']['SubscriptionLinkList']} ${SUBSCRIPTION_VALUE}
Create RNIS subscription
[Documentation] TC_MEC_SRV_RNIS_012_OK
... Check that the RNIS service creates a new RNIS subscription
... ETSI GS MEC 012 2.0.4, clause 7.6.3.4
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Post RNIS subscription request {"CellChangeSubscription": {"subscriptionType": CELL_CHANGE, "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}}}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI
Check CellChangeSubscription ${response['body']['CellChangeSubscription']}
*** Keywords ***
Get RNIS subscription list
Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Set Headers {"Content-Length":"0"}
Get /exampleAPI/rni/v2/subscriptions?subscription_type=${SUBSCRIPTION_HREF_VALUE}
${output}= Output response
Set Suite Variable ${response} ${output}
Post RNIS subscription request
[Arguments] ${content}
Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Post /exampleAPI/rni/v2/subscriptions ${content}
${output}= Output response
Set Suite Variable ${response} ${output}
RnisSpecificSubscription_BI_BO.robot 0000664 0000000 0000000 00000004467 13523015620 0033371 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS ''[Documentation] robot --outputdir ../../outputs ./RnisSpecificSubscription_BI_BO.robot
... Test Suite to validate RNIS/Subscription (RNIS) operations.
*** Settings ***
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
*** Test Cases ***
Request RNIS subscription list using bad parameters
[Documentation] TC_MEC_SRV_RNIS_011_BR
... 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.0.4, clause 7.6.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/SubscriptionLinkList
Get RNIS subscription list with wrong parameter
Check HTTP Response Status Code Is 400
Check ProblemDetails 400
Create RNIS subscription using bad parameters
[Documentation] TC_MEC_SRV_RNIS_012_BR
... 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.0.4, clause 7.6.3.4
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Post RNIS subscription request {"CellChangeSubscription": {"subscriptionType": WRONG_PARAMETER, "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}}}
Check HTTP Response Status Code Is 400
Check ProblemDetails 400
*** Keywords ***
Get RNIS subscription list with wrong parameter
Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Set Headers {"Content-Length":"0"}
Post /exampleAPI/rni/v2/subscriptions?subscription_type=InvalidSubscriptionRef
${output}= Output response
Set Suite Variable ${response} ${output}
RnisSpecificSubscription_BV.robot 0000664 0000000 0000000 00000005434 13523015620 0033021 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS ''[Documentation] robot --outputdir ../../outputs ./RnisSpecificSubscription_BV.robot
... Test Suite to validate RNIS/Subscription (RNIS) operations.
*** Settings ***
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
*** Test Cases ***
Request RNIS subscription list
[Documentation] TC_MEC_SRV_RNIS_011_OK
... Check that the RNIS service sends the list of links to the relevant RNIS subscriptions when requested
... ETSI GS MEC 012 2.0.4, clause 7.6.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/SubscriptionLinkList
Get RNIS subscription list
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI
Check Subscription ${response['body']['SubscriptionLinkList']} ${SUBSCRIPTION_VALUE}
Create RNIS subscription
[Documentation] TC_MEC_SRV_RNIS_012_OK
... Check that the RNIS service creates a new RNIS subscription
... ETSI GS MEC 012 2.0.4, clause 7.6.3.4
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Post RNIS subscription request {"CellChangeSubscription": {"subscriptionType": CELL_CHANGE, "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}}}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI
Check CellChangeSubscription ${response['body']['CellChangeSubscription']}
*** Keywords ***
Get RNIS subscription list
Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Set Headers {"Content-Length":"0"}
Get /exampleAPI/rni/v2/subscriptions?subscription_type=${SUBSCRIPTION_HREF_VALUE}
${output}= Output response
Set Suite Variable ${response} ${output}
Post RNIS subscription request
[Arguments] ${content}
Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Post /exampleAPI/rni/v2/subscriptions ${content}
${output}= Output response
Set Suite Variable ${response} ${output}
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/environment/ 0000775 0000000 0000000 00000000000 13523015620 0027012 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/environment/pics.txt 0000664 0000000 0000000 00000000072 13523015620 0030510 0 ustar 00root root 0000000 0000000 *** Variables ***
${PIC_RNIS_SPECIFIC_SUBSCRIPTION} 1
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/environment/variables.txt0000664 0000000 0000000 00000001467 13523015620 0031533 0 ustar 00root root 0000000 0000000 *** 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
${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}'}
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/resources/ 0000775 0000000 0000000 00000000000 13523015620 0026460 5 ustar 00root root 0000000 0000000 LocationAPI.robot 0000664 0000000 0000000 00000000655 13523015620 0031560 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/resources *** Settings ***
Resource ../environment/variables.txt
Resource LocationAPI.robot
#Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
Library JSONSchemaLibrary schemas/
*** Keywords ***
Check Location
[Arguments] ${value}
Log Check Location for userInfo element
Should be Equal ${response['body']['userInfo']['zoneId']} ${value}
Log Location OK
RadioNetworkInformationAPI.robot 0000664 0000000 0000000 00000001347 13523015620 0034625 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/resources *** Settings ***
Resource ../environment/variables.txt
Resource ../environment/pics.txt
Resource GenericKeywords.robot
Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
Library JSONSchemaLibrary schemas/
*** Keywords ***
Check Subscription
[Arguments] ${received_value} ${expected_value}
Should Be Equal ${received_value['_links']['self']} ${LINKS_SELF}
:FOR ${item} IN @{received_value['subscription']}
\ Exit For Loop If ${item} == ${expected_value}
Log Item found ${item}
[return] ${item}
Check CellChangeSubscription
[Arguments] ${received_value}
Should Be Equal ${received_value['_links']['self']} ${LINKS_SELF}
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/schemas/ 0000775 0000000 0000000 00000000000 13523015620 0026071 5 ustar 00root root 0000000 0000000 RadioNetworkInformationAPI.schema.json 0000664 0000000 0000000 00000054041 13523015620 0035320 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/RNIS/schemas {
"ProblemDetails": {
"type": "object",
"properties": {
"type": {
"$ref": "#/definitions/Problem.type"
},
"title": {
"$ref": "#/definitions/Problem.title"
},
"status": {
"$ref": "#/definitions/Problem.status"
},
"detail": {
"$ref": "#/definitions/Problem.detail"
},
"instance": {
"$ref": "#/definitions/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"
},
"PlmnInfo": {
"type": "object",
"required": [
"appInsId",
"ecgi"
],
"properties": {
"timeStamp": {
"$ref": "#/definitions/TimeStamp"
},
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"ecgi": {
"$ref": "#/definitions/Ecgi"
}
}
},
"RabInfo": {
"type": "object",
"required": [
"appInsId",
"requestId"
],
"properties": {
"timeStamp": {
"$ref": "#/definitions/TimeStamp"
},
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"requestId": {
"$ref": "#/definitions/RequestId"
},
"cellUserInfo": {
"type": "array",
"items": {
"$ref": "#/definitions/CellUserInfo"
}
}
}
},
"S1BearerInfo": {
"type": "object",
"required": [
"s1UeInfo"
],
"properties": {
"timeStamp": {
"$ref": "#/definitions/TimeStamp"
},
"s1UeInfo": {
"type": "array",
"items": {
"$ref": "#/definitions/S1UeInfo"
}
}
}
},
"S1UeInfo": {
"type": "object",
"required": [
"tempUeId",
"ecgi",
"s1BearerInfoDetailed"
],
"properties": {
"tempUeId": {
"type": "array",
"items": {
"$ref": "#/definitions/TempUeId"
}
},
"associateId": {
"type": "array",
"items": {
"$ref": "#/definitions/AssociateId"
}
},
"ecgi": {
"type": "array",
"items": {
"$ref": "#/definitions/Ecgi"
}
},
"s1BearerInfoDetailed": {
"type": "array",
"items": {
"$ref": "#/definitions/S1BearerInfoDetailed"
}
}
},
"description": "The information on users per cell."
},
"S1BearerInfoDetailed": {
"type": "object",
"required": [
"erabId",
"s1EnbInfo"
],
"properties": {
"erabId": {
"$ref": "#/definitions/ErabId"
},
"s1EnbInfo": {
"$ref": "#/definitions/S1EnbInfo"
},
"sGwInfo": {
"$ref": "#/definitions/SGwInfo"
}
},
"description": "Information on UEs in the specific cell."
},
"ErabId": {
"type": "integer",
"format": "int32",
"description": "The element that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413",
"example": 10
},
"TempUeId": {
"type": "object",
"required": [
"mmec",
"mtmsi"
],
"properties": {
"mmec": {
"$ref": "#/definitions/Mmec"
},
"mtmsi": {
"$ref": "#/definitions/Mtmsi"
}
}
},
"Mmec": {
"type": "string",
"description": "MMEC as defined in ETSI TS 136 413",
"example": "0"
},
"Mtmsi": {
"type": "string",
"description": "M-TMSI as defined in ETSI TS 136 413",
"example": "1234"
},
"S1EnbInfo": {
"type": "object",
"required": [
"ipAddress",
"tunnelId"
],
"properties": {
"ipAddress": {
"type": "string",
"description": "eNB transport layer address of this S1 bearer.",
"example": "192.0.2.0"
},
"tunnelId": {
"type": "string",
"description": "eNB GTP-U TEID of this S1 bearer.",
"example": "1111"
}
}
},
"SGwInfo": {
"type": "object",
"required": [
"ipAddress",
"tunnelId"
],
"properties": {
"ipAddress": {
"type": "string",
"description": "SGW transport layer address of this S1 bearer.",
"example": "192.0.2.1"
},
"tunnelId": {
"type": "string",
"description": "SGW GTP-U TEID of this S1 bearer.",
"example": "2222"
}
}
},
"TimeStamp": {
"type": "object",
"required": [
"nanoSeconds",
"seconds"
],
"properties": {
"seconds": {
"type": "integer",
"format": "uint32",
"description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC",
"example": 1577836800
},
"nanoSeconds": {
"type": "integer",
"format": "uint32",
"description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC",
"example": 0
}
}
},
"AppInsId": {
"type": "string",
"format": "string",
"description": "Unique identifier for the mobile edge application instance",
"example": "01"
},
"RequestId": {
"type": "string",
"format": "string",
"description": "Unique identifier allocated by the Mobile Edge application for the Information request.",
"example": "01"
},
"CellUserInfo": {
"type": "object",
"required": [
"ecgi",
"ueInfo"
],
"properties": {
"ecgi": {
"$ref": "#/definitions/Ecgi"
},
"ueInfo": {
"type": "array",
"items": {
"$ref": "#/definitions/UeInfo"
}
}
},
"description": "The information on users per cell."
},
"Ecgi": {
"type": "object",
"required": [
"cellId",
"plmn"
],
"properties": {
"plmn": {
"$ref": "#/definitions/Plmn"
},
"cellId": {
"$ref": "#/definitions/CellId"
}
},
"description": "E-UTRAN CelI Global Identifier as defined in 3GPP TS 36.413"
},
"Plmn": {
"type": "object",
"required": [
"mcc",
"mnc"
],
"properties": {
"mcc": {
"type": "string",
"format": "string",
"description": "The Mobile Country Code part of PLMN Identity as defined in 3GPP TS 36.413",
"example": "001"
},
"mnc": {
"type": "string",
"format": "string",
"description": "The Mobile Network Code part of PLMN Identity as defined in 3GPP TS 36.413",
"example": "01"
}
}
},
"CellId": {
"type": "array",
"items": {
"type": "string",
"format": "binary"
},
"description": "The E-UTRAN Cell Identity as a bit string (size (28)), as defined in 3GPP TS 36.413",
"example": "0x800000A"
},
"UeInfo": {
"type": "object",
"required": [
"erabInfo"
],
"properties": {
"associateId": {
"type": "array",
"items": {
"$ref": "#/definitions/AssociateId"
}
},
"erabInfo": {
"type": "array",
"items": {
"$ref": "#/definitions/ErabQosParameters"
}
}
},
"description": "Information on UEs in the specific cell."
},
"AssociateId": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string",
"enum": [
"RESERVED",
"UE_IPV4_ADDRESS",
"UE_IPV6_ADDRESS",
"NATED_IP_ADDRESS",
"GTP_TEID"
],
"description": "Numeric value (0-255) corresponding to specified type of identifier",
"example": "UE_IPV4_ADDRESS"
},
"value": {
"type": "integer",
"format": "int32",
"description": "Value for the identifier",
"example": 1
}
}
},
"ErabQosParameters": {
"type": "object",
"properties": {
"qci": {
"$ref": "#/definitions/Qci"
},
"qci_information": {
"$ref": "#/definitions/QosInformation"
}
}
},
"Qci": {
"type": "integer",
"format": "int32",
"description": "QoS Class Identifier as defined in TS 23.401",
"example": 7
},
"QosInformation": {
"type": "object",
"required": [
"erabGbrDl",
"erabGbrUl",
"erabMbrDl",
"erabMbrUl"
],
"properties": {
"erabMbrDl": {
"type": "integer",
"format": "int32",
"description": "This IE indicates the maximum downlink E-RAB Bit Rate as defined in TS 23.401 for this bearer.",
"example": 10
},
"erabMbrUl": {
"type": "integer",
"format": "int32",
"description": "This IE indicates the maximum uplink E-RAB Bit Rate as defined in TS 23.401 for this bearer.",
"example": 10
},
"erabGbrDl": {
"type": "integer",
"format": "int32",
"description": "This IE indicates the guaranteed downlink E-RAB Bit Rate as defined in TS 23.401 for this bearer.",
"example": 10
},
"erabGbrUl": {
"type": "integer",
"format": "int32",
"description": "This IE indicates the guaranteed uplink E-RAB Bit Rate as defined in TS 23.401 for this bearer.",
"example": 10
}
}
},
"SubscriptionLinkList": {
"type": "object",
"required": [
"_links"
],
"properties": {
"_links": {
"$ref": "#/definitions/Link"
},
"subscription": {
"type": "array",
"items": {
"$ref": "#/definitions/Subscription"
}
}
}
},
"MeasRepUeSubscriptionPost": {
"type": "object",
"required": [
"callbackReference",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocTri"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"MeasRepUeSubscription": {
"type": "object",
"required": [
"callbackReference",
"_links",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"_links": {
"$ref": "#/definitions/Link"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocTri"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"S1BearerSubscriptionPost": {
"type": "object",
"required": [
"callbackReference",
"s1BearerSubscriptionCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"eventType": {
"$ref": "#/definitions/EventType"
},
"s1BearerSubscriptionCriteria": {
"$ref": "#/definitions/S1BearerSubscriptionCriteria"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"S1BearerSubscription": {
"type": "object",
"required": [
"callbackReference",
"_links",
"s1BearerSubscriptionCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"_links": {
"$ref": "#/definitions/Link"
},
"eventType": {
"$ref": "#/definitions/EventType"
},
"s1BearerSubscriptionCriteria": {
"$ref": "#/definitions/S1BearerSubscriptionCriteria"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"RabEstSubscription": {
"type": "object",
"required": [
"callbackReference",
"_links",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"_links": {
"$ref": "#/definitions/Link"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocQci"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"RabEstSubscriptionPost": {
"type": "object",
"required": [
"callbackReference",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocQci"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"RabModSubscription": {
"type": "object",
"required": [
"callbackReference",
"_links",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"_links": {
"$ref": "#/definitions/Link"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocQci"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"RabModSubscriptionPost": {
"type": "object",
"required": [
"callbackReference",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocQci"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"RabRelSubscription": {
"type": "object",
"required": [
"callbackReference",
"_links",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"_links": {
"$ref": "#/definitions/Link"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocQci"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"RabRelSubscriptionPost": {
"type": "object",
"required": [
"callbackReference",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocQci"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"CaReConfSubscription": {
"type": "object",
"required": [
"callbackReference",
"_links",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"_links": {
"$ref": "#/definitions/Link"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssoc"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"CaReConfSubscriptionPost": {
"type": "object",
"required": [
"callbackReference",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssoc"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"CellChangeSubscriptionPost": {
"type": "object",
"required": [
"subscriptionType",
"callbackReference",
"filterCriteria"
],
"properties": {
"subscriptionType": {
"$ref": "#/definitions/SubscriptionType"
},
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocHo"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"CellChangeSubscription": {
"type": "object",
"required": [
"callbackReference",
"_links",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"_links": {
"$ref": "#/definitions/Link"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssocHo"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"MeasTaSubscriptionPost": {
"type": "object",
"required": [
"callbackReference",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssoc"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"MeasTaSubscription": {
"type": "object",
"required": [
"callbackReference",
"_links",
"filterCriteria"
],
"properties": {
"callbackReference": {
"$ref": "#/definitions/CallbackReference"
},
"_links": {
"$ref": "#/definitions/Link"
},
"filterCriteria": {
"$ref": "#/definitions/FilterCriteriaAssoc"
},
"expiryDeadline": {
"$ref": "#/definitions/TimeStamp"
}
}
},
"CallbackReference": {
"type": "string",
"format": "uri",
"description": "URL selected by the Mobile Edge application to receive notifications on the subscribed RNIS information.",
"example": "http://meAppClient.example.com/rni/v1/"
},
"Link": {
"type": "object",
"properties": {
"self": {
"$ref": "#/definitions/LinkType"
}
},
"description": "List of hyperlinks related to the resource"
},
"LinkType": {
"description": "URI referring to a resource",
"type": "string",
"format": "uri",
"example": "http://meAppClient.example.com/rni/v1/"
},
"Subscription": {
"type": "object",
"required": [
"href",
"subscriptionType"
],
"properties": {
"href": {
"$ref": "#/definitions/LinkType"
},
"subscriptionType": {
"$ref": "#/definitions/SubscriptionType"
}
},
"description": "A link to a subscription."
},
"SubscriptionType": {
"type": "string",
"description": "Numeric value corresponding to specified type of subscription.",
"enum": [
"RESERVED",
"CELL_CHANGE",
"RAB_ESTABLISHMENT",
"RAB_MODIFICATION",
"RAB_RELEASE",
"MEAS_REPORT_UE",
"MEAS_TIMING_ADVANCE",
"CA_RECONF",
"S1_BEARE",
"WRONG_PARAMETER"
],
"example": "CELL_CHANGE"
},
"FilterCriteriaAssoc": {
"type": "object",
"properties": {
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"associateId": {
"$ref": "#/definitions/AssociateId"
},
"plmn": {
"$ref": "#/definitions/Plmn"
},
"cellId": {
"$ref": "#/definitions/CellId"
}
},
"description": "List of filtering criteria for the subscription."
},
"FilterCriteriaAssocQci": {
"type": "object",
"properties": {
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"associateId": {
"$ref": "#/definitions/AssociateId"
},
"plmn": {
"$ref": "#/definitions/Plmn"
},
"cellId": {
"$ref": "#/definitions/CellId"
},
"qci": {
"$ref": "#/definitions/Qci"
}
},
"description": "List of filtering criteria for the subscription."
},
"FilterCriteriaAssocHo": {
"type": "object",
"properties": {
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"associateId": {
"$ref": "#/definitions/AssociateId"
},
"plmn": {
"$ref": "#/definitions/Plmn"
},
"cellId": {
"$ref": "#/definitions/CellId"
},
"hoStatus": {
"$ref": "#/definitions/HoStatus"
}
},
"description": "List of filtering criteria for the subscription."
},
"FilterCriteriaAssocTri": {
"type": "object",
"properties": {
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"associateId": {
"$ref": "#/definitions/AssociateId"
},
"plmn": {
"$ref": "#/definitions/Plmn"
},
"cellId": {
"$ref": "#/definitions/CellId"
},
"trigger": {
"$ref": "#/definitions/Trigger"
}
},
"description": "List of filtering criteria for the subscription."
},
"S1BearerSubscriptionCriteria": {
"type": "object",
"properties": {
"associateId": {
"$ref": "#/definitions/AssociateId"
},
"plmn": {
"$ref": "#/definitions/Plmn"
},
"cellId": {
"$ref": "#/definitions/CellId"
},
"erabId": {
"$ref": "#/definitions/ErabId"
}
},
"description": "List of filtering criteria for the subscription."
},
"HoStatus": {
"type": "string",
"description": "Description of the subscribed to event",
"enum": [
"RESERVED",
"IN_PREPARATION",
"IN_EXECUTION",
"COMPLETED",
"REJECTED",
"CANCELLED"
],
"example": "COMPLETED"
},
"EventType": {
"type": "string",
"description": "Description of the subscribed event.",
"enum": [
"RESERVED",
"S1_BEARER_ESTABLISH",
"S1_BEARER_MODIFY",
"S1_BEARER_RELEASE"
],
"example": "S1_BEARER_ESTABLISH"
},
"Trigger": {
"type": "string",
"description": "Unique identifier for the mobile edge application instance",
"enum": [
"NOT_AVAILABLE",
"PERIODICAL_REPORT_STRONGEST_CELLS",
"PERIODICAL_REPORT_STRONGEST_CELLS_FOR_SON",
"PERIODICAL_REPORT_CGI",
"EVENT_A1",
"EVENT_A2",
"EVENT_A3",
"EVENT_A4",
"EVENT_A5",
"EVENT_A6",
"EVENT_B1",
"EVENT_B2",
"EVENT_C1",
"EVENT_C2",
"EVENT_W1",
"EVENT_W2",
"EVENT_W3"
],
"example": "EVENT_A3"
}
}
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/SAQ/ 0000775 0000000 0000000 00000000000 13523015620 0024317 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/SAQ/README.md 0000664 0000000 0000000 00000000000 13523015620 0025564 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/SRVSUB/ 0000775 0000000 0000000 00000000000 13523015620 0024717 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/SRVSUB/README.md 0000664 0000000 0000000 00000000000 13523015620 0026164 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/TIME/ 0000775 0000000 0000000 00000000000 13523015620 0024431 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/TIME/README.md 0000664 0000000 0000000 00000000000 13523015620 0025676 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/TRAF/ 0000775 0000000 0000000 00000000000 13523015620 0024427 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/TRAF/README.md 0000664 0000000 0000000 00000000000 13523015620 0025674 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/TRANS/ 0000775 0000000 0000000 00000000000 13523015620 0024562 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/TRANS/README.md 0000664 0000000 0000000 00000000000 13523015620 0026027 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UEAREASUB/ 0000775 0000000 0000000 00000000000 13523015620 0025207 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UEAREASUB/README.md 0000664 0000000 0000000 00000000000 13523015620 0026454 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UEDISTLOOK/ 0000775 0000000 0000000 00000000000 13523015620 0025355 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UEDISTLOOK/README.md 0000664 0000000 0000000 00000000000 13523015620 0026622 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UEDISTSUB/ 0000775 0000000 0000000 00000000000 13523015620 0025242 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UEDISTSUB/README.md 0000664 0000000 0000000 00000000000 13523015620 0026507 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UEINFLOOK/ 0000775 0000000 0000000 00000000000 13523015620 0025226 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UEINFLOOK/README.md 0000664 0000000 0000000 00000000000 13523015620 0026473 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UEINFSUB/ 0000775 0000000 0000000 00000000000 13523015620 0025113 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UEINFSUB/README.md 0000664 0000000 0000000 00000000000 13523015620 0026360 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UELOC/ 0000775 0000000 0000000 00000000000 13523015620 0024542 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UELOC/README.md 0000664 0000000 0000000 00000000000 13523015620 0026007 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UELOCSUB/ 0000775 0000000 0000000 00000000000 13523015620 0025114 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UELOCSUB/README.md 0000664 0000000 0000000 00000000000 13523015620 0026361 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETAG/ 0000775 0000000 0000000 00000000000 13523015620 0024540 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETAG/PlatUeIdentity.robot 0000664 0000000 0000000 00000017140 13523015620 0030516 0 ustar 00root root 0000000 0000000 ''[Documentation] robot --outputdir ../../outputs ./PlatUeIdentity.robot
... Test Suite to validate UE Identity Tag (UETAG) operations.
*** Settings ***
Resource environment/variables.txt
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
... 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
Get UE Identity Tag information
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ueIdentityTagInfo
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
... 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
Get UE Identity Tag information using bad parameters
Check HTTP Response Status Code Is 400
Check ProblemDetails 400
Request UE Identity Tag information using non-existent application instance
[Documentation] TC_MEC_SRV_UETAG_001_NF
... 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
Get UE Identity Tag information using non-existent application instance
Check HTTP Response Status Code Is 404
Check ProblemDetails 404
Register an UE Identity Tag
[Documentation] TP_MEC_SRV_UETAG_002_OK
... 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
Update an UE Identity Tag {"ueIdentityTags":[{"ueIdentityTag":"${UE_IDENTITY_TAG}","state":"REGISTERED"}]}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is UeIdentityTagInfo
Log Checking Postcondition
Check User Identity Tag state ${UE_IDENTITY_TAG} REGISTERED
Register an UE Identity Tag using invalid state
[Documentation] TP_MEC_SRV_UETAG_002_BR
... 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
Update an UE Identity Tag using invalid state {"ueIdentityTags":[{"ueIdentityTag":"${UE_IDENTITY_TAG}","state":"INVALID_STATE"}]}
Check HTTP Response Status Code Is 400
Check ProblemDetails 400
Unregister an UE Identity Tag already in unregistered state
[Documentation] TP_MEC_SRV_UETAG_002_PF
... 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
Update an UE Identity Tag using a not applicable valid state {"ueIdentityTags":[{"ueIdentityTag":"${UE_IDENTITY_TAG_INVALID_STATE}","state":"UNREGISTERED"}]}
Check HTTP Response Status Code Is 412
Check ProblemDetails 412
*** Keywords ***
Get UE Identity Tag information
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 /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info?ueIdentityTag=${UE_IDENTITY_TAG}
${output}= Output response
Set Suite Variable ${response} ${output}
Get UE Identity Tag information using bad parameters
# FIXME Which IE protocol should be invalid?
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 /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info?ueIdentityTagERROR=${UE_IDENTITY_TAG}
${output}= Output response
Set Suite Variable ${response} ${output}
Get UE Identity Tag information using non-existent application instance
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 /exampleAPI/ui/v1/${NON_EXISTENT_APP_INSTANCE_ID}/ue_identity_tag_info?ueIdentityTag=${UE_IDENTITY_TAG}
${output}= Output response
Set Suite Variable ${response} ${output}
Update an UE Identity Tag
[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}"}
## As far as I understood, we are not checking preconditions.
# Preamble: Check that the user tag is not registered
## Check User Identity Tag state ${UE_IDENTITY_TAG} UNREGISTERED
log ${content}
Put /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info ${content}
${output}= Output response
Set Suite Variable ${response} ${output}
Update an UE Identity Tag using invalid state
[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}"}
# Test Body: Register the tag user and check that the IUT has registered the tag user
Put /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info ${content}
${output}= Output response
Set Suite Variable ${response} ${output}
Update an UE Identity Tag using a not applicable valid state
[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}"}
# Test Body: Register the tag user and check that the IUT has registered the tag user
Put /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info ${content}
${output}= Output response
Set Suite Variable ${response} ${output}
# TODO Check ProblemDetails
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETAG/README.md 0000664 0000000 0000000 00000000000 13523015620 0026005 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETAG/environment/ 0000775 0000000 0000000 00000000000 13523015620 0027104 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000001074 13523015620 0031540 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETAG/environment *** 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
${ZONE_ID} zone01
${APP_INSTANCE_ID} appInst01
${NON_EXISTENT_APP_INSTANCE_ID} appInst99
${UE_IDENTITY_TAG} UeTagA
${UE_IDENTITY_TAG_INVALID_STATE} UeTagC
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETAG/resources/ 0000775 0000000 0000000 00000000000 13523015620 0026552 5 ustar 00root root 0000000 0000000 LocationAPI.robot 0000664 0000000 0000000 00000000655 13523015620 0031652 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETAG/resources *** Settings ***
Resource ../environment/variables.txt
Resource LocationAPI.robot
#Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
Library JSONSchemaLibrary schemas/
*** Keywords ***
Check Location
[Arguments] ${value}
Log Check Location for userInfo element
Should be Equal ${response['body']['userInfo']['zoneId']} ${value}
Log Location OK
UEidentityAPI.robot 0000664 0000000 0000000 00000002475 13523015620 0032167 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETAG/resources *** 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 ***
Check User Identity Tag state
[Arguments] ${ue_identity_tag} ${state}
Should Be True ${PIC_MEC_PLAT} 1
Should Be True ${PIC_SERVICES} 1
Log Check ueIdentityTag state ${state}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Set Headers {"Content-Length":"0"}
Get /exampleAPI/ui/v1/${APP_INSTANCE_ID}/ue_identity_tag_info?ueIdentityTag=${ue_identity_tag}
${output}= Output response
Set Suite Variable ${response} ${output}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ueIdentityTagInfo
#Log Check ueIdentityTagsList for ${UE_IDENTITY_TAG} element
${result}= Should Be Present In Json List ${response['body']['ueIdentityTagInfo']['ueIdentityTags']} ueIdentityTag ${UE_IDENTITY_TAG}
#Log ${UE_IDENTITY_TAG} found with state ${result}
Should Be Equal ${result}[state] ${state}
[return] ${state}
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETAG/schemas/ 0000775 0000000 0000000 00000000000 13523015620 0026163 5 ustar 00root root 0000000 0000000 UeIdentityTagInfo.schema.json 0000664 0000000 0000000 00000005136 13523015620 0033576 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETAG/schemas {
"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"
},
"UeIdentityTagInfo": {
"description": "information of UE identity tag used in UE Identity feature",
"type": "object",
"required": [
"ueIdentityTags"
],
"properties": {
"ueIdentityTags": {
"$ref": "#/components/schemas/UeIdentityTags"
}
}
},
"UeIdentityTags": {
"description": "1 to N tags presented by a ME Application instance to a ME Platform",
"type": "array",
"items": {
"required": [
"ueIdentityTag",
"state"
],
"properties": {
"ueIdentityTag": {
"$ref": "#/components/schemas/UeIdentityTag"
},
"state": {
"$ref": "#/components/schemas/State"
}
}
}
},
"UeIdentityTag": {
"description": "Specific tag presented by a ME Application instance to a ME Platform",
"type": "string",
"example": "UeTagA"
},
"State": {
"description": "Status of the resource ueIdentityTagInfo",
"type": "string",
"enum": [
"UNREGISTERED",
"REGISTERED"
],
"example": "REGISTERED"
}
}
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETRACKSUB/ 0000775 0000000 0000000 00000000000 13523015620 0025343 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/SRV/UETRACKSUB/README.md 0000664 0000000 0000000 00000000000 13523015620 0026610 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/TODO.md 0000664 0000000 0000000 00000005017 13523015620 0024313 0 ustar 00root root 0000000 0000000 # MEC Testing Framework in Robo Framework - TODO list
## Introduction
This file provides the list of the TODOs related to the STF 569.
## SRV
### AMS
### APPSAQ
### APPSUB
### BWA
### DNS
### FAIS
### RLOC
### RNIS
Draft ETSI GS MEC 012 2.0.4
https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/SRV/RNIS/RnisSpecificSubscription_BV.tplan2
https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/SRV/RNIS/RnisSpecificSubscription_BV.tplan2
- TC_MEC_SRV_RNIS_011_OK To be tested
### SAQ
### SRVSUB
### TIME
### TRAF
### TRANS
### UEAREASUB
### UEDISTLOOK
Draft ETSI GS MEC 013 V2.0.3 (2018-10)
https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/remove-401s/Test%20Purposes/SRV/UEDISTSUB/PlatUeDistanceSubscription.tplan2
TODO TerminalDistance data structure not found
### UEDISTSUB
Draft ETSI GS MEC 013 V2.0.3 (2018-10)
https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/remove-401s/Test%20Purposes/SRV/UEDISTSUB/PlatUeDistanceSubscription.tplan2
TODO DistanceNotificationSubscription data structure not found
### UEINFLOOK
Draft ETSI GS MEC 013 V2.0.3 (2018-10)
https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/remove-401s/Test%20Purposes/SRV/UEINFLOOK/PlatUeInformationLookup.tplan2
### UEINFSUB
Draft ETSI GS MEC 013 V2.0.3 (2018-10)
https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/remove-401s/Test%20Purposes/SRV/UEINFSUB/PlatUeInformationSubscription.tplan2
### UELOC
Draft ETSI GS MEC 013 V2.0.3 (2018-10)
https://forge.etsi.org/gitlab/mec/MEC-tests/blob/master/Test%20Purposes/SRV/UELOC/PlatUeLocationLookup.tplan2
### UETAG
ETSI GS MEC 014 V1.1.1 (2018-02)
https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/SRV/UETAG/PlatUeIdentity.tplan2
- TC_MEC_SRV_UETAG_001_OK To be tested
- TC_MEC_SRV_UETAG_001_BR To be tested
- TC_MEC_SRV_UETAG_001_NF To be tested
- TC_MEC_SRV_UETAG_002_OK To be tested
- TC_MEC_SRV_UETAG_002_BR To be tested
- TC_MEC_SRV_UETAG_002_NF Done
- TC_MEC_SRV_UETAG_002_PF Done
### UETRACKSUB
Draft ETSI GS MEC 013 V2.0.3 (2018-10)
https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/remove-401s/Test%20Purposes/SRV/UETRACKSUB/PlatUeTrackingSubscription.tplan2
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/outputs/ 0000775 0000000 0000000 00000000000 13523015620 0024744 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/outputs/README.md 0000664 0000000 0000000 00000000001 13523015620 0026212 0 ustar 00root root 0000000 0000000
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/pics.txt 0000664 0000000 0000000 00000000236 13523015620 0024721 0 ustar 00root root 0000000 0000000 *** Variables ***
${PIC_MEC_PLAT} 1
${PIC_SERVICES} 1
${PIC_RNIS_QUERY} 1
${PIC_RNIS_SPECIFIC_SUBSCRIPTION} 1
${PIC_AMS} 1
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/red.xml 0000664 0000000 0000000 00000002033 13523015620 0024513 0 ustar 00root root 0000000 0000000
2
WORKSPACE
true
1024
true
true
false
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/requirements.txt 0000664 0000000 0000000 00000000453 13523015620 0026507 0 ustar 00root root 0000000 0000000 ###### List of required python libraries ######
## To install the libraries, use:
# pip -r requirements.txt
robotframework==3.1
RESTinstance==1.0.0rc4
robotframework-dependencylibrary==1.0.0.post1
robotframework-jsonlibrary==0.3
robotframework-jsonschemalibrary==1.0
robotframework-requests==0.5.0
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/schemas/ 0000775 0000000 0000000 00000000000 13523015620 0024644 5 ustar 00root root 0000000 0000000 ServiceInfoList.schema.json 0000664 0000000 0000000 00000001514 13523015620 0031770 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/schemas {
"type": "array",
"items": {
"type": "object",
"required": [
"serInstanceId",
"version",
"state",
"transportInfo",
"serializer"
],
"properties": {
"serInstanceId": {
"type": "string"
},
"serName": {
"type": "string"
},
"serCategory": {
"type": "string"
},
"version": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"ACTIVE",
"INACTIVE"
]
},
"transportInfo": {
"type": "string"
},
"serializer": {
"type": "string"
},
"scopeOfLocality": {
"type": "string"
},
"consumedLocalOnly": {
"type": "string"
},
"isLocal": {
"type": "string"
}
}
}
}
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/schemas/UserInfo.schema.json 0000664 0000000 0000000 00000004513 13523015620 0030533 0 ustar 00root root 0000000 0000000 {
"UserInfo": {
"description": "A type containing user information.",
"type": "object",
"required": [
"address",
"accessPointId",
"zoneId",
"resourceURL"
],
"properties": {
"address": {
"description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI).",
"type": "string",
"format": "uri",
"example": "acr:192.0.2.1"
},
"accessPointId": {
"description": "Identifier of access point, (reference ETSI TS 129 171). Where the E-CGI is made up of the PLMN and Cell Identity (28 bit string). Then the PLMN is made up of the 3 digit MCC & 2 or 3 digit MNC. The Cell Portion is an optional element",
"type": "string",
"example": "001010000000000000000000000000001"
},
"zoneId": {
"description": "Identifier of zone",
"type": "string",
"example": "zone01"
},
"resourceURL": {
"description": "Self referring URL.",
"type": "string",
"format": "uri",
"example": "http://example.com/exampleAPI/location/v1/subscriptions/userTracking/subscription123"
},
"locationInfo": {
"description": "A type containing location information with latitude, longitude and altitude, in addition the accuracy of the information are provided.",
"type": "object",
"required": [
"latitude",
"longitude",
"accuracy"
],
"properties": {
"latitude": {
"type": "number",
"format": "float",
"example": "80.123"
},
"longitude": {
"type": "number",
"format": "float",
"example": "70.123"
},
"altitude": {
"type": "number",
"format": "float",
"example": "10.0"
},
"accuracy": {
"type": "integer",
"format": "int32",
"example": "10"
}
}
},
"contextLocationInfo": {
"description": "Contextual information of a user location (e.g., aisle, floor, room number, etc.)",
"type": "string",
"example": "GroundFloor"
},
"ancillaryInfo": {
"description": "Reserved for future use.",
"type": "string"
}
}
}
} gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/scripts/ 0000775 0000000 0000000 00000000000 13523015620 0024710 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/scripts/launch-validation.sh 0000664 0000000 0000000 00000000241 13523015620 0030643 0 ustar 00root root 0000000 0000000 #!/bin/bash
echo "Starting check on ROBOT CODE"
for FILE in $(find . -name "*.robot"); do
echo "Syntax check on ${FILE}"
robot --dryrun -d /tmp ${FILE}
done
gs032p3-robot-test-suite-80c9d45b62d7f1b4adf5b7863b9ef1de4b1923f9/scripts/run-all.bash 0000664 0000000 0000000 00000001143 13523015620 0027120 0 ustar 00root root 0000000 0000000 #!/bin/bash
## Launch robot tests validator
/bin/bash /scripts/launch-validation.sh > logs/robot_stdout.log 2> logs/robot_stderr.log
## Filter failed Keywords
grep -r10n "| FAIL |" logs/robot_stdout.log | grep -v "Output:" | grep -v "Log:" | grep -v "Report:" > logs/failures.log
rm -f logs/robot_stdout.log
## Filter Errors on code
grep -rn " ERROR " logs/robot_stderr.log | grep -v "File has no tests or tasks" > logs/errors.log
rm -f logs/robot_stderr.log
ERRORS=`awk 'END{print NR}' logs/errors.log logs/failures.log`
if [ "${ERRORS}" -eq 0 ]; then
rm -f logs/errors.log
rm -f logs/failures.log
fi |