pax_global_header 0000666 0000000 0000000 00000000064 13540731117 0014514 g ustar 00root root 0000000 0000000 52 comment=b684e8ae94416fe3b939ca39f4d026db514386cb
gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/ 0000775 0000000 0000000 00000000000 13540731117 0023065 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/.jenkins.sh 0000664 0000000 0000000 00000000354 13540731117 0025142 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-b684e8ae94416fe3b939ca39f4d026db514386cb/GenericKeywords.robot 0000664 0000000 0000000 00000003624 13540731117 0027245 0 ustar 00root root 0000000 0000000 *** Settings ***
Library JSONSchemaLibrary schemas/
Library BuiltIn
*** Variables ***
${response}
*** Keywords ***
Check HTTP Response Status Code Is
[Arguments] ${expected_status}
${status}= Convert To Integer ${expected_status}
Should Be Equal ${response['status']} ${status}
Log Status code validated
Check HTTP Response Body Json Schema Is
[Arguments] ${input}
Should Contain ${response['headers']['Content-Type']} application/json
${schema} = Catenate SEPARATOR= ${input} .schema.json
Validate Json ${schema} ${response['body']}
Log Json Schema Validation OK
Should Be Present In Json List
[Arguments] ${expr} ${json_field} ${json_value}
Log Check if ${json_field} is present in ${expr} with the value ${jsonvalue}
:FOR ${item} IN @{expr}
\ Exit For Loop If "${item['${json_field}']}" == "${json_value}"
Log Item found ${item}
[return] ${item}
Check Result Contains
[Arguments] ${source} ${parameter} ${value}
Should Be Present In Json List ${source} ${parameter} ${value}
Check ProblemDetails
[Arguments] ${expected_status}
${status}= Convert To Integer ${expected_status}
Should Be Equal ${response['body']['problemDetails']['status']} ${status}
Log ProblemDetails Status code validated
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']}
gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/LICENSE 0000664 0000000 0000000 00000002703 13540731117 0024074 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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/ 0000775 0000000 0000000 00000000000 13540731117 0023505 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/GRANT/ 0000775 0000000 0000000 00000000000 13540731117 0024360 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/GRANT/Grant.robot 0000664 0000000 0000000 00000010606 13540731117 0026505 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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/GRANT/README.md 0000664 0000000 0000000 00000000000 13540731117 0025625 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/GRANT/environment/ 0000775 0000000 0000000 00000000000 13540731117 0026724 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000001463 13540731117 0031362 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/GRANT/jsons/ 0000775 0000000 0000000 00000000000 13540731117 0025514 5 ustar 00root root 0000000 0000000 grantRejectedRequest.json 0000664 0000000 0000000 00000000002 13540731117 0032452 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/GRANT/jsons {} gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/GRANT/jsons/grantRequests.json0000664 0000000 0000000 00000000003 13540731117 0031247 0 ustar 00root root 0000000 0000000 {
} gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/GRANT/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0026003 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/GRANT/schemas/Grant.json 0000664 0000000 0000000 00000000002 13540731117 0027741 0 ustar 00root root 0000000 0000000 {} gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/ 0000775 0000000 0000000 00000000000 13540731117 0024243 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/PackageManagement.robot 0000664 0000000 0000000 00000041174 13540731117 0030651 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
*** 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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/README.md 0000664 0000000 0000000 00000000000 13540731117 0025510 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/environment/ 0000775 0000000 0000000 00000000000 13540731117 0026607 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/environment/variables.txt0000664 0000000 0000000 00000003474 13540731117 0031330 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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/jsons/ 0000775 0000000 0000000 00000000000 13540731117 0025377 5 ustar 00root root 0000000 0000000 AppPkgSubscription.json 0000664 0000000 0000000 00000000000 13540731117 0031770 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/jsons CreateAppPackage.json 0000664 0000000 0000000 00000000002 13540731117 0031323 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/jsons {} MalformedAppPkg.json 0000664 0000000 0000000 00000000000 13540731117 0031212 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/jsons MalformedAppPkgSubscription.json 0000664 0000000 0000000 00000000000 13540731117 0033617 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/jsons gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0025666 5 ustar 00root root 0000000 0000000 AppPkgSubscriptionInfo.json 0000664 0000000 0000000 00000000000 13540731117 0033073 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/schemas AppPkgSubscriptionLinkList.json 0000664 0000000 0000000 00000000000 13540731117 0033731 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/schemas OnboardedAppPkgInfo.json 0000664 0000000 0000000 00000000000 13540731117 0032304 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/schemas OnboardedAppPkgInfos.json 0000664 0000000 0000000 00000000000 13540731117 0032467 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/PKGM/schemas gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/UEAPPCTX/ 0000775 0000000 0000000 00000000000 13540731117 0024736 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/UEAPPCTX/README.md 0000664 0000000 0000000 00000000000 13540731117 0026203 0 ustar 00root root 0000000 0000000 SysUeAppsContext.robot 0000664 0000000 0000000 00000015434 13540731117 0031176 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/UEAPPCTX ''[Documentation] robot --outputdir ../../outputs ./SysUeAppContext.robot
... Test Suite to validate Bandwidth Management API (BWA) operations.
*** Settings ***
Resource environment/variables.txt
Resource ../../pics.txt
Resource ../../GenericKeywords.robot
Resource resources/UeAppContextAPI.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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/UEAPPCTX/environment/ 0000775 0000000 0000000 00000000000 13540731117 0027302 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000002742 13540731117 0031741 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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": "${CREATE_APP_CTX}", "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": "${CREATE_APP_CTX}", "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
gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/UEAPPCTX/resources/ 0000775 0000000 0000000 00000000000 13540731117 0026750 5 ustar 00root root 0000000 0000000 UeAppsContextAPI.robot 0000664 0000000 0000000 00000002613 13540731117 0033036 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/UEAPPCTX/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0026361 5 ustar 00root root 0000000 0000000 UEAppInterfaceAPI.schema.json 0000664 0000000 0000000 00000045341 13540731117 0033570 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/UEAPPS/ 0000775 0000000 0000000 00000000000 13540731117 0024502 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/UEAPPS/README.md 0000664 0000000 0000000 00000000000 13540731117 0025747 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEO/UEAPPS/SysUeApplications.robot0000664 0000000 0000000 00000007443 13540731117 0031200 0 ustar 00root root 0000000 0000000 ''[Documentation] robot --outputdir ../../outputs ./SysUeApplications.robot
... Test Suite to validate Bandwidth Management API (BWA) operations.
*** Settings ***
Resource ../UEAPPCTX/environment/variables.txt
Resource ../../pics.txt
Resource ../../GenericKeywords.robot
Resource ../UEAPPCTX/resources/UeAppContextAPI.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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/ 0000775 0000000 0000000 00000000000 13540731117 0023623 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/ 0000775 0000000 0000000 00000000000 13540731117 0024361 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/PackageManagement.robot 0000664 0000000 0000000 00000031164 13540731117 0030765 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
*** 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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/README.md 0000664 0000000 0000000 00000000000 13540731117 0025626 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/environment/ 0000775 0000000 0000000 00000000000 13540731117 0026725 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000003477 13540731117 0031372 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/jsons/ 0000775 0000000 0000000 00000000000 13540731117 0025515 5 ustar 00root root 0000000 0000000 AppPkgSubscription.json 0000664 0000000 0000000 00000000000 13540731117 0032106 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/jsons CreateAppPackage.json 0000664 0000000 0000000 00000000002 13540731117 0031441 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/jsons {} MalformedAppPkg.json 0000664 0000000 0000000 00000000000 13540731117 0031330 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/jsons MalformedAppPkgSubscription.json 0000664 0000000 0000000 00000000000 13540731117 0033735 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/jsons gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0026004 5 ustar 00root root 0000000 0000000 AppPkgSubscriptionInfo.json 0000664 0000000 0000000 00000000000 13540731117 0033211 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/schemas AppPkgSubscriptionLinkList.json 0000664 0000000 0000000 00000000000 13540731117 0034047 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/schemas OnboardedAppPkgInfo.json 0000664 0000000 0000000 00000000000 13540731117 0032422 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/schemas OnboardedAppPkgInfos.json 0000664 0000000 0000000 00000000000 13540731117 0032605 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEPM/PKGM/schemas gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ 0000775 0000000 0000000 00000000000 13540731117 0023516 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/ 0000775 0000000 0000000 00000000000 13540731117 0024145 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/ANY.robot 0000664 0000000 0000000 00000002725 13540731117 0025651 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
*** Test Cases ***
Request access to a generic resource not using 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
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Get ${apiRoot}/${apiName}/${apiVersion}/app_packages
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
Request access to a generic resource using an invalid token
[Documentation] TP_MEC_MEX_ANY_001_WT
... Check that a MEC API provider responds with an error
... when it receives a request with a wrong token
... ETSI GS MEC 009 1.1.1, clause 6.16.1
[Tags] GENERIC_TESTS INCLUDE_UNDEFINED_SCHEMAS
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${INVALID_TOKEN}"}
Get ${apiRoot}/${apiName}/${apiVersion}/app_packages
${output}= Output response
Should Be Equal As Strings 401 ${output['status']}
gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/README.md 0000664 0000000 0000000 00000000000 13540731117 0025412 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/environment/ 0000775 0000000 0000000 00000000000 13540731117 0026511 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/environment/variables.txt 0000664 0000000 0000000 00000000607 13540731117 0031225 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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/jsons/ 0000775 0000000 0000000 00000000000 13540731117 0025301 5 ustar 00root root 0000000 0000000 AppPkgSubscription.json 0000664 0000000 0000000 00000000000 13540731117 0031672 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/jsons CreateAppPackage.json 0000664 0000000 0000000 00000000002 13540731117 0031225 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/jsons {} gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/jsons/MalformedAppPkg.json0000664 0000000 0000000 00000000000 13540731117 0031173 0 ustar 00root root 0000000 0000000 MalformedAppPkgSubscription.json 0000664 0000000 0000000 00000000000 13540731117 0033521 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/jsons gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0025570 5 ustar 00root root 0000000 0000000 AppPkgSubscriptionInfo.json 0000664 0000000 0000000 00000000000 13540731117 0032775 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/schemas AppPkgSubscriptionLinkList.json 0000664 0000000 0000000 00000000000 13540731117 0033633 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/schemas OnboardedAppPkgInfo.json 0000664 0000000 0000000 00000000000 13540731117 0032206 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/schemas OnboardedAppPkgInfos.json 0000664 0000000 0000000 00000000000 13540731117 0032371 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/ANY/schemas gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/ 0000775 0000000 0000000 00000000000 13540731117 0024131 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/LifeCycleManagement.robot 0000664 0000000 0000000 00000052653 13540731117 0031047 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
*** 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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/README.md 0000664 0000000 0000000 00000000000 13540731117 0025376 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/environment/ 0000775 0000000 0000000 00000000000 13540731117 0026475 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/environment/variables.txt 0000664 0000000 0000000 00000004217 13540731117 0031212 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-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/jsons/ 0000775 0000000 0000000 00000000000 13540731117 0025265 5 ustar 00root root 0000000 0000000 AppInstSubscriptionRequest.json 0000664 0000000 0000000 00000000000 13540731117 0033423 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/jsons CreateAppInstanceRequest.json 0000664 0000000 0000000 00000000000 13540731117 0032771 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/jsons InstantiateAppRequest.json 0000664 0000000 0000000 00000000000 13540731117 0032364 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/jsons MalformedAppInstanceRequest.json 0000664 0000000 0000000 00000000000 13540731117 0033474 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/jsons MalformedInstantiateAppRequest.json 0000664 0000000 0000000 00000000000 13540731117 0034213 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/jsons OperateAppRequest.json 0000664 0000000 0000000 00000000000 13540731117 0031500 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/jsons TerminateAppRequest.json 0000664 0000000 0000000 00000000000 13540731117 0032031 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/jsons gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0025554 5 ustar 00root root 0000000 0000000 AppInstanceInfo.json 0000664 0000000 0000000 00000000000 13540731117 0031377 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/schemas AppInstanceInfos.json 0000664 0000000 0000000 00000000000 13540731117 0031562 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/schemas AppInstanceLcmOpOccs.json 0000664 0000000 0000000 00000000000 13540731117 0032326 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/MEX/LCM/schemas gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/README.md 0000664 0000000 0000000 00000002443 13540731117 0024347 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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/ 0000775 0000000 0000000 00000000000 13540731117 0023537 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/AMS/ 0000775 0000000 0000000 00000000000 13540731117 0024157 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/AMS/AMSService.robot 0000664 0000000 0000000 00000036032 13540731117 0027173 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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/AMS/README.md 0000664 0000000 0000000 00000000000 13540731117 0025424 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/AMS/environment/ 0000775 0000000 0000000 00000000000 13540731117 0026523 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/AMS/environment/variables.txt 0000664 0000000 0000000 00000001766 13540731117 0031246 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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/APPSAQ/ 0000775 0000000 0000000 00000000000 13540731117 0024524 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/APPSAQ/PlatAppServices.robot 0000664 0000000 0000000 00000006375 13540731117 0030653 0 ustar 00root root 0000000 0000000 *** Settings ***
Documentation
... A test suite for validating Application Service Availability Query (APPSAQ) operations.
Resource ../../resources/GenericKeywords.robot
Default Tags TP_MEC_SRV_APPSAQ
*** Variables ***
*** Test Cases ***
Get the available MEC services for a given application instance
[Documentation]
... Check that the IUT responds with a list of available MEC services
... for a given application instance when queried by a MEC Application
...
... Reference ETSI GS MEC 011 V2.0.8, clause 7.15.3.1
... OpenAPI https://forge.etsi.org/gitlab/mec/gs011-app-enablement-api/blob/master/Mp1.yaml#/definitions/ServiceInfo
[Tags] TP_MEC_SRV_APPSAQ_001_OK TP_MEC_SRV_APPSAQ_BV
Given the Plaform IUT has a MEC Application instantiated
Log MEC 011, clause 5.2.5
# When the Plaform IUT entity receives a vGET for /mec_service_mgmt/v1/applications/${APP_INSTANCE_ID}/services
When the Plaform IUT entity receives a vGET for /${APP_INSTANCE_ID}/services
Log MEC 011, clause 7.15.3.1
Then the Plaform IUT sends a response 200 ServiceInfoList
MEC Applications sends incorrect parameters in request
[Documentation]
... Check that the IUT responds with an error when
... a request with incorrect parameters is sent by a MEC Application
...
... Reference ETSI GS MEC 011 V2.0.8, clause 7.15.3.1
[Tags] TP_MEC_SRV_APPSAQ_001_BR TP_MEC_SRV_APPSAQ_BI
Given the Plaform IUT has a MEC Application instantiated
Log MEC 011, clause 5.2.5
Log Wrong parameter name should trigger an error response.
# When the Plaform IUT entity receives a vGET for /mec_service_mgmt/v1/applications/${APP_INSTANCE_ID}/services?instance_id=some_instance_id
When the Plaform IUT entity receives a vGET for /${APP_INSTANCE_ID}/services?instance_id=some_instance_id
Log MEC 011, clause 7.15.3.1
Then the Plaform IUT sends a response 400 ProblemDetails
New MEC Applications service registration
[Documentation]
... Check that the IUT notifies the authorised relevant (subscribed) application
... instances when a new service for a given application instance is registered
...
... Reference ETSI GS MEC 011 V2.0.8, clause 7.15.3.4
[Tags] TP_MEC_SRV_APPSAQ_002_OK TP_MEC_SRV_APPSAQ_BV
Given the Plaform IUT has a MEC Application instantiated
# TODO where does the __some_service__ data comes from?
Given a MEC Application subscribed to service notifications for __some_service__
Log MEC 011, clause 5.2.4
Log Wrong parameter name should trigger an error response.
# TODO where does the __some_data__ comes from?
# When the Plaform IUT entity receives a vPOST for /mec_service_mgmt/v1/applications/${APP_INSTANCE_ID}/services
When the Plaform IUT entity receives a vPOST for /${APP_INSTANCE_ID}/services __some_data__ ServiceInfo
Log MEC 011, clause 7.15.3.4
Then the Plaform IUT sends a response 201 ServiceInfo
And the Plaform IUT response header parameter Location __location__
Log MEC 011, clause 6.4.2
And the Plaform IUT sends a notification message to the subscribed MEC Applications with ServiceAvailabilityNotification
gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/APPSAQ/README.md 0000664 0000000 0000000 00000000000 13540731117 0025771 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/APPSUB/ 0000775 0000000 0000000 00000000000 13540731117 0024531 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/APPSUB/README.md 0000664 0000000 0000000 00000000000 13540731117 0025776 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/BWA/ 0000775 0000000 0000000 00000000000 13540731117 0024150 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/BWA/PlatBandwidthManager.robot0000664 0000000 0000000 00000036005 13540731117 0031243 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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/BWA/README.md 0000664 0000000 0000000 00000000000 13540731117 0025415 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/BWA/environment/ 0000775 0000000 0000000 00000000000 13540731117 0026514 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/BWA/environment/variables.txt 0000664 0000000 0000000 00000003244 13540731117 0031230 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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/BWA/resources/ 0000775 0000000 0000000 00000000000 13540731117 0026162 5 ustar 00root root 0000000 0000000 BandwidthManagerAPI.robot 0000664 0000000 0000000 00000004357 13540731117 0032714 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/BWA/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0025573 5 ustar 00root root 0000000 0000000 BandwidthManagementAPI.schema.json 0000664 0000000 0000000 00000056524 13540731117 0034115 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/DNS/ 0000775 0000000 0000000 00000000000 13540731117 0024163 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/DNS/README.md 0000664 0000000 0000000 00000000000 13540731117 0025430 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/FAIS/ 0000775 0000000 0000000 00000000000 13540731117 0024261 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/FAIS/README.md 0000664 0000000 0000000 00000000000 13540731117 0025526 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/README.md 0000664 0000000 0000000 00000000000 13540731117 0025004 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RLOC/ 0000775 0000000 0000000 00000000000 13540731117 0024276 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RLOC/README.md 0000664 0000000 0000000 00000000000 13540731117 0025543 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RNIS/ 0000775 0000000 0000000 00000000000 13540731117 0024312 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RNIS/README.md 0000664 0000000 0000000 00000000000 13540731117 0025557 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RNIS/RnisNotifications.robot 0000664 0000000 0000000 00000027305 13540731117 0031035 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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RNIS/RnisQuery_BI_BO.robot 0000664 0000000 0000000 00000017751 13540731117 0030267 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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RNIS/RnisQuery_BV.robot 0000664 0000000 0000000 00000007117 13540731117 0027717 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 13540731117 0033227 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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 13540731117 0032667 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RNIS/environment/ 0000775 0000000 0000000 00000000000 13540731117 0026656 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RNIS/environment/pics.txt 0000664 0000000 0000000 00000000072 13540731117 0030354 0 ustar 00root root 0000000 0000000 *** Variables ***
${PIC_RNIS_SPECIFIC_SUBSCRIPTION} 1
gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RNIS/environment/variables.txt0000664 0000000 0000000 00000002720 13540731117 0031370 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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RNIS/resources/ 0000775 0000000 0000000 00000000000 13540731117 0026324 5 ustar 00root root 0000000 0000000 LocationAPI.robot 0000664 0000000 0000000 00000000655 13540731117 0031424 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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 13540731117 0034460 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/RNIS/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0025735 5 ustar 00root root 0000000 0000000 RadioNetworkInformationAPI.schema.json 0000664 0000000 0000000 00000054113 13540731117 0035164 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/SAQ/ 0000775 0000000 0000000 00000000000 13540731117 0024163 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/SAQ/README.md 0000664 0000000 0000000 00000000000 13540731117 0025430 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/SRVSUB/ 0000775 0000000 0000000 00000000000 13540731117 0024563 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/SRVSUB/README.md 0000664 0000000 0000000 00000000000 13540731117 0026030 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/TIME/ 0000775 0000000 0000000 00000000000 13540731117 0024275 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/TIME/README.md 0000664 0000000 0000000 00000000000 13540731117 0025542 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/TRAF/ 0000775 0000000 0000000 00000000000 13540731117 0024273 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/TRAF/README.md 0000664 0000000 0000000 00000000000 13540731117 0025540 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/TRANS/ 0000775 0000000 0000000 00000000000 13540731117 0024426 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/TRANS/README.md 0000664 0000000 0000000 00000000000 13540731117 0025673 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UEAREASUB/ 0000775 0000000 0000000 00000000000 13540731117 0025053 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UEAREASUB/README.md 0000664 0000000 0000000 00000000000 13540731117 0026320 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UEDISTLOOK/ 0000775 0000000 0000000 00000000000 13540731117 0025221 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UEDISTLOOK/README.md 0000664 0000000 0000000 00000000000 13540731117 0026466 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UEDISTSUB/ 0000775 0000000 0000000 00000000000 13540731117 0025106 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UEDISTSUB/README.md 0000664 0000000 0000000 00000000000 13540731117 0026353 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UEINFLOOK/ 0000775 0000000 0000000 00000000000 13540731117 0025072 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UEINFLOOK/README.md 0000664 0000000 0000000 00000000000 13540731117 0026337 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UEINFSUB/ 0000775 0000000 0000000 00000000000 13540731117 0024757 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UEINFSUB/README.md 0000664 0000000 0000000 00000000000 13540731117 0026224 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UELOC/ 0000775 0000000 0000000 00000000000 13540731117 0024406 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UELOC/README.md 0000664 0000000 0000000 00000000000 13540731117 0025653 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UELOCSUB/ 0000775 0000000 0000000 00000000000 13540731117 0024760 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UELOCSUB/README.md 0000664 0000000 0000000 00000000000 13540731117 0026225 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UETAG/ 0000775 0000000 0000000 00000000000 13540731117 0024404 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UETAG/PlatUeIdentity.robot 0000664 0000000 0000000 00000017140 13540731117 0030362 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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UETAG/README.md 0000664 0000000 0000000 00000000000 13540731117 0025651 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UETAG/environment/ 0000775 0000000 0000000 00000000000 13540731117 0026750 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000001074 13540731117 0031404 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UETAG/resources/ 0000775 0000000 0000000 00000000000 13540731117 0026416 5 ustar 00root root 0000000 0000000 LocationAPI.robot 0000664 0000000 0000000 00000000655 13540731117 0031516 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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 13540731117 0032033 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UETAG/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0026027 5 ustar 00root root 0000000 0000000 UeIdentityTagInfo.schema.json 0000664 0000000 0000000 00000005136 13540731117 0033442 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UETRACKSUB/ 0000775 0000000 0000000 00000000000 13540731117 0025207 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/SRV/UETRACKSUB/README.md 0000664 0000000 0000000 00000000000 13540731117 0026454 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/TODO.md 0000664 0000000 0000000 00000014514 13540731117 0024161 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-b684e8ae94416fe3b939ca39f4d026db514386cb/examples/ 0000775 0000000 0000000 00000000000 13540731117 0024703 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/examples/emptyschema/ 0000775 0000000 0000000 00000000000 13540731117 0027222 5 ustar 00root root 0000000 0000000 EmptySchema.robot 0000664 0000000 0000000 00000000466 13540731117 0032437 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/examples/emptyschema/jsons/ 0000775 0000000 0000000 00000000000 13540731117 0030356 5 ustar 00root root 0000000 0000000 test.json 0000664 0000000 0000000 00000000111 13540731117 0032142 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/examples/emptyschema/jsons {
"test": "empty schema test",
"result": "should work with this json"
} gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/examples/emptyschema/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0030645 5 ustar 00root root 0000000 0000000 EmptySchema.json 0000664 0000000 0000000 00000000104 13540731117 0033673 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/examples/emptyschema/schemas {
"type": "object",
"properties": {
},
"required": []
} gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/outputs/ 0000775 0000000 0000000 00000000000 13540731117 0024610 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/outputs/README.md 0000664 0000000 0000000 00000000001 13540731117 0026056 0 ustar 00root root 0000000 0000000
gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/pics.txt 0000664 0000000 0000000 00000000305 13540731117 0024562 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
gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/red.xml 0000664 0000000 0000000 00000002033 13540731117 0024357 0 ustar 00root root 0000000 0000000
2
WORKSPACE
true
1024
true
true
false
gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/requirements.txt 0000664 0000000 0000000 00000000453 13540731117 0026353 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-b684e8ae94416fe3b939ca39f4d026db514386cb/schemas/ 0000775 0000000 0000000 00000000000 13540731117 0024510 5 ustar 00root root 0000000 0000000 ServiceInfoList.schema.json 0000664 0000000 0000000 00000001514 13540731117 0031634 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/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-b684e8ae94416fe3b939ca39f4d026db514386cb/schemas/UserInfo.schema.json 0000664 0000000 0000000 00000004513 13540731117 0030377 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-b684e8ae94416fe3b939ca39f4d026db514386cb/scripts/ 0000775 0000000 0000000 00000000000 13540731117 0024554 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/scripts/build-container.sh 0000775 0000000 0000000 00000001342 13540731117 0030172 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-b684e8ae94416fe3b939ca39f4d026db514386cb/scripts/docker/ 0000775 0000000 0000000 00000000000 13540731117 0026023 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-b684e8ae94416fe3b939ca39f4d026db514386cb/scripts/docker/Dockerfile 0000664 0000000 0000000 00000002151 13540731117 0030014 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-b684e8ae94416fe3b939ca39f4d026db514386cb/scripts/launch-validation.sh 0000775 0000000 0000000 00000000241 13540731117 0030512 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-b684e8ae94416fe3b939ca39f4d026db514386cb/scripts/run-all.bash 0000775 0000000 0000000 00000001533 13540731117 0026772 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-b684e8ae94416fe3b939ca39f4d026db514386cb/scripts/run-container.sh 0000775 0000000 0000000 00000000427 13540731117 0027702 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 $?
|