diff --git a/SRV/BWA/PlatBandwidthManager.robot b/SRV/BWA/PlatBandwidthManager.robot new file mode 100644 index 0000000000000000000000000000000000000000..3b6ad1aa72e0386fa79d774282e4b26c1a394459 --- /dev/null +++ b/SRV/BWA/PlatBandwidthManager.robot @@ -0,0 +1,171 @@ +''[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 + Get 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 + Get the list of configured bandwidth allocations ${NON_EXISTENT_APP_INSTANCE_ID} + Check HTTP Response Status Code Is 400 + Check ProblemDetails 400 + + +Request for the requested bandwidth requirements + [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 requirements ${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 for the requested bandwidth requirements 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 requirements ${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 + 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} + + + [Documentation] TC_MEC_SRV_BWA_004_BR + Updates the requested bandwidth requirements using wrong allocationDirection + ... 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 + Update a bandwidth allocation ${ALLOCATION_ID} ${REQUEST_FOR_BW_REQUIREMENTS_ID} + Check HTTP Response Status Code Is 400 + Check ProblemDetails 400 + + +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??? + Update a bandwidth allocation ${ALLOCATION_ID} ${REQUEST_FOR_BW_REQUIREMENTS} + Check HTTP Response Status Code Is 412 + Check ProblemDetails 412 + + +*** Keywords *** + Get 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=${app_instance_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + Registration for bandwidth requirements + [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} + Put /exampleAPI/bwm/v1/bw_allocations?app_instance_id=${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=${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 {"Content-Length":"0"} + Put /exampleAPI/bwm/v1/bw_allocations?allocation_id=${allocation_id} ${content} + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/SRV/BWA/environment/variables.txt b/SRV/BWA/environment/variables.txt new file mode 100644 index 0000000000000000000000000000000000000000..935123377f9d8c76b4c31e925f6443e6f47f8933 --- /dev/null +++ b/SRV/BWA/environment/variables.txt @@ -0,0 +1,17 @@ +*** 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 +${ALLOCATION_ID} allInst01 +${NON_EXISTENT_ALLOCATION_ID} allInst99 +${FIXED_ALLOCATION} string +${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_BW_REQUIREMENTS_ID} "{ "appInsId": "${APP_INSTANCE_ID}", "requestType": "APPLICATION_SPECIFIC_BW_ALLOCATION", "fixedBWPriority": "not defined in the present document", "fixedAllocation": "${FIXED_ALLOCATION}", "allocationDirection": "99 = DownAndDownlink (towards the UE)"}" +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/SRV/BWA/resources/BandwidthManagerAPI.robot b/SRV/BWA/resources/BandwidthManagerAPI.robot new file mode 100644 index 0000000000000000000000000000000000000000..4e55077ebede56d3f2576400bcb5d16d3d125381 --- /dev/null +++ b/SRV/BWA/resources/BandwidthManagerAPI.robot @@ -0,0 +1,21 @@ +*** 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 AppInstanceId + [Arguments] ${value} + Log Check AppInstanceId for bwInfo element + Should be Equal ${response['body']['bwInfo']['appInsId']} ${value} + Log AppInstanceId OK + + +Check AllocationId + [Arguments] ${value} + Log Check AllocationId for bwInfo element + Should be Equal ${response['body']['bwInfo']['fixedAllocation']} ${value} + Log AllocationId OK diff --git a/SRV/BWA/schemas/BandwidthManagementAPI.schema.json b/SRV/BWA/schemas/BandwidthManagementAPI.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..10e0963b637512fdae20809aa7a5c61ac8be91a6 --- /dev/null +++ b/SRV/BWA/schemas/BandwidthManagementAPI.schema.json @@ -0,0 +1,674 @@ +{ + "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" + } + } + } + diff --git a/TODO.md b/TODO.md index 5258fa22f24a1b999ea9728299e3287747fe8118..ff79079e37c0dcbc4e075d8a18bdc7deccf22c15 100644 --- a/TODO.md +++ b/TODO.md @@ -22,7 +22,25 @@ ETSI GS MEC 016 V2.1.1 https://forge.etsi.org/rep/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/MEO/UEAPPS/SysUeApplications.tplan2 -TODO +- 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 ## SRV