pax_global_header 0000666 0000000 0000000 00000000064 13536650324 0014521 g ustar 00root root 0000000 0000000 52 comment=ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2
gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/ 0000775 0000000 0000000 00000000000 13536650324 0023305 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/GenericKeywords.robot 0000664 0000000 0000000 00000002572 13536650324 0027466 0 ustar 00root root 0000000 0000000 *** Settings ***
Library JSONSchemaLibrary schemas/
Library BuiltIn
*** Variables ***
${response}
*** Keywords ***
Check HTTP Response Status Code Is
[Arguments] ${expected_status}
${status}= Convert To Integer ${expected_status}
Should Be Equal ${response['status']} ${status}
Log Status code validated
Check HTTP Response Body Json Schema Is
[Arguments] ${input}
Should Contain ${response['headers']['Content-Type']} application/json
${schema} = Catenate SEPARATOR= ${input} .schema.json
Validate Json ${schema} ${response['body']}
Log Json Schema Validation OK
Should Be Present In Json List
[Arguments] ${expr} ${json_field} ${json_value}
Log Check if ${json_field} is present in ${expr} with the value ${jsonvalue}
:FOR ${item} IN @{expr}
\ Exit For Loop If "${item['${json_field}']}" == "${json_value}"
Log Item found ${item}
[return] ${item}
Check Result Contains
[Arguments] ${source} ${parameter} ${value}
Should Be Present In Json List ${source} ${parameter} ${value}
Check ProblemDetails
[Arguments] ${expected_status}
${status}= Convert To Integer ${expected_status}
Should Be Equal ${response['body']['problemDetails']['status']} ${status}
Log ProblemDetails Status code validated
gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/LICENSE 0000664 0000000 0000000 00000002703 13536650324 0024314 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/ 0000775 0000000 0000000 00000000000 13536650324 0023725 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/GRANT/ 0000775 0000000 0000000 00000000000 13536650324 0024600 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/GRANT/README.md 0000664 0000000 0000000 00000000000 13536650324 0026045 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/PKGM/ 0000775 0000000 0000000 00000000000 13536650324 0024463 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/PKGM/README.md 0000664 0000000 0000000 00000000000 13536650324 0025730 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/UEAPPCTX/ 0000775 0000000 0000000 00000000000 13536650324 0025156 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/UEAPPCTX/README.md 0000664 0000000 0000000 00000000000 13536650324 0026423 0 ustar 00root root 0000000 0000000 SysUeAppsContext.robot 0000664 0000000 0000000 00000000710 13536650324 0031405 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/UEAPPCTX ''[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/UEAppInterfaceAPI.robot
Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
*** Test Cases ***
*** Keywords ***
gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/UEAPPCTX/environment/ 0000775 0000000 0000000 00000000000 13536650324 0027522 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000000365 13536650324 0032160 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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
gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/UEAPPCTX/resources/ 0000775 0000000 0000000 00000000000 13536650324 0027170 5 ustar 00root root 0000000 0000000 UEAppInterfaceAPI.robot 0000664 0000000 0000000 00000000432 13536650324 0033304 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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 ***
gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/UEAPPCTX/schemas/ 0000775 0000000 0000000 00000000000 13536650324 0026601 5 ustar 00root root 0000000 0000000 UEAppInterfaceAPI.schema.json 0000664 0000000 0000000 00000045341 13536650324 0034010 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/UEAPPS/ 0000775 0000000 0000000 00000000000 13536650324 0024722 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEO/UEAPPS/README.md 0000664 0000000 0000000 00000000000 13536650324 0026167 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEPM/ 0000775 0000000 0000000 00000000000 13536650324 0024043 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEPM/PKGM/ 0000775 0000000 0000000 00000000000 13536650324 0024601 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEPM/PKGM/README.md 0000664 0000000 0000000 00000000000 13536650324 0026046 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEX/ 0000775 0000000 0000000 00000000000 13536650324 0023736 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEX/ANY/ 0000775 0000000 0000000 00000000000 13536650324 0024365 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEX/ANY/README.md 0000664 0000000 0000000 00000000000 13536650324 0025632 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEX/LCM/ 0000775 0000000 0000000 00000000000 13536650324 0024351 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/MEX/LCM/README.md 0000664 0000000 0000000 00000000000 13536650324 0025616 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/README.md 0000664 0000000 0000000 00000002443 13536650324 0024567 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/ 0000775 0000000 0000000 00000000000 13536650324 0023757 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/AMS/ 0000775 0000000 0000000 00000000000 13536650324 0024377 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/AMS/AMSService.robot 0000664 0000000 0000000 00000036032 13536650324 0027413 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/AMS/README.md 0000664 0000000 0000000 00000000000 13536650324 0025644 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/AMS/environment/ 0000775 0000000 0000000 00000000000 13536650324 0026743 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/AMS/environment/variables.txt 0000664 0000000 0000000 00000001766 13536650324 0031466 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/APPSAQ/ 0000775 0000000 0000000 00000000000 13536650324 0024744 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/APPSAQ/PlatAppServices.robot 0000664 0000000 0000000 00000006375 13536650324 0031073 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/APPSAQ/README.md 0000664 0000000 0000000 00000000000 13536650324 0026211 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/APPSUB/ 0000775 0000000 0000000 00000000000 13536650324 0024751 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/APPSUB/README.md 0000664 0000000 0000000 00000000000 13536650324 0026216 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/BWA/ 0000775 0000000 0000000 00000000000 13536650324 0024370 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/BWA/PlatBandwidthManager.robot0000664 0000000 0000000 00000037332 13536650324 0031467 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
${allocation_id} ${etag_value}= 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 ${allocation_id}
Updates the requested bandwidth requirements using wrong allocationDirection
[Documentation] TC_MEC_SRV_BWA_004_BR
... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.2
... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
# Preamble
${allocation_id} ${etag_value}= 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 ${allocation_id}
Updates the requested bandwidth requirements using wrong allocationId
[Documentation] TC_MEC_SRV_BWA_004_NF
... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.2
... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
Update a bandwidth allocation ${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
${allocation_id} ${etag_value}= 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 ${allocation_id}
Request for deltas changes
[Documentation] TC_MEC_SRV_BWA_005_OK
... Check that the IUT when provided with just the changes (deltas) updates the requested bandwidth requirements when commanded by a MEC Application
... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.3
... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
# Preamble
${allocation_id} ${etag_value}= 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 ${allocation_id}
Request for deltas changes using invalid requestType
[Documentation] TC_MEC_SRV_BWA_005_BR
... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.3
... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
# Preamble
${allocation_id} ${etag_value}= 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 ${allocation_id}
Request for deltas changes using an unknown URI
[Documentation] TC_MEC_SRV_BWA_005_NF
... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.3
... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
Request a deltas changes ${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
${allocation_id} ${etag_value}= 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 ${allocation_id}
Request to unregister bandwidth Management Service
[Documentation] TC_MEC_SRV_BWA_006_OK
... Check that the IUT unregisters from the Bandwidth Management Service when commanded by a MEC Application
... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.5
... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
# Preamble
Should Be True ${PIC_MEC_PLAT} == 1
Should Be True ${PIC_SERVICES} == 1
${allocation_id} ${etag_value}= 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_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
# 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_LABEL}":"${ETAG}"}
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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/BWA/README.md 0000664 0000000 0000000 00000000000 13536650324 0025635 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/BWA/environment/ 0000775 0000000 0000000 00000000000 13536650324 0026734 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/BWA/environment/variables.txt 0000664 0000000 0000000 00000003302 13536650324 0031443 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
${ETAG_LABEL} Location
${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
gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/BWA/resources/ 0000775 0000000 0000000 00000000000 13536650324 0026402 5 ustar 00root root 0000000 0000000 BandwidthManagerAPI.robot 0000664 0000000 0000000 00000004304 13536650324 0033124 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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
${etag_value}= ${response['status']['${etag_label}']}
# TODO Extract allocationId
${allocation_id}= 'todo'
[return] ${allocation_id} ${etag_value}
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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/BWA/schemas/ 0000775 0000000 0000000 00000000000 13536650324 0026013 5 ustar 00root root 0000000 0000000 BandwidthManagementAPI.schema.json 0000664 0000000 0000000 00000056524 13536650324 0034335 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/DNS/ 0000775 0000000 0000000 00000000000 13536650324 0024403 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/DNS/README.md 0000664 0000000 0000000 00000000000 13536650324 0025650 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/FAIS/ 0000775 0000000 0000000 00000000000 13536650324 0024501 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/FAIS/README.md 0000664 0000000 0000000 00000000000 13536650324 0025746 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/README.md 0000664 0000000 0000000 00000000000 13536650324 0025224 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RLOC/ 0000775 0000000 0000000 00000000000 13536650324 0024516 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RLOC/README.md 0000664 0000000 0000000 00000000000 13536650324 0025763 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RNIS/ 0000775 0000000 0000000 00000000000 13536650324 0024532 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RNIS/README.md 0000664 0000000 0000000 00000000000 13536650324 0025777 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RNIS/RnisNotifications.robot 0000664 0000000 0000000 00000027305 13536650324 0031255 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RNIS/RnisQuery_BI_BO.robot 0000664 0000000 0000000 00000017751 13536650324 0030507 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RNIS/RnisQuery_BV.robot 0000664 0000000 0000000 00000007117 13536650324 0030137 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 13536650324 0033447 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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 13536650324 0033107 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RNIS/environment/ 0000775 0000000 0000000 00000000000 13536650324 0027076 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RNIS/environment/pics.txt 0000664 0000000 0000000 00000000072 13536650324 0030574 0 ustar 00root root 0000000 0000000 *** Variables ***
${PIC_RNIS_SPECIFIC_SUBSCRIPTION} 1
gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RNIS/environment/variables.txt0000664 0000000 0000000 00000002720 13536650324 0031610 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RNIS/resources/ 0000775 0000000 0000000 00000000000 13536650324 0026544 5 ustar 00root root 0000000 0000000 LocationAPI.robot 0000664 0000000 0000000 00000000655 13536650324 0031644 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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 13536650324 0034700 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/RNIS/schemas/ 0000775 0000000 0000000 00000000000 13536650324 0026155 5 ustar 00root root 0000000 0000000 RadioNetworkInformationAPI.schema.json 0000664 0000000 0000000 00000054113 13536650324 0035404 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/SAQ/ 0000775 0000000 0000000 00000000000 13536650324 0024403 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/SAQ/README.md 0000664 0000000 0000000 00000000000 13536650324 0025650 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/SRVSUB/ 0000775 0000000 0000000 00000000000 13536650324 0025003 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/SRVSUB/README.md 0000664 0000000 0000000 00000000000 13536650324 0026250 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/TIME/ 0000775 0000000 0000000 00000000000 13536650324 0024515 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/TIME/README.md 0000664 0000000 0000000 00000000000 13536650324 0025762 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/TRAF/ 0000775 0000000 0000000 00000000000 13536650324 0024513 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/TRAF/README.md 0000664 0000000 0000000 00000000000 13536650324 0025760 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/TRANS/ 0000775 0000000 0000000 00000000000 13536650324 0024646 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/TRANS/README.md 0000664 0000000 0000000 00000000000 13536650324 0026113 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UEAREASUB/ 0000775 0000000 0000000 00000000000 13536650324 0025273 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UEAREASUB/README.md 0000664 0000000 0000000 00000000000 13536650324 0026540 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UEDISTLOOK/ 0000775 0000000 0000000 00000000000 13536650324 0025441 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UEDISTLOOK/README.md 0000664 0000000 0000000 00000000000 13536650324 0026706 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UEDISTSUB/ 0000775 0000000 0000000 00000000000 13536650324 0025326 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UEDISTSUB/README.md 0000664 0000000 0000000 00000000000 13536650324 0026573 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UEINFLOOK/ 0000775 0000000 0000000 00000000000 13536650324 0025312 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UEINFLOOK/README.md 0000664 0000000 0000000 00000000000 13536650324 0026557 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UEINFSUB/ 0000775 0000000 0000000 00000000000 13536650324 0025177 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UEINFSUB/README.md 0000664 0000000 0000000 00000000000 13536650324 0026444 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UELOC/ 0000775 0000000 0000000 00000000000 13536650324 0024626 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UELOC/README.md 0000664 0000000 0000000 00000000000 13536650324 0026073 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UELOCSUB/ 0000775 0000000 0000000 00000000000 13536650324 0025200 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UELOCSUB/README.md 0000664 0000000 0000000 00000000000 13536650324 0026445 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UETAG/ 0000775 0000000 0000000 00000000000 13536650324 0024624 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UETAG/PlatUeIdentity.robot 0000664 0000000 0000000 00000017140 13536650324 0030602 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UETAG/README.md 0000664 0000000 0000000 00000000000 13536650324 0026071 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UETAG/environment/ 0000775 0000000 0000000 00000000000 13536650324 0027170 5 ustar 00root root 0000000 0000000 variables.txt 0000664 0000000 0000000 00000001074 13536650324 0031624 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UETAG/resources/ 0000775 0000000 0000000 00000000000 13536650324 0026636 5 ustar 00root root 0000000 0000000 LocationAPI.robot 0000664 0000000 0000000 00000000655 13536650324 0031736 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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 13536650324 0032253 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UETAG/schemas/ 0000775 0000000 0000000 00000000000 13536650324 0026247 5 ustar 00root root 0000000 0000000 UeIdentityTagInfo.schema.json 0000664 0000000 0000000 00000005136 13536650324 0033662 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UETRACKSUB/ 0000775 0000000 0000000 00000000000 13536650324 0025427 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/SRV/UETRACKSUB/README.md 0000664 0000000 0000000 00000000000 13536650324 0026674 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/TODO.md 0000664 0000000 0000000 00000014514 13536650324 0024401 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/examples/ 0000775 0000000 0000000 00000000000 13536650324 0025123 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/examples/emptyschema/ 0000775 0000000 0000000 00000000000 13536650324 0027442 5 ustar 00root root 0000000 0000000 EmptySchema.robot 0000664 0000000 0000000 00000000466 13536650324 0032657 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/examples/emptyschema/jsons/ 0000775 0000000 0000000 00000000000 13536650324 0030576 5 ustar 00root root 0000000 0000000 test.json 0000664 0000000 0000000 00000000111 13536650324 0032362 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/examples/emptyschema/jsons {
"test": "empty schema test",
"result": "should work with this json"
} gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/examples/emptyschema/schemas/ 0000775 0000000 0000000 00000000000 13536650324 0031065 5 ustar 00root root 0000000 0000000 EmptySchema.json 0000664 0000000 0000000 00000000104 13536650324 0034113 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/examples/emptyschema/schemas {
"type": "object",
"properties": {
},
"required": []
} gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/outputs/ 0000775 0000000 0000000 00000000000 13536650324 0025030 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/outputs/README.md 0000664 0000000 0000000 00000000001 13536650324 0026276 0 ustar 00root root 0000000 0000000
gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/pics.txt 0000664 0000000 0000000 00000000305 13536650324 0025002 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/red.xml 0000664 0000000 0000000 00000002033 13536650324 0024577 0 ustar 00root root 0000000 0000000
2
WORKSPACE
true
1024
true
true
false
gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/requirements.txt 0000664 0000000 0000000 00000000453 13536650324 0026573 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/schemas/ 0000775 0000000 0000000 00000000000 13536650324 0024730 5 ustar 00root root 0000000 0000000 ServiceInfoList.schema.json 0000664 0000000 0000000 00000001514 13536650324 0032054 0 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/schemas/UserInfo.schema.json 0000664 0000000 0000000 00000004513 13536650324 0030617 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/scripts/ 0000775 0000000 0000000 00000000000 13536650324 0024774 5 ustar 00root root 0000000 0000000 gs032p3-robot-test-suite-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/scripts/launch-validation.sh 0000664 0000000 0000000 00000000241 13536650324 0030727 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-ccbd8c7c8a92744e40a35f2949ae8c6f419aadd2/scripts/run-all.bash 0000664 0000000 0000000 00000001143 13536650324 0027204 0 ustar 00root root 0000000 0000000 #!/bin/bash
## Launch robot tests validator
/bin/bash /scripts/launch-validation.sh > logs/robot_stdout.log 2> logs/robot_stderr.log
## Filter failed Keywords
grep -r10n "| FAIL |" logs/robot_stdout.log | grep -v "Output:" | grep -v "Log:" | grep -v "Report:" > logs/failures.log
rm -f logs/robot_stdout.log
## Filter Errors on code
grep -rn " ERROR " logs/robot_stderr.log | grep -v "File has no tests or tasks" > logs/errors.log
rm -f logs/robot_stderr.log
ERRORS=`awk 'END{print NR}' logs/errors.log logs/failures.log`
if [ "${ERRORS}" -eq 0 ]; then
rm -f logs/errors.log
rm -f logs/failures.log
fi |