pax_global_header 0000666 0000000 0000000 00000000064 13543351427 0014521 g ustar 00root root 0000000 0000000 52 comment=0f26987f25b33026f877d2aa508b296bcc582f9c
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/ 0000775 0000000 0000000 00000000000 13543351427 0022732 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/.jenkins.sh 0000664 0000000 0000000 00000000354 13543351427 0025007 0 ustar 00root root 0000000 0000000 #!/bin/bash
# Copyright ETSI 2018
# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt
#set -vx
#set -e
cd "$(dirname "$0")"
run_dir="$(pwd)"
./scripts/build-container.sh
./scripts/run-container.sh "${run_dir}"
exit $?
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/GenericKeywords.robot 0000664 0000000 0000000 00000012417 13543351427 0027112 0 ustar 00root root 0000000 0000000 *** Settings ***
Library JSONSchemaLibrary schemas/
Library BuiltIn
Library REST ${AMS_SCHEMA}://${AMS_HOST}:${AMS_PORT} ssl_verify=false
Library OperatingSystem
*** 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
Check HTTP Response Header Contains
[Arguments] ${HEADER_TOCHECK}
Should Contain ${response['headers']} ${HEADER_TOCHECK}
Log Header is present
Check HTTP Response Body is Empty
Should Be Empty ${response['body']}
Log Body is empty
Check HTTP Response Contain Header with value
[Arguments] ${HEADER_TOCHECK} ${VALUE}
Check HTTP Response Header Contains ${HEADER_TOCHECK}
Should Be Equal As Strings ${value} ${response['headers']['Content-Type']}
vGET
[Arguments] ${uri}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
GET ${uri}
${output}= Output response
Set Suite Variable ${response} ${output}
vPOST
[Arguments] ${uri} ${content}
${file}= Catenate SEPARATOR= json/ ${content} .json
${body}= Get File ${file}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
POST ${uri} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
vPUT
[Arguments] ${uri} ${content}
${file}= Catenate SEPARATOR= json/ ${content} .json
${body}= Get File ${file}
# Retrieve the e-tag value to ensure a proper update.
vGET ${uri}
Set Headers {"If-Match":"${response['headers']['If-Match']}"}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
PUT ${uri} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
vPUT without e-tag
[Arguments] ${uri} ${content}
${file}= Catenate SEPARATOR= json/ ${content} .json
${body}= Get File ${file}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
PUT ${uri} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
vPUT invalid e-tag
[Arguments] ${uri} ${content}
${file}= Catenate SEPARATOR= json/ ${content} .json
${body}= Get File ${file}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Set Headers {"If-Match":"__some_invalid_value__"}
PUT ${uri} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
vDELETE
[Arguments] ${uri}
# Retrieve the e-tag value to ensure a proper delete.
vGET ${uri}
Set Headers {"If-Match":"${response['headers']['If-Match']}"}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
DELETE ${uri}
${output}= Output response
Set Suite Variable ${response} ${output}
vDELETE without e-tag
[Arguments] ${uri}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
DELETE ${uri}
${output}= Output response
Set Suite Variable ${response} ${output}
vDELETE invalid e-tag
[Arguments] ${uri}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Set Headers {"If-Match":"__some_invalid_value__"}
DELETE ${uri}
${output}= Output response
Set Suite Variable ${response} ${output}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/LICENSE 0000664 0000000 0000000 00000002703 13543351427 0023741 0 ustar 00root root 0000000 0000000 Copyright 2019 ETSI
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE. gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/ 0000775 0000000 0000000 00000000000 13543351427 0023352 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/GRANT/ 0000775 0000000 0000000 00000000000 13543351427 0024225 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/GRANT/Grant.robot 0000664 0000000 0000000 00000010606 13543351427 0026352 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 ../../GenericKeywords.robot
Library REST ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT} ssl_verify=false
Library OperatingSystem
*** Test Cases ***
Request a new Grant - Synchronous mode
[Documentation] TP_MEC_MEO_GRANT_001_OK
... 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)
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Create a GRANT request grantRequest
Check HTTP Response Status Code Is 201
Check HTTP Response Header Contains Location
Check HTTP Response Body Json Schema Is Grant
Request a new Grant - Malformed request
[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)
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Create a GRANT request grantRejectedRequest
Check HTTP Response Status Code Is 400
Request a new Grant - Asynchronous mode
[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)
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Create a GRANT request grantRequest
Check HTTP Response Status Code Is 202
Check HTTP Response Header Contains Location
Check HTTP Response Body is Empty
Request an individual grant - Ongoing process
[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
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an individual grant ${grantId}
Check HTTP Response Status Code Is 202
Check HTTP Response Header Contains Location
Check HTTP Response Body is Empty
Request an individual grant using non existant grant identifier
[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
[Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an individual grant ${non_existant_grant_id}
Check HTTP Response Status Code Is 404
Request an individual grant - Successful
[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
*** Keywords ***
Create a GRANT request
[Arguments] ${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}/grants ${body} allow_redirects=false
${output}= Output response
Set Suite Variable ${response} ${output}
Get an individual grant
[Arguments] ${grantId}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/grants/${grantId} allow_redirects=false
${output}= Output response
Set Suite Variable ${response} ${output}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/GRANT/README.md 0000664 0000000 0000000 00000000000 13543351427 0025472 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/GRANT/environment/ 0000775 0000000 0000000 00000000000 13543351427 0026571 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000001463 13543351427 0031227 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/GRANT/environment *** Variables ***
# Generic variables
${MEO_SCHEMA} http
${MEO_HOST} 10.192.2.172
${MEO_PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${apiRoot}
${apiName} granting
${apiVersion} v1
# Specific variables
${grantId} e0deee2b-6e50-4f33-ab09-8bf0585025d3
${non_existant_grant_id} non_existant_grant_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} /granting/subscriptions
${callback_endpoint_error} /subs_404
${total_polling_time} 2 min
${polling_interval} 10 sec gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/GRANT/jsons/ 0000775 0000000 0000000 00000000000 13543351427 0025361 5 ustar 00root root 0000000 0000000 grantRejectedRequest.json 0000664 0000000 0000000 00000000002 13543351427 0032317 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/GRANT/jsons {} gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/GRANT/jsons/grantRequests.json0000664 0000000 0000000 00000000003 13543351427 0031114 0 ustar 00root root 0000000 0000000 {
} gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/GRANT/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0025650 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/GRANT/schemas/Grant.json 0000664 0000000 0000000 00000000002 13543351427 0027606 0 ustar 00root root 0000000 0000000 {} gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/ 0000775 0000000 0000000 00000000000 13543351427 0024110 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/PackageManagement.robot 0000664 0000000 0000000 00000043057 13543351427 0030520 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 ../../GenericKeywords.robot
Library REST ${MEO_SCHEMA}://${MEO_HOST}:${MEO_PORT} ssl_verify=false
Library BuiltIn
Library OperatingSystem
Library MockServerLibrary
*** Test Cases ***
Create new App Package Resource
[Documentation] TP_MEC_MEO_PKGM_001_OK
... 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}
Create new App Package Resource using malformed request
[Documentation] TP_MEC_MEO_PKGM_001_BR
... 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
Request all APP Packages
[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}
Request all APP Packages using bad attribute-based filtering parameter
[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
Request an individual APP Package
[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}
Request an individual APP Package using wrong identifier
[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
Remove an individual APP Package
[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
Remove an individual APP Package using wrong identifier
[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
Request a Operational state update on an APP Package
[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
Request a Operational state update on an APP Package using wrong operation value
[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
Request a Operational state update on a non onboarded APP Package
[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
Request the App Descriptor of an App Package
[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}
Request the App Descriptor of an App Package using a non onboarded APP Package
[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
Create a new App Packages Subscription
[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}
Create a new App Packages Subscription with malformed parameter
[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
Request all App Package subscriptions
[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}
Request a specific App Package subscription
[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}
Request a specific App Package subscription using non existant subscription identifier
[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
Remove a APP Package subscription
[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
Remove a APP Package subscription using non existant subscription id
[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
Post Application Package Notification
[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}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/README.md 0000664 0000000 0000000 00000000000 13543351427 0025355 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/environment/ 0000775 0000000 0000000 00000000000 13543351427 0026454 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/environment/variables.txt0000664 0000000 0000000 00000003474 13543351427 0031175 0 ustar 00root root 0000000 0000000 *** Variables ***
# Generic variables
${MEO_SCHEMA} http
${MEO_HOST} 10.192.2.172
${MEO_PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${apiRoot}
${apiName} apmi
${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
${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
${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
${SUBSCRIPTION_TYPE} MobilityProcedureSubscription
${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-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/jsons/ 0000775 0000000 0000000 00000000000 13543351427 0025244 5 ustar 00root root 0000000 0000000 AppPkgSubscription.json 0000664 0000000 0000000 00000000000 13543351427 0031635 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/jsons CreateAppPackage.json 0000664 0000000 0000000 00000000002 13543351427 0031170 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/jsons {} MalformedAppPkg.json 0000664 0000000 0000000 00000000000 13543351427 0031057 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/jsons MalformedAppPkgSubscription.json 0000664 0000000 0000000 00000000000 13543351427 0033464 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/jsons gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0025533 5 ustar 00root root 0000000 0000000 AppPkgSubscriptionInfo.json 0000664 0000000 0000000 00000000000 13543351427 0032740 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/schemas AppPkgSubscriptionLinkList.json 0000664 0000000 0000000 00000000000 13543351427 0033576 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/schemas OnboardedAppPkgInfo.json 0000664 0000000 0000000 00000000000 13543351427 0032151 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/schemas OnboardedAppPkgInfos.json 0000664 0000000 0000000 00000000000 13543351427 0032334 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/PKGM/schemas gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPCTX/ 0000775 0000000 0000000 00000000000 13543351427 0024603 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPCTX/README.md 0000664 0000000 0000000 00000000000 13543351427 0026050 0 ustar 00root root 0000000 0000000 SysUeAppsContext.robot 0000664 0000000 0000000 00000015437 13543351427 0031046 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPCTX ''[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 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['callbackReference']}= ${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['callbackReference']}= '' # 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['callbackReference']}= ${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
[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}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPCTX/environment/ 0000775 0000000 0000000 00000000000 13543351427 0027147 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000003036 13543351427 0031603 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPCTX/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
${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
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPCTX/resources/ 0000775 0000000 0000000 00000000000 13543351427 0026615 5 ustar 00root root 0000000 0000000 UeAppsContextAPI.robot 0000664 0000000 0000000 00000002613 13543351427 0032703 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPCTX/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 ***
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
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPCTX/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0026226 5 ustar 00root root 0000000 0000000 UEAppInterfaceAPI.schema.json 0000664 0000000 0000000 00000045341 13543351427 0033435 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPCTX/schemas {
"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"
}
}
}
}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPS/ 0000775 0000000 0000000 00000000000 13543351427 0024347 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPS/README.md 0000664 0000000 0000000 00000000000 13543351427 0025614 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEO/UEAPPS/SysUeApplications.robot0000664 0000000 0000000 00000007447 13543351427 0031051 0 ustar 00root root 0000000 0000000 ''[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 wrong 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}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/ 0000775 0000000 0000000 00000000000 13543351427 0023470 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/ 0000775 0000000 0000000 00000000000 13543351427 0024226 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/PackageManagement.robot 0000664 0000000 0000000 00000033046 13543351427 0030633 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 ../../GenericKeywords.robot
Library REST ${MEPM_SCHEMA}://${MEPM_HOST}:${MEPM_PORT} ssl_verify=false
Library BuiltIn
Library OperatingSystem
Library MockServerLibrary
*** Test Cases ***
Request all APP Packages
[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)
[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}
Request all APP Packages using bad attribute-based filtering parameter
[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
Request an individual APP Package
[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)
[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}
Request an individual APP Package using wrong identifier
[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
[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
Request the App Descriptor of an App Package
[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
[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}
##TODO: How to check content returned?
Request the App Descriptor of an App Package using a non onboarded APP Package
[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
[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
Request the Content of an onboarded App Package
[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
[Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get the Content from an App Package identified by ${ON_BOARDED_APP_PKG_ID}
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
[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
[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
Create a new App Packages Subscription
[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
... 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}
Create a new App Packages Subscription with malformed parameter
[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
Request all App Package subscriptions
[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
... 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}
Request a specific App Package subscription
[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
... 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}
Request a specific App Package subscription using non existant subscription identifier
[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
[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
Remove a APP Package subscription
[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
[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
Remove a APP Package subscription using non existant subscription id
[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
[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
Post Application Package Notification
[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}
*** Keywords ***
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}
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}/app_descriptor
${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}
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} gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/README.md 0000664 0000000 0000000 00000000000 13543351427 0025473 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/environment/ 0000775 0000000 0000000 00000000000 13543351427 0026572 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000003477 13543351427 0031237 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/environment *** Variables ***
# Generic variables
${MEPM_SCHEMA} http
${MEPM_HOST} 10.192.2.172
${MEPM_PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${apiRoot}
${apiName} apmi
${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
${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
${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 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/jsons/ 0000775 0000000 0000000 00000000000 13543351427 0025362 5 ustar 00root root 0000000 0000000 AppPkgSubscription.json 0000664 0000000 0000000 00000000000 13543351427 0031753 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/jsons CreateAppPackage.json 0000664 0000000 0000000 00000000002 13543351427 0031306 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/jsons {} MalformedAppPkg.json 0000664 0000000 0000000 00000000000 13543351427 0031175 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/jsons MalformedAppPkgSubscription.json 0000664 0000000 0000000 00000000000 13543351427 0033602 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/jsons gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0025651 5 ustar 00root root 0000000 0000000 AppPkgSubscriptionInfo.json 0000664 0000000 0000000 00000000000 13543351427 0033056 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/schemas AppPkgSubscriptionLinkList.json 0000664 0000000 0000000 00000000000 13543351427 0033714 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/schemas OnboardedAppPkgInfo.json 0000664 0000000 0000000 00000000000 13543351427 0032267 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/schemas OnboardedAppPkgInfos.json 0000664 0000000 0000000 00000000000 13543351427 0032452 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEPM/PKGM/schemas gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ 0000775 0000000 0000000 00000000000 13543351427 0023363 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/ 0000775 0000000 0000000 00000000000 13543351427 0024012 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/ANY.robot 0000664 0000000 0000000 00000016644 13543351427 0025523 0 ustar 00root root 0000000 0000000 *** Settings ***
Resource environment/variables.txt
Resource ../../GenericKeywords.robot
Library REST ${PROVIDER_SCHEMA}://${PROVIDER_HOST}:${PROVIDER_PORT} ssl_verify=false
Library BuiltIn
Library OperatingSystem
Library Collections
Library String
*** Variable ***
@{data} https|localhost|8080|/alcmi/v1/app_instances|POST|{"key":"value"} https|localhost|8080|/alcmi/v1/app_instances|GET https|localhost|8080|/alcmi/v1/app_instances|PUT
${token} Bearer InvalidToken
*** Test Cases ***
Request access to all resources using no token
[Documentation] TP_MEC_MEX_ANY_001_NT
... Check that a MEC API provider responds with an error when it
... receives a request without token
... ETSI GS MEC 009 1.1.1, clause 6.16.1
[Tags] GENERIC_TESTS INCLUDE_UNDEFINED_SCHEMAS
: FOR ${INDEX} IN RANGE 0 3
\ @{list} Split String ${data[${INDEX}]} separator=| max_split=-1
\ Perform a generic request using no token @{list[${INDEX}]}
\ Perform a generic request using invalid token @{data[${INDEX}]}
*** Keywords ***
Perform a generic request using no token
[Arguments] @{params}
Run Keyword If '@{params[4]}' == "POST"
... Perform a POST using no token ${params[0]} ${params[1]} ${params[2]} ${params[3]} ${params[5]}
Run Keyword If '@{params[4]}' == "GET"
... Perform a GET using no token ${params[0]} ${params[1]} ${params[2]} ${params[3]}
Run Keyword If '@{params[4]}' == "DELETE"
... Perform a DELETE using no token ${params[0]} ${params[1]} ${params[2]} ${params[3]}
Run Keyword If '@{params[4]}' == "PUT"
... Perform a PUT using no token ${params[0]} ${params[1]} ${params[2]} ${params[3]} ${params[5]}
Run Keyword If '@{params[4]}' == "PATCH"
... Perform a PATCH using no token ${params[0]} ${params[1]} ${params[2]} ${params[3]} ${params[5]}
Perform a generic request using invalid token
[Arguments] @{params}
Run Keyword If '@{params[4]}' == "POST"
... Perform a POST using invalid token ${token} ${params[0]} ${params[1]} ${params[2]} ${params[3]} ${params[5]}
Run Keyword If '@{params[4]}' == "GET"
... Perform a GET using invalid token ${token} ${params[0]} ${params[1]} ${params[2]} ${params[3]}
Run Keyword If '@{params[4]}' == "DELETE"
... Perform a DELETE using invalid token ${token} ${params[0]} ${params[1]} ${params[2]} ${params[3]}
Run Keyword If '@{params[4]}' == "PUT"
... Perform a PUT using invalid token ${token} ${params[0]} ${params[1]} ${params[2]} ${params[3]} ${params[5]}
Run Keyword If '@{params[4]}' == "PATCH"
... Perform a PATCH using invalid token ${token} ${params[0]} ${params[1]} ${params[2]} ${params[3]} ${params[5]}
Perform a POST using no token
[Arguments] ${schema} ${ip} ${port} ${uri} ${payload}
Log "Running post"
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
POST ${schema}://${ip}:${port}/${uri} ${payload}
Log ${schema}://${ip}:${port}/${uri} ${payload}
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
Perform a GET using no token
[Arguments] ${schema} ${ip} ${port} ${uri}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Log ${schema}://${ip}:${port}/${uri}
GET ${schema}://${ip}:${port}/${uri}
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
Perform a DELETE using no token
[Arguments] ${schema} ${ip} ${port} ${uri}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Log ${schema}://${ip}:${port}/${uri}
DELETE ${schema}://${ip}:${port}/${uri}
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
Perform a PUT using no token
[Arguments] ${schema} ${ip} ${port} ${uri} ${payload}=None
Log "Running post"
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Log ${schema}://${ip}:${port}/${uri} ${payload}
PUT ${schema}://${ip}:${port}/${uri} ${payload}
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
Perform a PATCH using no token
[Arguments] ${schema} ${ip} ${port} ${uri} ${payload}=None
Log "Running post"
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Log ${schema}://${ip}:${port}/${uri} ${payload}
PATCH ${schema}://${ip}:${port}/${uri} ${payload}
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
Perform a POST using invalid token
[Arguments] ${token} ${schema} ${ip} ${port} ${uri} ${payload}=None
Set Headers {"Accept":"application/json"}
Set Headers {"Authorization":"${token}"}
Set Headers {"Content-Type":"application/json"}
Log ${schema}://${ip}:${port}/${uri} ${payload}
POST ${schema}://${ip}:${port}/${uri} ${payload}
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
Perform a GET using invalid token
[Arguments] ${token} ${schema} ${ip} ${port} ${uri}
Set Headers {"Accept":"application/json"}
Set Headers {"Authorization":"${token}"}
Set Headers {"Content-Type":"application/json"}
Log ${schema}://${ip}:${port}/${uri}
GET ${schema}://${ip}:${port}/${uri}
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
Perform a DELETE using invalid token
[Arguments] ${token} ${schema} ${ip} ${port} ${uri}
Set Headers {"Accept":"application/json"}
Set Headers {"Authorization":"${token}"}
Set Headers {"Content-Type":"application/json"}
Log ${schema}://${ip}:${port}/${uri}
DELETE ${schema}://${ip}:${port}/${uri}
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
Perform a PUT using invalid token
[Arguments] ${token} ${schema} ${ip} ${port} ${uri} ${payload}=None
Set Headers {"Accept":"application/json"}
Set Headers {"Authorization":"${token}"}
Set Headers {"Content-Type":"application/json"}
Log ${schema}://${ip}:${port}/${uri} ${payload}
PUT ${schema}://${ip}:${port}/${uri} ${payload}
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
Perform a PATCH using invalid token
[Arguments] ${token} ${schema} ${ip} ${port} ${uri} ${payload}=None
Set Headers {"Accept":"application/json"}
Set Headers {"Authorization":"${token}"}
Set Headers {"Content-Type":"application/json"}
Log ${schema}://${ip}:${port}/${uri} ${payload}
PATCH ${schema}://${ip}:${port}/${uri} ${payload}
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/README.md 0000664 0000000 0000000 00000000000 13543351427 0025257 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/environment/ 0000775 0000000 0000000 00000000000 13543351427 0026356 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/environment/resources.txt 0000664 0000000 0000000 00000000442 13543351427 0031131 0 ustar 00root root 0000000 0000000 {
["https", "localhost", "8080", "/alcmi/v1/app_instances", "POST", "{}"],
["https", "localhost", "8080", "/alcmi/v1/app_instances", "GET", ""],
["https", "localhost", "8080", "/alcmi/v1/app_instances", "PUT", "{}"],
["https", "localhost", "8080", "/alcmi/v1/app_instances", "DELETE", ""]
} gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/environment/variables.txt 0000664 0000000 0000000 00000000607 13543351427 0031072 0 ustar 00root root 0000000 0000000 *** Variables ***
# Generic variables
${PROVIDER_SCHEMA} http
${PROVIDER_HOST} 10.192.2.172
${PROVIDER_PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${apiRoot}
${apiName} apmi
${apiVersion} v1
${INVALID_TOKEN} INVALID_TOKEN gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/jsons/ 0000775 0000000 0000000 00000000000 13543351427 0025146 5 ustar 00root root 0000000 0000000 AppPkgSubscription.json 0000664 0000000 0000000 00000000000 13543351427 0031537 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/jsons CreateAppPackage.json 0000664 0000000 0000000 00000000002 13543351427 0031072 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/jsons {} gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/jsons/MalformedAppPkg.json0000664 0000000 0000000 00000000000 13543351427 0031040 0 ustar 00root root 0000000 0000000 MalformedAppPkgSubscription.json 0000664 0000000 0000000 00000000000 13543351427 0033366 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/jsons gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0025435 5 ustar 00root root 0000000 0000000 AppPkgSubscriptionInfo.json 0000664 0000000 0000000 00000000000 13543351427 0032642 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/schemas AppPkgSubscriptionLinkList.json 0000664 0000000 0000000 00000000000 13543351427 0033500 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/schemas OnboardedAppPkgInfo.json 0000664 0000000 0000000 00000000000 13543351427 0032053 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/schemas OnboardedAppPkgInfos.json 0000664 0000000 0000000 00000000000 13543351427 0032236 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/ANY/schemas gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/ 0000775 0000000 0000000 00000000000 13543351427 0023776 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/LifeCycleManagement.robot 0000664 0000000 0000000 00000054702 13543351427 0030711 0 ustar 00root root 0000000 0000000 *** Settings ***
Resource environment/variables.txt
Resource ../../GenericKeywords.robot
Library REST ${MEX_SCHEMA}://${MEX_HOST}:${MEX_PORT} ssl_verify=false
Library BuiltIn
Library OperatingSystem
Library MockServerLibrary
*** Test Cases ***
Create new App Package Resource
[Documentation] TP_MEC_MEX_LCM_001_OK
... Check that MEC API provider creates a new App Instance when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.5.1.3.1
... ETSI GS MEC 010-2 2.0.10, Table 6.2.2.3.2-1 (CreateAppInstanceRequest)
... ETSI GS MEC 010-2 2.0.10, Table 6.2.2.4.2-1 (AppInstanceInfo)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Post Request to 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
Check Result Contains ${response} appDId ${APPD_ID}
Check Result Contains ${response} instantiationState ${INSTANTIATION_STATE}
Create new App Instance using malformed request
[Documentation] TP_MEC_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.0.10, clause 7.5.1.3.1
... ETSI GS MEC 010-2 2.0.10, Table 6.2.2.3.2-1 (CreateAppInstanceRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Post Request to create new App instance MalformedAppInstanceRequest
Check HTTP Response Status Code Is 400
Request all APP Instances
[Documentation] TP_MEC_MEX_LCM_002_OK
... Check that MEC API provider retrieves the list of App instances when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.5.1.3.2
... ETSI GS MEC 010-2 2.0.10, Table 6.2.2.4.2-1 (AppInstanceInfo)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
GET all APP instances
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppInstanceInfos
Check Result Contains ${response} appInstanceId ${APP_INSTANCE_ID}
Request an individual APP instance
[Documentation] TP_MEC_MEX_LCM_003_OK
... Check that MEC API provider retrieves an App Instance when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.5.2.3.2
... ETSI GS MEC 010-2 2.0.10, Table 6.2.2.4.2-1 (AppInstanceInfo)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
GET an APP instance identified by ${APP_INSTANCE_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is OnboardedAppPkgInfo
Check Result Contains ${response} appInstanceId ${APP_INSTANCE_ID}
Request an individual APP instance using wrong identifier
[Documentation] TP_MEC_MEX_LCM_003_NF
... Check that MEC API provider fails on retrieving an App Instance when requested using wrong appInstanceId
... ETSI GS MEC 010-2 2.0.10, clause 7.5.2.3.2
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
GET an APP instance identified by ${NON_EXISTENT_APP_INSTANCE_ID}
Check HTTP Response Status Code Is 404
Remove an individual APP instance
[Documentation] TP_MEC_MEX_LCM_004_OK
... Check that MEC API provider service deletes an App Instance when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.5.2.3.4
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Delete an individual APP instance identified by ${APP_INSTANCE_ID}
Check HTTP Response Status Code Is 204
Check HTTP Response Body is Empty
Remove an individual APP Package using wrong identifier
[Documentation] TP_MEC_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.0.10, clause 7.5.2.3.2
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Delete an individual APP instance identified by ${NON_EXISTENT_APP_INSTANCE_ID}
Check HTTP Response Status Code Is 404
Instantiate an APP instance
[Documentation] TP_MEC_MEX_LCM_005_OK
... Check that MEC API provider service instantiates an App Instance when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.5.6.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.7.2-1 (InstantiateAppRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for APP instantiation ${APP_INSTANCE_ID} InstantiateAppRequest
Check HTTP Response Status Code Is 202
Check HTTP Response Header Contains Location
Check HTTP Response Body is Empty
Instantiate an APP instance using malformed parameters
[Documentation] TP_MEC_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.0.10, clause 7.5.6.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.7.2-1 (InstantiateAppRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for APP instantiation ${APP_INSTANCE_ID} MalformedInstantiateAppRequest
Check HTTP Response Status Code Is 400
Instantiate a not existant APP instance
[Documentation] TP_MEC_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.0.10, clause 7.5.6.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.7.2-1 (InstantiateAppRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for APP instantiation ${NON_EXISTENT_APP_INSTANCE_ID} InstantiateAppRequest
Check HTTP Response Status Code Is 404
Terminate an APP instance
[Documentation] TP_MEC_MEX_LCM_006_OK
... Check that MEC API provider service terminates an App Instance when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.5.7.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.9.2-1 (TerminateAppRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for APP termination ${APP_INSTANCE_ID} TerminateAppRequest
Check HTTP Response Status Code Is 202
Check HTTP Response Header Contains Location
Check HTTP Response Body is Empty
Terminate an APP instance using malformed parameters
[Documentation] TP_MEC_MEX_LCM_006_BR
... Check that MEC API provider service fails to terminate an App Instance
... when it receives a malformed request
... ETSI GS MEC 010-2 2.0.10, clause 7.5.7.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.9.2-1 (TerminateAppRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for APP termination ${APP_INSTANCE_ID} MalformedTerminateAppRequest
Check HTTP Response Status Code Is 400
Terminate a not existant APP instance
[Documentation] TP_MEC_MEX_LCM_006_NF
... heck 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.0.10, clause 7.5.7.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.9.2-1 (TerminateAppRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for APP instantiation ${NON_EXISTENT_APP_INSTANCE_ID} TerminateAppRequest
Check HTTP Response Status Code Is 404
Change status of an APP instance
[Documentation] TP_MEC_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/START
... ETSI GS MEC 010-2 2.0.10, clause 7.5.8.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.8.2-1 (OperateAppRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for APP operation ${APP_INSTANCE_ID} OperateAppRequest
Check HTTP Response Status Code Is 202
Check HTTP Response Header Contains Location
Check HTTP Response Body is Empty
Change status of an APP instance using malformed parameters
[Documentation] TP_MEC_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.0.10, clause 7.5.8.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.8.2-1 (OperateAppRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for APP termination ${APP_INSTANCE_ID} MalformedOperateAppRequest
Check HTTP Response Status Code Is 400
Change status on a not existant APP instance
[Documentation] TP_MEC_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.0.10, clause 7.5.8.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.8.2-1 (OperateAppRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for APP instantiation ${NON_EXISTENT_APP_INSTANCE_ID} OperateAppRequest
Check HTTP Response Status Code Is 404
Request list of LCM Operation Occurrencies
[Documentation] TP_MEC_MEX_LCM_008_OK
... Check that MEC API provider service retrieves info about LCM Operation Occurrency on App Instances when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.5.9.1.3.2
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.14.2-1 (AppInstanceLcmOpOcc)
...
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for APP instance LCM Operation Occurrencies
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppInstanceLcmOpOccs
Check Result Contains ${response} appLcmOpOccId ${APP_LCM_OP_OCC_ID}
Request a specific LCM Operation Occurrency
[Documentation] TP_MEC_MEX_LCM_009_OK
... Check that MEC API provider service retrieves info about LCM Operation Occurrency on an App Instance when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.5.10.1.3.2
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.14.2-1 (AppInstanceLcmOpOcc)
...
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for a specific LCM Operation Occurrency ${APP_LCM_OP_OCC_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppInstanceLcmOpOcc
Check Result Contains ${response} appLcmOpOccId ${APP_LCM_OP_OCC_ID}
Request a specific LCM Operation Occurrency using a non existant identifier
[Documentation] TP_MEC_MEX_LCM_009_NF
... Check that MEC API provider service sends an error when it receives a query
... for a not existing LCM Operation Occurrency
... ETSI GS MEC 010-2 2.0.10, clause 7.5.10.1.3.2
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for a specific LCM Operation Occurrency ${NON_EXISTANT_APP_LCM_OP_OCC_ID}
Check HTTP Response Status Code Is 404
Create a new LifeCycleManagement Subscription
[Documentation] TP_MEC_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
... - AppLcmOpOccStateChangeSubscription
... ETSI GS MEC 010-2 2.0.10, clause 7.5.3.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.13.2-1 (AppInstSubscriptionRequest)
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.10.2-1 (AppInstSubscriptionInfo)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for a subscription AppInstSubscriptionRequest
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is AppPkgSubscriptionInfo
Check Result Contains ${response} subscriptionType AppInstanceStateChangeSubscription
Check Result Contains ${response} callbackUri ${CALLBACK_URI}
Create a new LifeCycleManagement Subscription with malformed parameter
[Documentation] TP_MEC_MEO_PKGM_007_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.0.10, clause 7.5.3.3.1
... EETSI GS MEC 010-2 2.0.10, table 6.2.2.13.2-1 (AppInstSubscriptionRequest)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Send a request for a subscription MalformedAppInstSubscriptionRequest
Check HTTP Response Status Code Is 400
Request all LifeCycleManagement Subscriptions
[Documentation] TP_MEC_MEX_LCM_011_OK
... Check that MEC API provider service sends the list of LCM Subscriptions when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.5.3.3.2
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.13.2-1 (AppInstSubscriptionRequest)
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.15.2-1 (AppLcmOpOccSubscriptionRequest)
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.10.2-1 (AppInstSubscriptionInfo)
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.16.2-1 (AppLcmOpOccSubscriptionInfo)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
##TODO: How to handle cases when different types of schemas can be returned?
Get all LifeCycleManagement subscriptions
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppInstSubscriptionLinkList
Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID}
Request a specific LifeCycleManagement subscription
[Documentation] TP_MEC_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.0.10, clause 7.5.4.3.2
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.10.2-1 (AppInstSubscriptionInfo)
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.16.2-1 (AppLcmOpOccSubscriptionInfo)
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an individual LCM subscription ${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppInstSubscriptionInfo
Check Result Contains ${response} subscriptionId ${SUBSCRIPTION_ID}
Request a specific LifeCycleManagement subscription using non existant subscription identifier
[Documentation] TP_MEC_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.0.10, clause 7.5.3.3.2
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Get an individual LCM subscription ${NON_EXISTENT_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
Remove a LifeCycleManagement subscription
[Documentation] TP_MEC_MEX_LCM_013_OK
... Check that MEC API provider service delete an existing LCM Subscription when requested
... ETSI GS MEC 010-2 2.0.10, clause 7.3.4.3.4
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Delete an LCM Subscription identified by ${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
Check HTTP Response Body is Empty
Remove a APP Package subscription using non existant subscription id
[Documentation] TP_MEC_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.0.10, clause 7.5.3.3.4
[Tags] PIC_APP_LCM_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS
Delete an LCM Subscription identified by ${NON_EXISTENT_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
Post Application Package Notification
[Documentation] TP_MEC_MEX_LCM_014_OK
... Check that MEC API provider sends a notification to the subscriber when an application lcm change event occurs
... ETSI GS MEC 010-2 2.0.10, clause 7.5.5.3.1
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.18.2-1, // AppLcmOpOccNotification
... ETSI GS MEC 010-2 2.0.10, table 6.2.2.12.2-1 // AppInstNotification
${json}= Get File schemas/LCMNotification.schema.json
Log Creating mock request and response to handle LCM 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 instance
[Arguments] ${content}
Log Creating a new App Instance
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Post ${apiRoot}/${apiName}/${apiVersion}/app_instances ${content} allow_redirects=false
${output}= Output response
Set Suite Variable ${response} ${output}
GET all APP instances
Log Getting all App Instances
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/app_instances
${output}= Output response
Set Suite Variable ${response} ${output}
GET an APP instance 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_instances/${value}
${output}= Output response
Set Suite Variable ${response} ${output}
Delete an individual APP instance 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_instances/${value}
${output}= Output response
Set Suite Variable ${response} ${output}
Send a request for APP instantiation
[Arguments] ${appInstanceId} ${content}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
POST ${apiRoot}/${apiName}/${apiVersion}/app_instances/${appInstanceId}/instantiate ${content}
${output}= Output response
Set Suite Variable ${response} ${output}
Send a request for APP termination
[Arguments] ${appInstanceId} ${content}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
POST ${apiRoot}/${apiName}/${apiVersion}/app_instances/${appInstanceId}/terminate ${content}
${output}= Output response
Set Suite Variable ${response} ${output}
Send a request for APP operation
[Arguments] ${appInstanceId} ${content}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
POST ${apiRoot}/${apiName}/${apiVersion}/app_instances/${appInstanceId}/operate ${content}
${output}= Output response
Set Suite Variable ${response} ${output}
Send a request for APP instance LCM Operation Occurrencies
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
GET ${apiRoot}/${apiName}/${apiVersion}/app_lcm_op_occs
${output}= Output response
Set Suite Variable ${response} ${output}
Send a request for a specific LCM Operation Occurrency
[Arguments] ${appLcmOpOccId}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
GET ${apiRoot}/${apiName}/${apiVersion}/app_lcm_op_occs/${appLcmOpOccId}
${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 LifeCycleManagement 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 LCM subscription
[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 LCM 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} gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/README.md 0000664 0000000 0000000 00000000000 13543351427 0025243 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/environment/ 0000775 0000000 0000000 00000000000 13543351427 0026342 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/environment/variables.txt 0000664 0000000 0000000 00000004217 13543351427 0031057 0 ustar 00root root 0000000 0000000 *** Variables ***
# Generic variables
${MEX_SCHEMA} http
${MEX_HOST} 10.192.2.172
${MEX_PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${apiRoot}
${apiName} alcmi
${apiVersion} v1
# Specific variables
${APPD_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3
${INSTANTIATION_STATE} NOT_INSTANTIATED
${APP_INSTANCE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f
${NON_EXISTENT_APP_INSTANCE_ID} NON_EXISTENT_APP_INSTANCE_ID
${APP_LCM_OP_OCC_ID} 65c4d1ff-f63b-46ef-bfe3-a6b330b60180
${NON_EXISTANT_APP_LCM_OP_OCC_ID} NON_EXISTANT_APP_LCM_OP_OCC_ID
${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
${MALFORMED_FILTER_NAME} operationalStatus // Should be operationalState
${FILTER_VALUE} NOT_IN_USE
${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
${SUBSCRIPTION_TYPE} MobilityProcedureSubscription
${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-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/jsons/ 0000775 0000000 0000000 00000000000 13543351427 0025132 5 ustar 00root root 0000000 0000000 AppInstSubscriptionRequest.json 0000664 0000000 0000000 00000000000 13543351427 0033270 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/jsons CreateAppInstanceRequest.json 0000664 0000000 0000000 00000000000 13543351427 0032636 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/jsons InstantiateAppRequest.json 0000664 0000000 0000000 00000000000 13543351427 0032231 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/jsons MalformedAppInstanceRequest.json 0000664 0000000 0000000 00000000000 13543351427 0033341 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/jsons MalformedInstantiateAppRequest.json 0000664 0000000 0000000 00000000000 13543351427 0034060 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/jsons OperateAppRequest.json 0000664 0000000 0000000 00000000000 13543351427 0031345 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/jsons TerminateAppRequest.json 0000664 0000000 0000000 00000000000 13543351427 0031676 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/jsons gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0025421 5 ustar 00root root 0000000 0000000 AppInstanceInfo.json 0000664 0000000 0000000 00000000000 13543351427 0031244 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/schemas AppInstanceInfos.json 0000664 0000000 0000000 00000000000 13543351427 0031427 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/schemas AppInstanceLcmOpOccs.json 0000664 0000000 0000000 00000000000 13543351427 0032173 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/MEX/LCM/schemas gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/README.md 0000664 0000000 0000000 00000002443 13543351427 0024214 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 BSD-3-Clause license.
See the attached LICENSE file or visit https://forge.etsi.org/legal-matters.
## 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-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/ 0000775 0000000 0000000 00000000000 13543351427 0023404 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/AMS/ 0000775 0000000 0000000 00000000000 13543351427 0024024 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/AMS/AMSService.robot 0000664 0000000 0000000 00000036032 13543351427 0027040 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 RegistrationInfo
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 RegistrationInfoMalformed
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 SubscriptionLinkList
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/ExpiryNotification.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-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/AMS/README.md 0000664 0000000 0000000 00000000000 13543351427 0025271 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/AMS/environment/ 0000775 0000000 0000000 00000000000 13543351427 0026370 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/AMS/environment/variables.txt 0000664 0000000 0000000 00000001766 13543351427 0031113 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-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/APPSAQ/ 0000775 0000000 0000000 00000000000 13543351427 0024371 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/APPSAQ/PlatAppServices.robot 0000664 0000000 0000000 00000017277 13543351427 0030523 0 ustar 00root root 0000000 0000000 *** Settings ***
Documentation
... A test suite for validating Application Service Availability Query (APPSAQ) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_APPSAQ
*** Variables ***
*** Test Cases ***
TP_MEC_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.0.9, clause 8.2.6.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/services
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ServiceInfoList
TP_MEC_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.0.9, clause 8.2.6.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
# Wrong query parameter name should trigger an error response.
vGET /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/services?id=some_instance_id
Check HTTP Response Status Code Is 400
TP_MEC_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.0.9, clause 8.2.6.3.4
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/services ${MEC_APP_NEW_SVC_DATA}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is ServiceInfo
Check HTTP Response Header Contains Location
Check Result Contains ${response['body']['ServiceInfo']} serName ${SERVICE_NAME}
Check Plaform IUT notifies the MEC Application instances ServiceAvailabilityNotification
TP_MEC_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.0.9, clause 8.2.6.3.4
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/services ${MEC_APP_NEW_SVC_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_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.0.9, clause 8.2.6.3.4
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_MEC_SVC_MGMT_APPS_URI}/${NON_EXISTENT_APP_INSTANCE_ID}/services ${MEC_APP_NEW_SVC_DATA}
Check HTTP Response Status Code Is 404
TP_MEC_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.0.9, clause 8.2.7.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/services/${SERVICE_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ServiceInfo
Check Result Contains ${response['body']['ServiceInfo']} serInstanceId ${SERVICE_ID}
TP_MEC_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.0.9, clause 8.2.7.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/services/${NON_EXISTENT_SERVICE_ID}
Check HTTP Response Status Code Is 404
TP_MEC_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.0.9, clause 8.2.7.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/services/${SERVICE_ID} ${MEC_APP_SVC_UPDT_DATA}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ServiceInfo
Check Result Contains ${response['body']['ServiceInfo']} version ${SVC_NEW_VERSION}
TP_MEC_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.0.9, clause 8.2.7.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/services/${SERVICE_ID} ${MEC_APP_SVC_UPDT_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_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.0.9, clause 8.2.7.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/services/${NON_EXISTENT_SERVICE_ID} ${MEC_APP_SVC_UPDT_DATA}
Check HTTP Response Status Code Is 404
TP_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.0.9, clause 8.2.7.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT invalid e-tag /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/services/${SERVICE_ID} ${MEC_APP_SVC_UPDT_DATA}
Check HTTP Response Status Code Is 412
*** Keywords ***
Check Plaform IUT notifies the MEC Application instances
[Documentation]
...
[Arguments] ${instance_id} ${content}
# TODO check how to send the message (isn't defined). Does it need to be tested as it's not defined?
# // MEC 011, clause 6.4.2
# the IUT entity sends a notification_message containing
# body containing
# notificationType set to "SerAvailabilityNotification",
# services containing
# serName set to SERVICE_NAME
# _links containing
# subscription set to MP1_SUBSCRIPTION_A
# ;
# ;
# ;
# ;
# to the MEC_APP_Subscriber entity
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/APPSAQ/README.md 0000664 0000000 0000000 00000000000 13543351427 0025636 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/APPSUB/ 0000775 0000000 0000000 00000000000 13543351427 0024376 5 ustar 00root root 0000000 0000000 PlatAppSubscriptions.robot 0000664 0000000 0000000 00000010737 13543351427 0031527 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/APPSUB *** Settings ***
Documentation
... A test suite for validating Application Subscriptions (APPSUB) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_APPSUB
*** Variables ***
*** Test Cases ***
TP_MEC_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.0.9, clause 7.2.3.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/MecAppSuptApiSubscriptionLinkList
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/subscriptions
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is SubscriptionLinkList
TP_MEC_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.0.9, clause 7.2.3.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_URI}/${NON_EXISTENT_APP_INSTANCE_ID}/subscriptions
Check HTTP Response Status Code Is 404
TP_MEC_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.0.9, clause 7.2.3.3.4
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/AppTerminationNotificationSubscription
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/subscriptions ${APP_TERM_NOTIF_SUB}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is AppTerminationNotificationSubscription
Check HTTP Response Header Contains Location
Check Result Contains ${response['body']['AppTerminationNotificationSubscription']} subscriptionType "AppTerminationNotificationSubscription"
Check Result Contains ${response['body']['AppTerminationNotificationSubscription']} callbackReference ${APP_TERM_NOTIF_CALLBACK_URI}
TP_MEC_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.0.9, clause 7.2.4.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/AppTerminationNotificationSubscription
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/subscriptions/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppTerminationNotificationSubscription
Check Result Contains ${response['body']['AppTerminationNotificationSubscription']} subscriptionType "AppTerminationNotificationSubscription"
TP_MEC_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.0.9, clause 7.2.4.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/subscriptions/${NON_EXISTENT_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
TP_MEC_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.0.9, clause 7.2.4.3.5
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/subscriptions/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
TP_MEC_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
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_ME_APP_SUPPORT_URI}/${NON_EXISTENT_APP_INSTANCE_ID}/subscriptions/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/APPSUB/README.md 0000664 0000000 0000000 00000000000 13543351427 0025643 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/BWA/ 0000775 0000000 0000000 00000000000 13543351427 0024015 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/BWA/PlatBandwidthManager.robot0000664 0000000 0000000 00000036005 13543351427 0031110 0 ustar 00root root 0000000 0000000 ''[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
Resource resources/BandwidthManagerAPI.robot
Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
*** 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} ${REQUEST_FOR_BW_REQUIREMENTS}
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} ${REQUEST_FOR_BW_REQUIREMENTS_BR}
Check HTTP Response Status Code Is 400
Check ProblemDetails 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
Check ProblemDetails 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
# Test body
Update a bandwidth allocation ${ALLOCATION_ID} ${REQUEST_FOR_BW_REQUIREMENTS}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is bwInfo
Check AppInstanceId ${APP_INSTANCE_ID}
Check Allocation ${ALLOCATION_ID}
# Postamble
Unregister Bandwidth Management Service
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
# Test body
Update a bandwidth allocation ${ALLOCATION_ID} ${REQUEST_FOR_BW_REQUIREMENTS_BR}
Check HTTP Response Status Code Is 400
Check ProblemDetails 400
# Postamble
Unregister Bandwidth Management Service
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 ${NOT_EXISTENT_ALLOCATION_ID} ${REQUEST_FOR_BW_REQUIREMENTS}
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
# Test body
Update a bandwidth allocation with invalid ETAG ${ALLOCATION_ID} ${REQUEST_FOR_BW_REQUIREMENTS}
Check HTTP Response Status Code Is 412
Check ProblemDetails 412
# Postamble
Unregister Bandwidth Management Service
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
# Test body
Request a deltas changes ${ALLOCATION_ID} ${REQUEST_FOR_DELTAS_CHANGES}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is bwInfo
Check AppInstanceId ${APP_INSTANCE_ID}
Check Allocation ${ALLOCATION_ID}
# Postamble
Unregister Bandwidth Management Service
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
# Test body
Request a deltas changes ${ALLOCATION_ID} ${REQUEST_FOR_DELTAS_CHANGES_BR}
Check HTTP Response Status Code Is 400
Check ProblemDetails 400
# Postamble
Unregister Bandwidth Management Service
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 ${NOT_EXISTENT_ALLOCATION_ID} ${REQUEST_FOR_DELTAS_CHANGES}
Check HTTP Response Status Code Is 404
Check ProblemDetails 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
# Test body
Request a deltas changes with invalid ETAG ${ALLOCATION_ID} ${REQUEST_FOR_DELTAS_CHANGES}
Check HTTP Response Status Code Is 412
Check ProblemDetails 412
# Postamble
Unregister Bandwidth Management Service
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
# Test body
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Set Headers {"Content-Length":"0"}
Delete /exampleAPI/bwm/v1/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 /exampleAPI/bwm/v1/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 /exampleAPI/bwm/v1/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"}
log ${content}
Post /exampleAPI/bwm/v1/bw_allocations/${APP_INSTANCE_ID} ${content}
${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 /exampleAPI/bwm/v1/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 {"ETag":"${ETAG_VALUE}"}
Set Headers {"Content-Length":"0"}
Put /exampleAPI/bwm/v1/bw_allocations/${allocation_id} ${content}
${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 {"${ETAG_LABEL}":"${INVALID_ETAG}"}
Set Headers {"Content-Length":"0"}
Put /exampleAPI/bwm/v1/bw_allocations/${allocation_id} ${content}
${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 {"${ETAG_LABEL}":"${ETAG}"}
Set Headers {"Content-Length":"0"}
Patch /exampleAPI/bwm/v1/bw_allocations/${allocation_id} ${content}
${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 {"${ETAG_LABEL}":"${INVALID_ETAG}"}
Set Headers {"Content-Length":"0"}
Patch /exampleAPI/bwm/v1/bw_allocations/${allocation_id} ${content}
${output}= Output response
Set Suite Variable ${response} ${output}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/BWA/README.md 0000664 0000000 0000000 00000000000 13543351427 0025262 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/BWA/environment/ 0000775 0000000 0000000 00000000000 13543351427 0026361 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/BWA/environment/variables.txt 0000664 0000000 0000000 00000003244 13543351427 0031075 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
${INVALID_ETAG} invalid_etag
${APP_INSTANCE_ID} appInst01
${NON_EXISTENT_APP_INSTANCE_ID} appInst99
${ALLOCATION_ID} allInst01
${NON_EXISTENT_ALLOCATION_ID} allInst99
${FIXED_ALLOCATION} fixed_allocation
${REQUEST_FOR_BW_REQUIREMENTS} { "appInsId": "${APP_INSTANCE_ID}", "requestType": "APPLICATION_SPECIFIC_BW_ALLOCATION", "fixedBWPriority": "not defined in the present document", "fixedAllocation": "${FIXED_ALLOCATION}", "allocationDirection": "00 = Downlink (towards the UE)"}
${REQUEST_FOR_BW_REQUIREMENTS_BR} { "appInsId": "${APP_INSTANCE_ID}", "requestType": "UNKMOWN", "fixedBWPriority": "not defined in the present document", "fixedAllocation": "${FIXED_ALLOCATION}", "allocationDirection": "00 = Downlink (towards the UE)"}
${REQUEST_FOR_DELTAS_CHANGES} { "appInsId": "${APP_INSTANCE_ID}", "requestType": "APPLICATION_SPECIFIC_BW_ALLOCATION", "fixedBWPriority": "not defined in the present document", "fixedAllocation": "string", "allocationDirection": "00 = Downlink (towards the UE)"}
${REQUEST_FOR_DELTAS_CHANGES_BR} { "appInsId": "${APP_INSTANCE_ID}", "requestType": "UNKNOWN", "fixedBWPriority": "not defined in the present document", "fixedAllocation": "string", "allocationDirection": "00 = Downlink (towards the UE)"}
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${ETAG_VALUE}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/BWA/resources/ 0000775 0000000 0000000 00000000000 13543351427 0026027 5 ustar 00root root 0000000 0000000 BandwidthManagerAPI.robot 0000664 0000000 0000000 00000004357 13543351427 0032561 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/BWA/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 ***
Register Bandwidth Management Service
... Register a Bandwidth Management Service
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"}
Post /exampleAPI/bwm/v1/bw_allocations ${REQUEST_FOR_BW_REQUIREMENTS}
${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
... Unregister a 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 /exampleAPI/bwm/v1/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
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/BWA/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0025440 5 ustar 00root root 0000000 0000000 BandwidthManagementAPI.schema.json 0000664 0000000 0000000 00000056524 13543351427 0033762 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/BWA/schemas {
"swagger": "2.0",
"info": {
"description": "The ETSI MEC ISG MEC015 Bandwidth Management API described using OpenAPI",
"version": "1.1.1",
"title": "BWM API",
"license": {
"name": "ETSI Forge copyright notice",
"url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt"
}
},
"externalDocs": {
"description": "ETSI MEC015 V1.1.1 Bandwidth Management API",
"url": "http://www.etsi.org/deliver/etsi_gs/MEC/001_099/015/01.01.01_60/gs_MEC015v010101p.pdf"
},
"host": "127.0.0.1:8081",
"basePath": "/bwm/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"security": [
{
"OauthSecurity": [
"all"
]
}
],
"securityDefinitions": {
"OauthSecurity": {
"type": "oauth2",
"flow": "application",
"tokenUrl": "https://oauth.exampleAPI/token",
"scopes": {
"all": "Single oauth2 scope for API"
}
}
},
"parameters": {
"Body.BwInfo": {
"name": "bwInfo",
"in": "body",
"description": "BwInfo with updated information is included as entity body of the request",
"required": true,
"schema": {
"$ref": "#/definitions/BwInfo"
}
},
"Body.BwInfoDeltas": {
"name": "bwInfoDeltas",
"in": "body",
"description": "Description of the changes to instruct the server how to modify the resource representation. ",
"required": true,
"schema": {
"$ref": "#/definitions/BwInfoDeltas"
}
},
"Path.AllocationId": {
"name": "allocationId",
"in": "path",
"description": "Represents a bandwidth allocation instance",
"required": true,
"type": "string"
},
"Query.AppInstanceId": {
"name": "app_instance_id",
"in": "query",
"description": "A mobile edge application instance may use multiple app_instance_ids as an input parameter to query the bandwidth allocation of a list of mobile edge application instances. ",
"required": false,
"type": "array",
"items": {
"type": "string"
}
},
"Query.AppName": {
"name": "app_name",
"in": "query",
"description": "A mobile edge application instance may use multiple ser_names as an input parameter to query the bandwidth allocation of a list of mobile edge application instances. ",
"required": false,
"type": "array",
"items": {
"type": "string"
}
},
"Query.SessionId": {
"name": "session_id",
"in": "query",
"description": "A mobile edge application instance may use session_id as an input parameter to query the bandwidth allocation of a list of sessions. ",
"required": false,
"type": "array",
"items": {
"type": "string"
}
}
},
"paths": {
"/bw_allocations": {
"get": {
"description": "This method retrieves information about a list of bandwidthAllocation resources",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Query.AppInstanceId"
},
{
"$ref": "#/parameters/Query.AppName"
},
{
"$ref": "#/parameters/Query.SessionId"
}
],
"responses": {
"200": {
"description": "Upon success, a response body containing an array of the bandwidthAllocations is returned.",
"schema": {
"required": [
"bwInfo"
],
"properties": {
"bwInfo": {
"$ref": "#/definitions/BwInfo"
}
}
}
},
"400": {
"description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "The operation is not allowed given the current status of the resource. More information should be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.",
"schema": {
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"post": {
"description": "This method is used to create a bandwidthAllocation resource.",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Body.BwInfo"
}
],
"responses": {
"201": {
"description": "Upon success, the HTTP response shall include a \"Location\" HTTP header that contains the resource URI of the created resource.",
"schema": {
"required": [
"bwInfo"
],
"properties": {
"bwInfo": {
"$ref": "#/definitions/BwInfo"
}
}
}
},
"400": {
"description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "The operation is not allowed given the current status of the resource. More information should be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.",
"schema": {
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
}
},
"/bw_allocations/{allocationId}": {
"get": {
"description": "This method retrieves information about a specific bandwidthAllocation resource. ",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.AllocationId"
}
],
"responses": {
"200": {
"description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.",
"schema": {
"required": [
"bwInfo"
],
"properties": {
"bwInfo": {
"$ref": "#/definitions/BwInfo"
}
}
}
},
"400": {
"description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure. required:\n - ProblemDetails\nproperties:\n ProblemDetails:\n $ref: '#/definitions/ProblemDetails'"
},
"404": {
"description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"put": {
"description": "This method updates the information about a specific bandwidthAllocation resource. ",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.AllocationId"
},
{
"$ref": "#/parameters/Body.BwInfo"
}
],
"responses": {
"200": {
"description": "Upon success, a response body containing data type describing the updated BwInfo is returned.",
"schema": {
"required": [
"bwInfo"
],
"properties": {
"bwInfo": {
"$ref": "#/definitions/BwInfo"
}
}
}
},
"400": {
"description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.",
"schema": {
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"412": {
"description": "It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"patch": {
"description": "This method updates the information about a specific bandwidthAllocation resource. ",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.AllocationId"
},
{
"$ref": "#/parameters/Body.BwInfoDeltas"
}
],
"responses": {
"200": {
"description": "Upon success, a response body containing data type describing the updated BwInfo is returned.",
"schema": {
"required": [
"bwInfo"
],
"properties": {
"bwInfo": {
"$ref": "#/definitions/BwInfo"
}
}
}
},
"400": {
"description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.",
"schema": {
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"412": {
"description": "It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"delete": {
"description": "Remove a specific bandwidthAllocation resource. DELETE method is typically used in \"Unregister from Bandwidth Management Service\" procedure",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.AllocationId"
}
],
"responses": {
"204": {
"description": "No Content"
},
"403": {
"description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.",
"schema": {
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
"schema": {
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
}
}
},
"definitions": {
"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"
},
"BwInfo": {
"description": "information of bandwidth resource",
"type": "object",
"required": [
"appInsId",
"requestType",
"fixedAllocation",
"allocationDirection"
],
"properties": {
"timeStamp": {
"$ref": "#/definitions/TimeStamp"
},
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"requestType": {
"$ref": "#/definitions/RequestType"
},
"sessionFilter": {
"$ref": "#/definitions/SessionFilter"
},
"fixedBWPriority": {
"$ref": "#/definitions/FixedBWPriority"
},
"fixedAllocation": {
"$ref": "#/definitions/FixedAllocation"
},
"allocationDirection": {
"$ref": "#/definitions/AllocationDirection"
}
}
},
"BwInfoDeltas": {
"description": "Conform to JSON merge patch format and processing rules specified IETF RFC 7396 [8], this type represents the attributes whose value are allowed to be updated with HTTP PATCH method in content format JSON",
"type": "object",
"properties": {
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"requestType": {
"$ref": "#/definitions/RequestType"
},
"sessionFilter": {
"$ref": "#/definitions/SessionFilter"
},
"fixedBWPriority": {
"$ref": "#/definitions/FixedBWPriority"
},
"fixedAllocation": {
"$ref": "#/definitions/FixedAllocation"
},
"allocationDirection": {
"$ref": "#/definitions/AllocationDirection"
}
}
},
"TimeStamp": {
"type": "object",
"required": [
"seconds",
"nanoSeconds"
],
"properties": {
"seconds": {
"$ref": "#/definitions/Seconds"
},
"nanoSeconds": {
"$ref": "#/definitions/NanoSeconds"
}
}
},
"AppInsId": {
"description": "Application instance identifier",
"type": "string"
},
"RequestType": {
"description": "Numeric value (0 - 255) corresponding to specific type of consumer",
"type": "string",
"enum": [
"APPLICATION_SPECIFIC_BW_ALLOCATION",
"SESSION_SPECIFIC_BW_ALLOCATION"
]
},
"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",
"type": "array",
"items": {
"type": "object",
"properties": {
"sourceIp": {
"$ref": "#/definitions/SourceIp"
},
"sourcePort": {
"$ref": "#/definitions/SourcePort"
},
"dstAddress": {
"$ref": "#/definitions/DstAddress"
},
"dstPort": {
"$ref": "#/definitions/DstPort"
},
"protocol": {
"$ref": "#/definitions/Protocol"
}
}
}
},
"FixedBWPriority": {
"description": "Indicates the allocation priority when dealing with several applications or sessions in parallel. Values are not defined in the present document",
"type": "string",
"enum": [
"not defined in the present document"
]
},
"FixedAllocation": {
"description": "Size of requested fixed BW allocation in [bps]",
"type": "string"
},
"AllocationDirection": {
"description": "The direction of the requested BW allocation",
"type": "string",
"enum": [
"00 = Downlink (towards the UE)",
"01 = Uplink (towards the application/session)",
"10 = Symmetrical"
]
},
"Seconds": {
"description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC",
"type": "integer",
"format": "uint32"
},
"NanoSeconds": {
"description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC",
"type": "integer",
"format": "uint32"
},
"SourceIp": {
"description": "Source address identity of session (including range)",
"type": "string"
},
"SourcePort": {
"description": "Source port identity of session ",
"type": "array",
"items": {
"type": "string"
}
},
"DstAddress": {
"description": "Destination address identity of session (including range)",
"type": "string"
},
"DstPort": {
"description": "Destination port identity of session ",
"type": "array",
"items": {
"type": "string"
}
},
"Protocol": {
"description": "Protocol number",
"type": "string"
}
}
}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/DNS/ 0000775 0000000 0000000 00000000000 13543351427 0024030 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/DNS/PlatDnsRules.robot 0000664 0000000 0000000 00000010662 13543351427 0027464 0 ustar 00root root 0000000 0000000 *** Settings ***
Documentation
... A test suite for validating DNS rules (DNS) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_DNS
*** Variables ***
*** Test Cases ***
TP_MEC_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.0.9, clause 7.2.9.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/dns_rules
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is DnsRuleList
TP_MEC_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.0.9, clause 7.2.10.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/dns_rules/${DNS_RULE_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is DnsRule
Check Result Contains ${response['body']['DnsRule']} dnsRuleId ${DNS_RULE_ID}
TP_MEC_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.0.9, clause 7.2.10.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/dns_rules/${NON_EXISTENT_DNS_RULE_ID}
Check HTTP Response Status Code Is 404
TP_MEC_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.0.9, clause 7.2.10.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/dns_rules/${DNS_RULE_ID} ${MEC_APP_DNSRULE_UPDT_DATA}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is DnsRule
Check Result Contains ${response['body']['DnsRule']} dnsRuleId ${DNS_RULE_NAME}
Check Result Contains ${response['body']['DnsRule']} ipAddress ${SOME_IP_ADDRESS}
TP_MEC_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.0.9, clause 7.2.10.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/dns_rules/${DNS_RULE_ID} ${MEC_APP_DNSRULE_UPDT_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_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.0.9, clause 7.2.10.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/dns_rules/${NON_EXISTENT_DNS_RULE_ID} ${MEC_APP_DNSRULE_UPDT_DATA}
Check HTTP Response Status Code Is 404
TP_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.0.9, clause 7.2.10.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT invalid e-tag /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/dns_rules/${DNS_RULE_ID} ${MEC_APP_DNSRULE_UPDT_DATA}
Check HTTP Response Status Code Is 412
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/DNS/README.md 0000664 0000000 0000000 00000000000 13543351427 0025275 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/FAIS/ 0000775 0000000 0000000 00000000000 13543351427 0024126 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/FAIS/PlatFixedAcessInfo.robot 0000664 0000000 0000000 00000032600 13543351427 0030651 0 ustar 00root root 0000000 0000000 *** Settings ***
Documentation
... A test suite for validating Fixed Access Information Service (FAIS) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_FAIS
*** Variables ***
*** Test Cases ***
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.3.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_FA_INFO_URI}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is FaInfo
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.3.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_FA_INFO_URI}?interface=1
Check HTTP Response Status Code Is 400
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.3.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_FA_INFO_URI}?interface=999
Check HTTP Response Status Code Is 404
TP_MEC_SRV_FAIS_002_OK
[Documentation]
... Check that the IUT responds with the current status of the device information
... when queried by a MEC Application
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.4.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_DEVICE_INFO_URI}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is DeviceInfo
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.4.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_FA_INFO_URI}?device=__any_value__
Check HTTP Response Status Code Is 400
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.4.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_DEVICE_INFO_URI}?gwId=${NON_EXISTING_FAI_GW_ID}
Check HTTP Response Status Code Is 404
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.5.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_CABLE_LINE_INFO_URI}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is CableLineInfo
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.5.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_CABLE_LINE_INFO_URI}?cm=__any_value__
Check HTTP Response Status Code Is 400
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.5.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_CABLE_LINE_INFO_URI}?cmId=${NON_EXISTING_FAI_CM_ID}
Check HTTP Response Status Code Is 404
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.6.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_OPTICAL_NW_INFO_URI}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is PonInfo
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.6.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_CABLELINE_INFO_URI}?onu=__any_value__
Check HTTP Response Status Code Is 400
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.6.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_CABLELINE_INFO_URI}?cmId=${NON_EXISTING_FAI_ONU_ID}
Check HTTP Response Status Code Is 404
TP_MEC_SRV_FAIS_005_OK
[Documentation]
... Check that the IUT responds with the subscriptions for fixed access information notifications
... when queried by a MEC Application
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.7.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_SUB_URI}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is SubscriptionLinkList
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.7.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_SUB_URI}?subscription=__any_value__
Check HTTP Response Status Code Is 400
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.7.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_SUB_URI}?subscription_type=${NON_EXISTING_FAI_SUB_ID}
Check HTTP Response Status Code Is 404
TP_MEC_SRV_FAIS_006_OK
[Documentation]
... Check that the IUT acknowledges the subscription by a MEC Application
... to notifications on Optical Network Unit alarm events
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.7.3.4
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_FAI_SUB_URI} ${FAI_ONU_ALARM_SUB_DATA}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is OnuAlarmSubscription
Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType "OnuAlarmSubscription"
# 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 029, clause 7.7.3.4
# the IUT entity sends a vPOST containing
# uri indicating value CALLBACK_URL
# body containing
# OnuAlarmNotification containing
# notificationType set to "OnuAlarmSubscription"
# ;
# ;
# ;
# to the MEC_APP entity
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.7.3.4
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_FAI_SUB_URI} ${FAI_ONU_ALARM_SUB_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_SRV_FAIS_007_OK
[Documentation]
... Check that the IUT responds with the information on a given subscription
... when queried by a MEC Application
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.8.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_SUB_URI}/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is OnuAlarmSubscription
Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType "OnuAlarmSubscription"
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.8.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_FAI_SUB_URI}/${NON_EXISTENT_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
TP_MEC_SRV_FAIS_008_OK
[Documentation]
... Check that the IUT updates an existing subscription
... when commanded by a MEC Application
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.8.3.2
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_FAI_SUB_URI}/${SUBSCRIPTION_ID} ${FAI_ONU_ALARM_SUB_UPDT_DATA}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is OnuAlarmSubscription
Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType "OnuAlarmSubscription"
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.8.3.2
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_FAI_SUB_URI} ${FAI_ONU_ALARM_SUB_UPDT_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.8.3.2
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_FAI_SUB_URI}/${NON_EXISTENT_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.8.3.2
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT invalid e-tag /${PX_FAI_SUB_URI} ${FAI_ONU_ALARM_SUB_UPDT_DATA}
Check HTTP Response Status Code Is 412
TP_MEC_SRV_FAIS_009_OK
[Documentation]
... Check that the IUT cancels an existing subscription
... when commanded by a MEC Application
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.8.3.5
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_FAI_SUB_URI}/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
TP_MEC_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
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.8.3.5
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_FAI_SUB_URI}/${NON_EXISTING_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
TP_MEC_SRV_FAIS_010_OK
[Documentation]
... Check that the IUT sends notification on expiry of Fixed Access Information event subscription
... to a MEC Application
...
... Reference ETSI GS MEC 029 V2.1.1, clause 7.7.3.4
[Tags] PIC_MEC_PLAT PIC_SERVICES
# TODO how to set this? expiryDeadline indicating value NOW_PLUS_X_SECONDS
vPOST /${PX_FAI_SUB_URI} ${FAI_DEV_INFO_SUB_DATA}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is DevInfoSubscription
Check HTTP Response Header Contains Location
Check Result Contains ${response['body']['DevInfoSubscription']} subscriptionType DevInfoSubscription
# TODO: how to wait for a timeout of (NOW_PLUS_X_SECONDS - guard time)? which guard time value to use?
# and
# // MEC 029, clause 5.2.6.2
# the IUT entity sends a vPOST containing
# uri indicating value CALLBACK_URL
# body containing
# ExpiryNotification containing
# expiryDeadline indicating value NOW_PLUS_X_SECONDS // TODO: how to set this?
# ;
# ;
# ;
# to the MEC_APP entity
TP_MEC_SRV_FAIS_011_OK
[Documentation]
... Check that the IUT sends notifications on Fixed Access Information events
... to a subscribed MEC Application
...
... Reference ETSI GS MEC 029 V2.1.1, clause 5.2.7
[Tags] PIC_MEC_PLAT PIC_SERVICES
# TODO how to generate an event?
# Initial conditions with {
# the IUT entity being_in idle_state and
# the IUT entity having a subscriptions containing
# subscriptionType indicating value "OnuAlarmSubscription",
# callbackReference indicating value CALLBACK_URL
# ;
# }
# // MEC 029, clause 5.2.7
# Expected behaviour
# ensure that {
# when {
# the IUT entity generates a onu_alarm_event
# }
# then {
# // // MEC 029, clause 5.2.7
# the IUT entity sends a vPOST containing
# Uri set to CALLBACK_URL
# body containing
# OnuAlarmSubscription containing
# notificationType set to "OnuAlarmSubscription"
# ;
# ;
# ;
# to the MEC_APP entity
# }
# }
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/FAIS/README.md 0000664 0000000 0000000 00000000000 13543351427 0025373 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/README.md 0000664 0000000 0000000 00000000000 13543351427 0024651 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RLOCLOOK/ 0000775 0000000 0000000 00000000000 13543351427 0024630 5 ustar 00root root 0000000 0000000 PlatRadioNodeLocation.robot 0000664 0000000 0000000 00000002565 13543351427 0032006 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RLOCLOOK *** Settings ***
Documentation
... A test suite for validating Radio Node Location Lookup (RLOCLOOK) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_RLOCLOOK
*** Variables ***
*** Test Cases ***
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.7
... OpenAPI https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/AccessPointList
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_Q_ZONE_ID_URI}/${ZONE_ID}/accessPoints
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is accessPointList
Check Result Contains ${response['body']['accessPointList']} zoneId ${ZONE_ID}
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.7
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_Q_ZONE_ID_URI}/${NON_EXISTENT_ZONE_ID}/accessPoints
Check HTTP Response Status Code Is 404
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RLOCLOOK/README.md 0000664 0000000 0000000 00000000000 13543351427 0026075 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/ 0000775 0000000 0000000 00000000000 13543351427 0024157 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/README.md 0000664 0000000 0000000 00000000000 13543351427 0025424 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/RnisNotifications.robot 0000664 0000000 0000000 00000027305 13543351427 0030702 0 ustar 00root root 0000000 0000000 ''[Documentation] robot --outputdir ../../outputs ./RnisNotifications_BV.robot
... Test Suite to validate RNIS/Notification (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
Library BuiltIn
Library OperatingSystem
Library MockServerLibrary
*** Test Cases ***
Cell change notification
[Documentation] TC_MEC_SRV_RNIS_001_OK
... 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.0.4, clause 6.4.2
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1
${json}= Get File schemas/RadioNetworkInformationAPI.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 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}
RAB Establishment notification
[Documentation] TC_MEC_SRV_RNIS_002_OK
... 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.0.4, clause 6.4.3
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1
${json}= Get File schemas/RadioNetworkInformationAPI.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
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}
RAB modification notification
[Documentation] TC_MEC_SRV_RNIS_003_OK
... 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.0.4, clause 6.4.4
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1
${json}= Get File schemas/RadioNetworkInformationAPI.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
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}
RAB release notification
[Documentation] TC_MEC_SRV_RNIS_004_OK
... 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.0.4, clause 6.4.5
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1
${json}= Get File schemas/RadioNetworkInformationAPI.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
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}
UE measurement notification
[Documentation] TC_MEC_SRV_RNIS_005_OK
... 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.0.4, clause 6.4.6
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1
${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}/MeasRepUeNotification 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}
UE timing advance notification
[Documentation] TC_MEC_SRV_RNIS_006_OK
... 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.0.4, clause 6.4.7
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1
${json}= Get File schemas/RadioNetworkInformationAPI.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
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}
UE carrier aggregation reconfiguration notification
[Documentation] TC_MEC_SRV_RNIS_007_OK
... 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.0.4, clause 6.4.8
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1
${json}= Get File schemas/RadioNetworkInformationAPI.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
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}
S1-U bearer notification
[Documentation] TC_MEC_SRV_RNIS_008_OK
... 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.0.4, clause 6.4.10
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1
${json}= Get File schemas/RadioNetworkInformationAPI.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
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}
UE Measurement notification
[Documentation] TC_MEC_SRV_RNIS_009_OK
... Check that the RNIS service sends an RNIS notification about 5G NR UE measurement report if the RNIS service has an associated subscription and the event is generated
... ETSI GS MEC 012 2.0.4, clause 6.4.11
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1
${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}/meas_rep_ue 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}
UE Measurement notification
[Documentation] TC_MEC_SRV_RNIS_010_OK
... Check that the RNIS service sends an RNIS notification on subscription expiration if the RNIS service has an associated subscription and the event is generated
... ETSI GS MEC 012 2.0.4, clause 6.4.9
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml
Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1
${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
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 ***
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/RnisQuery_BI_BO.robot 0000664 0000000 0000000 00000017751 13543351427 0030134 0 ustar 00root root 0000000 0000000 ''[Documentation] robot --outputdir ../../outputs ./RnisQuery_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 RabInfo info using wrong parameters
[Documentation] TC_MEC_SRV_RNIS_016_BR
... Check that the RNIS service returns an error when the RAB information is requested with a malformatted message
... ETSI GS MEC 012 2.0.4, 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 wrong parameters
Check HTTP Response Status Code Is 400
Check ProblemDetails 400
Request RabInfo info using non existing cell id
[Documentation] TC_MEC_SRV_RNIS_016_BR
... Check that the RNIS service returns an error when the RAB information for a not existing element is requested
... ETSI GS MEC 012 2.0.4, 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
Check ProblemDetails 404
Request Plmn info using wrong parameters
[Documentation] TC_MEC_SRV_RNIS_017_BR
... Check that the RNIS service returns an error when the PLMN information is requested with a malformatted message
... ETSI GS MEC 012 2.0.4, 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 wrong parameters
Check HTTP Response Status Code Is 400
Check ProblemDetails 400
Request Plmn info using non existing application id
[Documentation] TC_MEC_SRV_RNIS_017_NF
... Check that the RNIS service returns an error when the PLMN information for a not existing element is requested
... ETSI GS MEC 012 2.0.4, 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
Check ProblemDetails 404
Request S1Bearer info using wrong parameters
[Documentation] TC_MEC_SRV_RNIS_018_BR
... Check that the RNIS service returns an error when the S1 bearer information is requested with a malformatted message
... ETSI GS MEC 012 2.0.4, clause 7.4.3.1
... 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
Request S1Bearer info using non existing cell id
[Documentation] TC_MEC_SRV_RNIS_018_BR
... Check that the RNIS service returns an error when the S1 bearer information is requested with a malformatted message
... ETSI GS MEC 012 2.0.4, clause 7.4.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
Check ProblemDetails 404
Request L2Meas info using wrong parameters
[Documentation] TC_MEC_SRV_RNIS_019_BR
... Check that the RNIS service returns an error when the L2 measurements information is requested with a malformatted message
... ETSI GS MEC 012 2.0.4, 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 wrong parameters
Check HTTP Response Status Code Is 400
Check ProblemDetails 400
Request L2Meas info using non existing cell id
[Documentation] TC_MEC_SRV_RNIS_019_BR
... 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.0.4, 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
Check ProblemDetails 404
*** Keywords ***
Get RabInfo info using wrong parameters
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/queries/rab_info?c_id=${C_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
Get RabInfo info using non existing cell id
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/queries/rab_info?cell_id=${NOT_EXISTENT_CELL_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
Get Plmn info using wrong parameters
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/queries/plmn_info?app_id=${APP_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
Get Plmn info using non existing application id
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/queries/plmn_info?app_ins_id=${NOT_EXISTENT_APP_INS_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
Get S1Bearer info using wrong parameters
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/queries/s1_bearer_info?c_id=${C_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
Get S1Bearer info using non existing cell id
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/queries/s1_bearer_info?cell_id=${NOT_EXISTENT_CELL_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
Get L2Meas info using wrong parameters
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/queries/layer2_meas?c_id=${C_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
Get L2Meas info using non existing cell id
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/queries/layer2_meas?cell_id=${NOT_EXISTENT_CELL_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/RnisQuery_BV.robot 0000664 0000000 0000000 00000007117 13543351427 0027564 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 RabInfo info
[Documentation] TC_MEC_SRV_RNIS_016_OK
... Check that the RNIS service returns the RAB information when requested
... ETSI GS MEC 012 2.0.4, clause 7.3.3.1
... 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 RadioNetworkInformationAPI
Check RabInfo ${response['body']['RabInfo']}
Request Plmn info
[Documentation] TC_MEC_SRV_RNIS_017_OK
... Check that the RNIS service returns the PLMN information when requested
... ETSI GS MEC 012 2.0.4, clause 7.4.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo
Get PLMN info
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI
Check PlmnInfo ${response['body']['PlmnInfo']}
Request S1Bearer info
[Documentation] TC_MEC_SRV_RNIS_018_OK
... Check that the RNIS service returns the S1 bearer information
... ETSI GS MEC 012 2.0.4, clause 7.4.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo
Get S1Bearer info
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI
#log ${response['body']}
Check S1BearerInfo ${response['body']['S1BearerInfo']}
Request L2Meas info
[Documentation] TC_MEC_SRV_RNIS_019_OK
... Check that the RNIS service returns the L2 measurements information
... ETSI GS MEC 012 2.0.4, clause 7.4.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo
Fail msg=Too many changes in JSON data description, not implemented
*** Keywords ***
Get RabInfo info
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/queries/rab_info?cell_id=${CELL_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
Get Plmn info
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/queries/plmn_info?app_ins_id=${APP_INS_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
Get S1Bearer info
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/queries/s1_bearer_info?cell_id=${CELL_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
RnisSpecificSubscription_BI_BO.robot 0000664 0000000 0000000 00000005343 13543351427 0033074 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/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": "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}}}
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"}
Get /exampleAPI/rni/v2/subscriptions?subscription_type=wrongSubscriptionType
${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_BV.robot 0000664 0000000 0000000 00000005436 13543351427 0032534 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/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-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/environment/ 0000775 0000000 0000000 00000000000 13543351427 0026523 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/environment/pics.txt 0000664 0000000 0000000 00000000072 13543351427 0030221 0 ustar 00root root 0000000 0000000 *** Variables ***
${PIC_RNIS_SPECIFIC_SUBSCRIPTION} 1
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/environment/variables.txt0000664 0000000 0000000 00000002720 13543351427 0031235 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}'}
${CELL_ID} 0x800000A
${C_ID} 0xFFFFFFF
${NOT_EXISTENT_CELL_ID} 0x8000099
${APP_INS_ID} 01
${APP_ID} 10
${NOT_EXISTENT_APP_INS_ID} 99
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
# 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_endpoint_error} /subs_404
${total_polling_time} 2 min
${polling_interval} 10 sec
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/resources/ 0000775 0000000 0000000 00000000000 13543351427 0026171 5 ustar 00root root 0000000 0000000 LocationAPI.robot 0000664 0000000 0000000 00000000655 13543351427 0031271 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/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 00000003201 13543351427 0034325 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/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 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}
Check RabInfo
[Arguments] ${received_value}
log ${received_value}
Should Be Equal ${received_value['appInsId']} ${APP_INS_ID}
Should Not Contain ${received_value['requestId']} ""
Should Be Equal ${received_value['cellUserInfo'][0]['ecgi']['cellId']} ${CELL_ID}
# TODO How to check the presence of a field
Check PlmnInfo
[Arguments] ${received_value}
log ${received_value}
Should Be Equal ${received_value['appInsId']} ${APP_INS_ID}
Should Not Contain ${received_value['plmn'][0]['mcc']} ""
Should Not Contain ${received_value['plmn'][0]['mnc']} ""
# TODO How to check the presence of a field
Check S1BearerInfo
[Arguments] ${received_value}
log ${received_value}
#Should Not Contain ${received_value['s1UeInfo'][0]['ecgi']['cellId']} ${CELL_ID}
# TODO How to check the presence of a field
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/RNIS/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0025602 5 ustar 00root root 0000000 0000000 RadioNetworkInformationAPI.schema.json 0000664 0000000 0000000 00000054113 13543351427 0035031 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/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",
"plmn"
],
"properties": {
"timeStamp": {
"$ref": "#/definitions/TimeStamp"
},
"appInsId": {
"$ref": "#/definitions/AppInsId"
},
"plmn": {
"type": "array",
"items": {
"$ref": "#/definitions/Plmn"
}
}
}
},
"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": [
"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",
"enbInfo",
"sGwInfo"
],
"properties": {
"erabId": {
"$ref": "#/definitions/ErabId"
},
"enbInfo": {
"$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": "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": "string",
"description": "Value for the identifier",
"example": "192.0.0.2"
}
}
},
"ErabQosParameters": {
"type": "object",
"properties": {
"qci": {
"$ref": "#/definitions/Qci"
},
"qosInformation": {
"type": "array",
"items": {
"$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-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/SAQ/ 0000775 0000000 0000000 00000000000 13543351427 0024030 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/SAQ/PlatServices.robot 0000664 0000000 0000000 00000004402 13543351427 0027503 0 ustar 00root root 0000000 0000000 *** Settings ***
Documentation
... A test suite for validating Service Availability Query (SAQ) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_SAQ
*** Variables ***
*** Test Cases ***
TP_MEC_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.0.9, clause 8.2.3.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfoList
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_SVC_URI}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ServiceInfoList
TP_MEC_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.0.9, clause 8.2.3.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_SVC_URI}?instance_id=__any_value__
Check HTTP Response Status Code Is 400
TP_MEC_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.0.9, clause 8.2.4.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfoList
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_SVC_URI}/${SERVICE_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ServiceInfoList
Check Result Contains ${response['body']['ServiceInfoList']} serInstanceId ${SERVICE_ID}
TP_MEC_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.0.9, clause 8.2.4.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_SVC_URI}/${NON_EXISTENT_SERVICE_ID}
Check HTTP Response Status Code Is 404
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/SAQ/README.md 0000664 0000000 0000000 00000000000 13543351427 0025275 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/SRVSUB/ 0000775 0000000 0000000 00000000000 13543351427 0024430 5 ustar 00root root 0000000 0000000 PlatSrvSubscriptions.robot 0000664 0000000 0000000 00000012154 13543351427 0031606 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/SRVSUB *** Settings ***
Documentation
... A test suite for validating Service Subscriptions (SRVSUB) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_SRVSUB
*** Variables ***
*** Test Cases ***
TP_MEC_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.0.9, clause 8.2.8.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/MecServiceMgmtApiSubscriptionLinkList
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/subscriptions
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is SubscriptionLinkList
TP_MEC_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.0.9, clause 8.2.8.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_APPS_URI}/${NON_EXISTENT_APP_INSTANCE_ID}/subscriptions
Check HTTP Response Status Code Is 404
TP_MEC_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.0.9, clause 8.2.8.3.4
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/subscriptions ${MEC_APP_SRVSUB_DATA}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is SerAvailabilityNotificationSubscription
Check HTTP Response Header Contains Location
Check Result Contains ${response['body']['SerAvailabilityNotificationSubscription']} subscriptionType "SerAvailabilityNotificationSubscription"
Check Result Contains ${response['body']['SerAvailabilityNotificationSubscription']} callbackReference ${APP_SRVSUB_NOTIF_CALLBACK_URI}
TP_MEC_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.0.9, clause 8.2.8.3.4
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/subscriptions ${MEC_APP_SRVSUB_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_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.0.9, clause 8.2.9.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/subscriptions/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is SerAvailabilityNotificationSubscription
Check Result Contains ${response['body']['SerAvailabilityNotificationSubscription']} subscriptionType "SerAvailabilityNotificationSubscription"
TP_MEC_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.0.9, clause 8.2.9.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/subscriptions/${NON_EXISTENT_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
TP_MEC_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.0.9, clause 8.2.9.3.5
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_MEC_SVC_MGMT_APPS_URI}/${APP_INSTANCE_ID}/subscriptions/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
TP_MEC_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.0.9, clause 8.2.9.3.5
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_MEC_SVC_MGMT_APPS_URI}/${NON_EXISTENT_APP_INSTANCE_ID}/subscriptions/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/SRVSUB/README.md 0000664 0000000 0000000 00000000000 13543351427 0025675 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/TIME/ 0000775 0000000 0000000 00000000000 13543351427 0024142 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/TIME/PlatTiming.robot 0000664 0000000 0000000 00000002440 13543351427 0027261 0 ustar 00root root 0000000 0000000 *** Settings ***
Documentation
... A test suite for validating Timing capabilities (TIME) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_TIME
*** Variables ***
*** Test Cases ***
TP_MEC_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.0.9, clause 7.7.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TimingCaps
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_TIMING_CAPS_URI}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is TimingCaps
TP_MEC_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.0.9, clause 7.8.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/CurrentTime
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_TIMING_CURRENT_URI}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is CurrentTime
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/TIME/README.md 0000664 0000000 0000000 00000000000 13543351427 0025407 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/TRAF/ 0000775 0000000 0000000 00000000000 13543351427 0024140 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/TRAF/PlatTrafficRules.robot 0000664 0000000 0000000 00000010642 13543351427 0030424 0 ustar 00root root 0000000 0000000 *** Settings ***
Documentation
... A test suite for validating Traffic rules (TRAF) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_TRAF
*** Variables ***
*** Test Cases ***
TP_MEC_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.0.9, clause 7.10.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/traffic_rules
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is TrafficRuleList
TP_MEC_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.10.3.1
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_URI}/${NON_EXISTENT_APP_INSTANCE_ID}/traffic_rules
Check HTTP Response Status Code Is 404
TP_MEC_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.0.9, clause 7.11.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/traffic_rules/${TRAFFIC_RULE_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is TrafficRule
Check Result Contains ${response['body']['TrafficRule']} trafficRuleId ${TRAFFIC_RULE_ID}
TP_MEC_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.0.9, clause 7.11.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/traffic_rules/${TRAFFIC_RULE_ID} ${MEC_APP_TRAF_DATA}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is TrafficRule
Check Result Contains ${response['body']['TrafficRule']} trafficRuleId ${TRAFFIC_RULE_ID}
Check Result Contains ${response['body']['TrafficRule']} action "DROP"
TP_MEC_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.0.9, clause 7.11.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/traffic_rules/${TRAFFIC_RULE_ID} ${MEC_APP_TRAF_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_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.0.9, clause 7.11.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/traffic_rules/${TRAFFIC_RULE_ID} ${NON_EXISTENT_TRAFFIC_RULE_ID}
Check HTTP Response Status Code Is 404
TP_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.0.9, clause 7.11.3.2
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPUT invalid e-tag /${PX_ME_APP_SUPPORT_URI}/${APP_INSTANCE_ID}/traffic_rules/${TRAFFIC_RULE_ID} ${MEC_APP_TRAF_DATA}
Check HTTP Response Status Code Is 412
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/TRAF/README.md 0000664 0000000 0000000 00000000000 13543351427 0025405 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/TRANS/ 0000775 0000000 0000000 00000000000 13543351427 0024273 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/TRANS/PlatTransport.robot 0000664 0000000 0000000 00000001406 13543351427 0030160 0 ustar 00root root 0000000 0000000 *** Settings ***
Documentation
... A test suite for validating Transport (TRANS) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_TRANS
*** Variables ***
*** Test Cases ***
TP_MEC_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.0.9, clause 7.9.3.1
... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TransportInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_ME_TRANSPORTS_MNGMT_URI}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is TransportInfoList
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/TRANS/README.md 0000664 0000000 0000000 00000000000 13543351427 0025540 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEAREASUB/ 0000775 0000000 0000000 00000000000 13543351427 0024720 5 ustar 00root root 0000000 0000000 PlatUeAreaSubscription.robot 0000664 0000000 0000000 00000005535 13543351427 0032310 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEAREASUB *** Settings ***
Documentation
... A test suite for validating UE Area Subscribe (UEAREASUB) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_UEAREASUB
*** Variables ***
*** Test Cases ***
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.11
... OpenAPI # TODO check this
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_UE_AREA_SUB_URI} ${MEC_APP_UEAREASUB_DATA}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is circleNotificationSubscription
Check Result Contains ${response['body']['circleNotificationSubscription']} clientCorrelator ${UEAREASUB_CLIENT_ID}
Check Result Contains ${response['body']['circleNotificationSubscription']} callbackReference ${APP_UEAREASUB_CALLBACK_URI}
Check Result Contains ${response['body']['circleNotificationSubscription']} address ${IP_ADDRESS}
# TODO how to send this when the UE enters the area? 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.11.3
# the IUT entity sends a vPOST containing
# uri indicating value CALLBACK_URL,
# body containing
# subscriptionNotification containing
# terminalLocation containing
# address set to IP_ADDRESS
# ;
# ;
# ;
# ;
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.11
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_UE_AREA_SUB_URI} ${MEC_APP_UEAREASUB_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_SRV_UEAREASUB_002_OK
[Documentation]
... Check that the IUT acknowledges the cancellation of UE area change notifications
... when commanded by a MEC Application
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_UE_AREA_SUB_URI}/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_UE_AREA_SUB_URI}/${NON_EXISTING_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 412
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEAREASUB/README.md 0000664 0000000 0000000 00000000000 13543351427 0026165 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEDISTLOOK/ 0000775 0000000 0000000 00000000000 13543351427 0025066 5 ustar 00root root 0000000 0000000 PlatUeDistanceLookup.robot 0000664 0000000 0000000 00000002324 13543351427 0032116 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEDISTLOOK *** Settings ***
Documentation
... A test suite for validating UE Distance Lookup (UEDISTLOOK) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_UEDISTLOOK
*** Variables ***
*** Test Cases ***
TP_MEC_SRV_UEDISTLOOK_001_OK
[Documentation]
... Check that the IUT responds with the distance to a UE
... when queried by a MEC Application
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.9
... OpenAPI # TODO check this
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_UE_LOC_QRY_URI}?address=${LOC_QRY_UE_ADDRESS}&latitude=${LOC_QRY_UE_LAT}&longitude=${LOC_QRY_UE_LONG}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is terminalDistance
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.9
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_UE_LOC_QRY_URI}?address=${LOC_QRY_UE_ADDRESS}&lat=${LOC_QRY_UE_LAT}&longitude=${LOC_QRY_UE_LONG}
Check HTTP Response Status Code Is 400
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEDISTLOOK/README.md 0000664 0000000 0000000 00000000000 13543351427 0026333 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEDISTSUB/ 0000775 0000000 0000000 00000000000 13543351427 0024753 5 ustar 00root root 0000000 0000000 PlatUeDistanceSubscription.robot 0000664 0000000 0000000 00000005121 13543351427 0033214 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEDISTSUB *** Settings ***
Documentation
... A test suite for validating UE Distance Subscribe (UEDISTSUB) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_UEDISTSUB
*** Variables ***
*** Test Cases ***
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.10
... OpenAPI # TODO check this
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_UE_DIST_SUB_URI} ${UE_DIST_NOTIF_SUB_DATA}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is distanceNotificationSubscription
Check Result Contains ${response['body']['distanceNotificationSubscription']} clientCorrelator ${UEDISTSUB_CLIENT_ID}
Check Result Contains ${response['body']['distanceNotificationSubscription']} callbackReference ${APP_SRVSUB_NOTIF_CALLBACK_URI}
Check Result Contains ${response['body']['distanceNotificationSubscription']} monitoredAddress ${UEDISTSUB_MONITORED_IP_ADDRESS}
Check Result Contains ${response['body']['distanceNotificationSubscription']} referenceAddress ${UEDISTSUB_IP_ADDRESS}
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.10
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_UE_DIST_SUB_URI} ${UE_DIST_NOTIF_SUB_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_SRV_UEDISTSUB_002_OK
[Documentation]
... Check that the IUT acknowledges the cancellation of UE distance notifications
... when commanded by a MEC Application
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_UE_DIST_SUB_URI}/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_UE_DIST_SUB_URI}/${NON_EXISTING_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEDISTSUB/README.md 0000664 0000000 0000000 00000000000 13543351427 0026220 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEINFOLOOK/ 0000775 0000000 0000000 00000000000 13543351427 0025056 5 ustar 00root root 0000000 0000000 PlatUeInformationLookup.robot 0000664 0000000 0000000 00000003355 13543351427 0032646 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEINFOLOOK *** Settings ***
Documentation
... A test suite for validating UE Information Lookup (UEINFOLOOK) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_UEINFOLOOK
*** Variables ***
*** Test Cases ***
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.3
... OpenAPI https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/UserList
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_UE_LOC_USERS_URI}?address=${ACR_SOME_IP}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is userList
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.3
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_UE_LOC_USERS_URI}?addr=${ACR_SOME_IP}
Check HTTP Response Status Code Is 400
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.3
... OpenAPI https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/UserList
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_UE_LOC_USERS_URI}?address=${ACR_UNKNOWN_IP}
Check HTTP Response Status Code Is 400
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEINFOLOOK/README.md 0000664 0000000 0000000 00000000000 13543351427 0026323 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEINFOSUB/ 0000775 0000000 0000000 00000000000 13543351427 0024743 5 ustar 00root root 0000000 0000000 PlatUeInformationSubscription.robot 0000664 0000000 0000000 00000006103 13543351427 0033740 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEINFOSUB *** Settings ***
Documentation
... A test suite for validating UE Information Subscription (UEINFOSUB) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_UEINFOSUB
*** Variables ***
*** Test Cases ***
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.5
... OpenAPI https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/zonalTrafficSubscription
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_UE_INFO_SUB_URI} ${UE_ZONAL_TRAF_SUB_DATA}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is zonalTrafficSubscription
Check Result Contains ${response['body']['zonalTrafficSubscription']} clientCorrelator ${ZONAL_TRAF_SUB_CLIENT_ID}
Check Result Contains ${response['body']['zonalTrafficSubscription']} callbackReference ${ZONAL_TRAF_NOTIF_CALLBACK_URI}
Check Result Contains ${response['body']['zonalTrafficSubscription']} zoneId ${ZONAL_TRAF_ZONE_ID}
# 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.5.3
# the IUT entity sends a vPOST containing
# Uri set to CALLBACK_URL
# body containing
# zonalPresenceNotification containing
# clientCorrelator set to CLIENT_ID,
# zoneId indicating value ZONE_ID
# ;
# ;
# ;
# to the MEC_APP entity
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.5
... OpenAPI https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/zonalTrafficSubscription
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_UE_ZONAL_TRAF_SUB_URI} ${UE_ZONAL_TRAF_SUB_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_SRV_UEINFOSUB_002_OK
[Documentation]
... Check that the IUT acknowledges the cancellation of UE information change notifications
... when commanded by a MEC Application
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_UE_ZONAL_TRAF_SUB_URI}/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_UE_ZONAL_TRAF_SUB_URI}/${NON_EXISTING_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UEINFOSUB/README.md 0000664 0000000 0000000 00000000000 13543351427 0026210 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UELOCLOOK/ 0000775 0000000 0000000 00000000000 13543351427 0024740 5 ustar 00root root 0000000 0000000 PlatUeLocationLookup.robot 0000664 0000000 0000000 00000003261 13543351427 0032007 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UELOCLOOK *** Settings ***
Documentation
... A test suite for validating UE Location Lookup (UELOCLOOK) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_UELOCLOOK
*** Variables ***
*** Test Cases ***
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.2
... OpenAPI https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/UserInfo
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_UE_LOC_USERS_URI}?zoneId=${UE_LOC_ZONE_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is userInfo
Check Result Contains ${response['body']['userInfo']} zoneId ${UE_LOC_ZONE_ID}
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.2
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_UE_LOC_USERS_URI}?zone=${UE_LOC_ZONE_ID}
Check HTTP Response Status Code Is 400
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.2
[Tags] PIC_MEC_PLAT PIC_SERVICES
vGET /${PX_UE_LOC_USERS_URI}?zoneId=${NON_EXISTENT_ZONE_ID}
Check HTTP Response Status Code Is 404
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UELOCLOOK/README.md 0000664 0000000 0000000 00000000000 13543351427 0026205 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UELOCSUB/ 0000775 0000000 0000000 00000000000 13543351427 0024625 5 ustar 00root root 0000000 0000000 PlatUeLocationSubscription.robot 0000664 0000000 0000000 00000005673 13543351427 0033120 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UELOCSUB *** Settings ***
Documentation
... A test suite for validating UE Location Subscription (UELOCSUB) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_UELOCSUB
*** Variables ***
*** Test Cases ***
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.4
... OpenAPI https://forge.etsi.org/gitlab/mec/gs013-location-api/blob/master/LocationAPI.yaml#/definitions/UserTrackingSubscription
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_UE_LOC_USERTRACK_SUB_URI} ${UE_LOC_USERTRACK_SUB_DATA}
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 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
# the IUT entity sends a vPOST containing
# Uri set to CALLBACK_URL
# body containing
# zonalPresenceNotification containing
# clientCorrelator set to CLIENT_ID,
# address set to IP_ADDRESS
# ;
# ;
# ;
# to the MEC_APP entity
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.4
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_UE_LOC_USERTRACK_SUB_URI} ${UE_LOC_USERTRACK_SUB_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_SRV_UELOCSUB_002_OK
[Documentation]
... Check that the IUT acknowledges the cancellation of UE location change notifications
... when commanded by a MEC Application
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_UE_LOC_USERTRACK_SUB_URI}/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_UE_LOC_USERTRACK_SUB_URI}/${NON_EXISTING_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UELOCSUB/README.md 0000664 0000000 0000000 00000000000 13543351427 0026072 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UETAG/ 0000775 0000000 0000000 00000000000 13543351427 0024251 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UETAG/PlatUeIdentity.robot 0000664 0000000 0000000 00000017140 13543351427 0030227 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-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UETAG/README.md 0000664 0000000 0000000 00000000000 13543351427 0025516 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UETAG/environment/ 0000775 0000000 0000000 00000000000 13543351427 0026615 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000001074 13543351427 0031251 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/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-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UETAG/resources/ 0000775 0000000 0000000 00000000000 13543351427 0026263 5 ustar 00root root 0000000 0000000 LocationAPI.robot 0000664 0000000 0000000 00000000655 13543351427 0031363 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/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 13543351427 0031700 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/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-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UETAG/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0025674 5 ustar 00root root 0000000 0000000 UeIdentityTagInfo.schema.json 0000664 0000000 0000000 00000005136 13543351427 0033307 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/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-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UETRACKSUB/ 0000775 0000000 0000000 00000000000 13543351427 0025054 5 ustar 00root root 0000000 0000000 PlatUeTrackingSubscription.robot 0000664 0000000 0000000 00000005575 13543351427 0033342 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UETRACKSUB *** Settings ***
Documentation
... A test suite for validating UE Tracking Subscribe (UETRACKSUB) operations.
Resource ../../GenericKeywords.robot
Default Tags TP_MEC_SRV_UETRACKSUB
*** Variables ***
*** Test Cases ***
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.5
... OpenAPI # TODO check this
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_UE_PERIODIC_SUB_URI} ${UE_PERIODIC_SUB_DATA}
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is periodicNotificationSubscription
Check Result Contains ${response['body']['periodicNotificationSubscription']} clientCorrelator ${UE_PERIODIC_SUB_CLIENT_ID}
Check Result Contains ${response['body']['periodicNotificationSubscription']} callbackReference ${UE_PERIODIC_NOTIF_CALLBACK_URI}
Check Result Contains ${response['body']['periodicNotificationSubscription']} address ${UE_PERIODIC_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.8.3
# the IUT entity sends a vPOST containing
# uri indicating value CALLBACK_URL
# body containing
# subscriptionNotification containing
# terminalLocation containing
# address set to IP_ADDRESS
# ;
# ;
# ;
# ;
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.4
... OpenAPI # TODO check this
[Tags] PIC_MEC_PLAT PIC_SERVICES
vPOST /${PX_UE_PERIODIC_SUB_URI} ${UE_PERIODIC_SUB_DATA_BR}
Check HTTP Response Status Code Is 400
TP_MEC_SRV_UETRACKSUB_002_OK
[Documentation]
... Check that the IUT acknowledges the cancellation of UE tracking notifications
... when commanded by a MEC Application
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_UE_PERIODIC_SUB_URI}/${SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 204
TP_MEC_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
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
[Tags] PIC_MEC_PLAT PIC_SERVICES
vDELETE without e-tag /${PX_UE_PERIODIC_SUB_URI}/${NON_EXISTING_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/SRV/UETRACKSUB/README.md 0000664 0000000 0000000 00000000000 13543351427 0026321 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/TODO.md 0000664 0000000 0000000 00000014514 13543351427 0024026 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.
## MEO
###
### UEAPPCTX
ETSI GS MEC 016 V2.1.1
https://forge.etsi.org/rep/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/MEO/UEAPPCTX/SysUeAppsContext.tplan2
TODO
### UEAPPS
ETSI GS MEC 016 V2.1.1
https://forge.etsi.org/rep/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/MEO/UEAPPS/SysUeApplications.tplan2
- TC_MEC_SRV_BWA_001_OK To be tested
- TC_MEC_SRV_BWA_001_BR To be tested
- TC_MEC_SRV_BWA_002_OK To be tested
- TC_MEC_SRV_BWA_002_BR To be tested
- TC_MEC_SRV_BWA_003_OK To be tested
- TC_MEC_SRV_BWA_003_NF To be tested
- TC_MEC_SRV_BWA_004_OK To be tested
- TC_MEC_SRV_BWA_004_BR To be tested
- TC_MEC_SRV_BWA_004_NF To be tested
- TC_MEC_SRV_BWA_004_PF To be tested
- TC_MEC_SRV_BWA_005_OK To be tested
- TC_MEC_SRV_BWA_005_BR To be tested
- TC_MEC_SRV_BWA_005_NF To be tested
- TC_MEC_SRV_BWA_005_PF To be tested
- TC_MEC_SRV_BWA_006_OK To be tested
- TC_MEC_SRV_BWA_006_NF To be tested
## SRV
### AMS
### APPSAQ
### APPSUB
### BWA
Draft ETSI GS MEC 015 1.1.1
https://forge.etsi.org/rep/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/SRV/BWA/PlatBandwidthManager.tplan2
### 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_BI_BO.tplan2
https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/SRV/RNIS/RnisQuery_BV.tplan2
https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/SRV/RNIS/RnisQuery_BI_BO.tplan2
- TC_MEC_SRV_RNIS_001_OK To be tested
- TC_MEC_SRV_RNIS_002_OK To be tested
- TC_MEC_SRV_RNIS_003_OK To be tested
- TC_MEC_SRV_RNIS_004_OK To be tested
- TC_MEC_SRV_RNIS_005_OK To be tested
- TC_MEC_SRV_RNIS_006_OK To be tested
- TC_MEC_SRV_RNIS_007_OK To be tested
- TC_MEC_SRV_RNIS_008_OK To be tested
- TC_MEC_SRV_RNIS_009_OK To be tested
- TC_MEC_SRV_RNIS_010_OK To be tested
- TC_MEC_SRV_RNIS_011_OK To be tested
- TC_MEC_SRV_RNIS_012_OK To be tested
- TC_MEC_SRV_RNIS_011_BR To be tested
- TC_MEC_SRV_RNIS_012_BR To be tested
- TC_MEC_SRV_RNIS_016_OK To be tested
- TC_MEC_SRV_RNIS_016_BR To be tested
- TC_MEC_SRV_RNIS_016_NF To be tested
- TC_MEC_SRV_RNIS_017_OK To be tested
- TC_MEC_SRV_RNIS_017_BR To be tested
- TC_MEC_SRV_RNIS_017_NF To be tested
- TC_MEC_SRV_RNIS_018_OK To be tested
- TC_MEC_SRV_RNIS_018_BR To be tested
- TC_MEC_SRV_RNIS_018_NF To be tested
- TC_MEC_SRV_RNIS_019_OK To be tested
- TC_MEC_SRV_RNIS_019_BR To be tested
- TC_MEC_SRV_RNIS_019_NF 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-0f26987f25b33026f877d2aa508b296bcc582f9c/examples/ 0000775 0000000 0000000 00000000000 13543351427 0024550 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/examples/emptyschema/ 0000775 0000000 0000000 00000000000 13543351427 0027067 5 ustar 00root root 0000000 0000000 EmptySchema.robot 0000664 0000000 0000000 00000000466 13543351427 0032304 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/examples/emptyschema *** Settings ***
Library BuiltIn
Library OperatingSystem
Library JSONSchemaLibrary schemas/
*** Test Cases ***
Testing Empty Schema Validation
${object}= Get File jsons/test.json
${json}= Evaluate json.loads('''${object}''') json
Validate Json EmptySchema.json ${json}
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/examples/emptyschema/jsons/ 0000775 0000000 0000000 00000000000 13543351427 0030223 5 ustar 00root root 0000000 0000000 test.json 0000664 0000000 0000000 00000000111 13543351427 0032007 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/examples/emptyschema/jsons {
"test": "empty schema test",
"result": "should work with this json"
} gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/examples/emptyschema/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0030512 5 ustar 00root root 0000000 0000000 EmptySchema.json 0000664 0000000 0000000 00000000104 13543351427 0033540 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/examples/emptyschema/schemas {
"type": "object",
"properties": {
},
"required": []
} gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/log.html 0000664 0000000 0000000 00000664321 13543351427 0024415 0 ustar 00root root 0000000 0000000
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 8 or newer 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.
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/outputs/ 0000775 0000000 0000000 00000000000 13543351427 0024455 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/outputs/README.md 0000664 0000000 0000000 00000000001 13543351427 0025723 0 ustar 00root root 0000000 0000000
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/pics.txt 0000664 0000000 0000000 00000000336 13543351427 0024433 0 ustar 00root root 0000000 0000000 *** Variables ***
${PIC_MEC_PLAT} 1
${PIC_SERVICES} 1
${PIC_RNIS_QUERY} 1
${PIC_RNIS_SPECIFIC_SUBSCRIPTION} 1
${PIC_RNIS_NOTIFICATIONS} 1
${PIC_AMS} 1
${PIC_MEC_SYSTEM} 1
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/red.xml 0000664 0000000 0000000 00000002033 13543351427 0024224 0 ustar 00root root 0000000 0000000
2WORKSPACEtrue1024truetruefalse
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/requirements.txt 0000664 0000000 0000000 00000000453 13543351427 0026220 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-0f26987f25b33026f877d2aa508b296bcc582f9c/resources.robot 0000664 0000000 0000000 00000007665 13543351427 0026031 0 ustar 00root root 0000000 0000000 *** Settings ***
Documentation
... A resource file with reusable keywords and variables.
...
... The system specific keywords created here form our own domain specific language.
Library REST ${MEC_SERVER_IUT} ssl_verify=${MEC_SERVER_SSL_VERITY} accept=application/json content_type=application/json
Library JSONSchemaLibrary ${JSONS_SCHEMAS}
*** Keywords ***
GET URI
[Arguments] ${service}
[Documentation]
... Issue a GET request to an URI.
... NOTE: the response is stored in the REST library used and is available throughtout the test scope.
...
... service: the service endpoint to call (without the server name or port).
Log URI: ${service}
GET ${service}
the Plaform IUT entity receives a vGET for
[Arguments] ${endpoint}
[Documentation]
... Send a GET request to an API endpoint.
...
... endpoint: the absolut path to the API endpoint to reach, without the server address and port.
${resp} = GET URI ${endpoint}
the Plaform IUT entity receives a vPOST for
[Arguments] ${endpoint} ${data} ${schema}
[Documentation]
... A MEC Application subscribes notifications on the availability of a specific service.
...
... endpoint: the absolut path to the API endpoint to reach, without the server address and port.
... data_schema: the schema for the expected data in the POST request.
Validate Json ${schema}.schema.json ${data}
# TODO will this be mocked or will we use the proper MEC API calls for this?
# If so, won't theses tests require a functional MEC Server?
the Plaform IUT sends a response
[Arguments] ${status_code} ${json_schema}
[Documentation]
... Check the correctness of the response sent by the IUT.
...
... status_code: The expected HTTP status code received in the response.
... json_schema: the schema to validate the response conformance.
Integer response status ${status_code}
Output response
${response} = Output response body
Validate Json ${json_schema}.schema.json ${response}
the Plaform IUT has a MEC Application instantiated
[Documentation]
... Instantiates a MEC Application.
# TODO will this be mocked or will we use the proper MEC API calls for this?
# If so, won't theses tests require a functional MEC Server?
Set Suite Variable ${APP_INSTANCE_ID} 123
a MEC Application subscribed to service notifications for
[Arguments] ${mec_service}
[Documentation]
... A MEC Application subscribes notifications on the availability of a specific service.
...
... mec_service: the MEC platform service a MEC Application wants to be notified of.
Log Available MEC Service: ${mec_service}
# TODO will this be mocked or will we use the proper MEC API calls for this?
# If so, won't theses tests require a functional MEC Server?
the Plaform IUT response header parameter
[Arguments] ${header} ${value}
[Documentation]
...
# TODO the platform must reply with a specific header which should be checked for conformance.
# How to do this as the test needs to send a response but also ensure it sends the proper header?
# String request headers Authorization Bearer ${oauth_token}
No Operation
the Plaform IUT sends a notification message to the subscribed MEC Applications with
[Arguments] ${data}
[Documentation]
...
# TODO
# GS MEC 011 V2.0.8, ยง5.2.4: the MEC platform identifies the relevant MEC platforms for this update, and informs
# them about the changes in service availability by means that may be outside the scope of the present document.
#
# The TP has this notification, so what to do here? Simply do not care about this? Update the TP to exclude this notification?
No Operation
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/schemas/ 0000775 0000000 0000000 00000000000 13543351427 0024355 5 ustar 00root root 0000000 0000000 ServiceInfoList.schema.json 0000664 0000000 0000000 00000001514 13543351427 0031501 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/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-0f26987f25b33026f877d2aa508b296bcc582f9c/schemas/UserInfo.schema.json 0000664 0000000 0000000 00000004513 13543351427 0030244 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-0f26987f25b33026f877d2aa508b296bcc582f9c/scripts/ 0000775 0000000 0000000 00000000000 13543351427 0024421 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/scripts/build-container.sh 0000775 0000000 0000000 00000001342 13543351427 0030037 0 ustar 00root root 0000000 0000000 #!/bin/bash
# Copyright ETSI 2019
# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt
#set -e
set -vx
DOCKER_FILE=./scripts/docker/Dockerfile
if [ -f ${DOCKER_FILE} ]
then
#check and build stf569-rf image
DOCKER_ID=`docker ps -a | grep -e stf569-rf | awk '{ print $1 }'`
if [ ! -z "${DOCKER_ID}" ]
then
docker rm --force stf569-rf
fi
docker build --tag stf569-rf --force-rm -f ${DOCKER_FILE} .
if [ "$?" != "0" ]
then
echo "Docker build failed: $?"
exit -1
fi
docker image ls -a
docker inspect stf569-rf:latest
if [ "$?" != "0" ]
then
echo "Docker inspect failed: $?"
exit -2
fi
else
exit -3
fi
# That's all Floks
exit 0
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/scripts/docker/ 0000775 0000000 0000000 00000000000 13543351427 0025670 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/scripts/docker/Dockerfile 0000664 0000000 0000000 00000002151 13543351427 0027661 0 ustar 00root root 0000000 0000000 FROM ubuntu:16.04
MAINTAINER ETSI STF 569
LABEL description="SFT569 Robot Framework Docker Image"
ENV TERM=xterm
ENV HOSTNAME docker-robot-STF569
ARG ssh_prv_key
RUN DEBIAN_FRONTEND=noninteractive apt update \
&& apt install python3 -y \
&& apt install python3-pip -y \
&& apt install openssh-server -y \
&& DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \
&& DEBIAN_FRONTEND=noninteractive apt-get autoclean \
&& rm -rf /var/lib/apt/lists/*
RUN echo "docker-robot-STF569" > /etc/hostname \
&& echo "root:etsi" | chpasswd
RUN useradd --create-home --shell /bin/bash --user-group etsi --groups sudo \
&& echo "etsi:etsi" | chpasswd \
&& adduser etsi sudo \
&& echo "etsi ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
RUN DEBIAN_FRONTEND=noninteractive \
&& mkdir -p /home/etsi/dev/robot \
&& cd /home/etsi/dev/robot
ADD . /home/etsi/dev/robot
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/*
CMD tail -f /dev/null
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/scripts/launch-validation.sh 0000775 0000000 0000000 00000000241 13543351427 0030357 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-0f26987f25b33026f877d2aa508b296bcc582f9c/scripts/run-all.bash 0000775 0000000 0000000 00000001533 13543351427 0026637 0 ustar 00root root 0000000 0000000 #!/bin/bash
## Launch robot tests validator
mkdir logs
/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
if [ ! -z logs/errors.log ]; then
cat logs/errors.log
fi
if [ ! -z logs/failures.log ]; then
cat logs/failures.log
fi
if [ ! -z logs/erros.log ] || [ ! -z logs.failures.log ]; then
echo "Errors are found. Job failed"
exit 1
fi
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/scripts/run-container.sh 0000775 0000000 0000000 00000000427 13543351427 0027547 0 ustar 00root root 0000000 0000000 #!/bin/bash
# Copyright ETSI 2019
# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt
#set -e
#set -vx
docker run stf569-rf:latest "/bin/bash" \
-c "cd /home/etsi/dev/robot \
&& sh scripts/run-all.bash \
&& ls -ltr logs/"
# That's all Floks
exit $?
gs032p3-robot-test-suite-0f26987f25b33026f877d2aa508b296bcc582f9c/variables.py 0000664 0000000 0000000 00000000433 13543351427 0025254 0 ustar 00root root 0000000 0000000
MEC_SERVER_SCHEMA = "http"
MEC_SERVER_HOST = "localhost"
MEC_SERVER_PORT = 8000
MEC_SERVER_SSL_VERITY = "false"
MEC_SERVER_IUT = "{}://{}:{}".format(MEC_SERVER_SCHEMA, MEC_SERVER_HOST, MEC_SERVER_PORT)
JSONS_SCHEMAS = "schemas"