{
"associateUeAppId":"MyNewWornderfulDevAppId",
"contextId": "1",
"callbackReference": "http://127.0.0.1/callbackuri",
"appInfo":{
"appName":"MyNewWornderfulApp",
"appProvider":"TTF012",
"appDVersion":"v0.0.1",
"userAppInstanceInfo":[
{
}
]
}
}
{
"properties": {
"appAutoInstantiation": {
"description": "Provides indication to the MEC system that instantiation of the requested application is desired should a requested appLocation become available that was not at the time of the request.",
"type": "boolean",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Boolean"
},
"appInfo": {
"description": "",
"properties": {
"appDId": {
"description": "Identifier of this MEC application descriptor. This attribute shall be globally unique. It is equivalent to the appDId defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1]. It shall be present if the application is one in the ApplicationList.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"appDVersion": {
"description": "Identifies the version of the application descriptor. It is equivalent to the appDVersion defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1].",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appDescription": {
"description": "Human readable description of the MEC application. The length of the value shall not exceed 128 characters.",
"type": "string",
"maxLength": 128,
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"appName": {
"description": "Name of the MEC application. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appProvider": {
"description": "Provider of the MEC application.\nThe length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appSoftVersion": {
"description": "Software version of the MEC application. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"appPackageSource": {
"description": "URI of the application package.\nIncluded 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 0102 [1].",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "URI"
},
"userAppInstanceInfo": {
"description": "List of user application instance information.",
"items": {
"type": "object",
"properties": {
"appInstanceId": {
"description": "Identifier of the user application instance. It shall only be included in the response.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"appLocation": {
"properties": {
"area": {
"properties": {
"coordinates": {
"items": {
"items": {
"items": {
"type": "number",
"format": "float"
},
"type": "array"
},
"type": "array"
},
"minItems": 1,
"type": "array",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "array"
}
},
"type": "object"
},
"civicAddressElement": {
"description": "Zero or more elements comprising the civic address. Shall be absent if the \"area\" attribute is present.",
"items": {
"type": "object",
"properties": {
"caType": {
"description": "Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776 [6]. ",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Integer"
},
"caValue": {
"description": "Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776 [6].",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
}
},
"minItems": 0,
"required": [
"caType",
"caValue"
],
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "array (Structure inlined)"
},
"countryCode": {
"description": "The two-letter ISO 3166 [7] country code in capital letters. Shall be present in case the \"area\" attribute is absent. May be absent if the \"area\" attribute is present (see note).",
"type": "string",
"maxLength": 2,
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"type": "object",
"x-etsi-notes": "NOTE:\tIf both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.",
"x-etsi-ref": "6.5.2"
},
"referenceURI": {
"description": "Address of the user application instance. It shall only be included in the response.",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "URI"
}
}
},
"minItems": 1,
"type": "array",
"x-etsi-mec-cardinality": "1..N",
"x-etsi-mec-origin-type": "array (Structure inlined)"
}
},
"required": [
"appName",
"appProvider",
"appDVersion",
"userAppInstanceInfo"
],
"type": "object",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Structure (inlined)"
},
"appLocationUpdates": {
"description": "Used by the device application to request to receive notifications at the callbackReference URI relating to location availability for user application instantiation.",
"type": "boolean",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Boolean"
},
"associateDevAppId": {
"description": "Uniquely identifies the device application. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"callbackReference": {
"description": "URI assigned by the device application to receive application lifecycle related notifications. Inclusion in the request implies the client supports the pub/sub mechanism and is capable of receiving notifications. This endpoint shall be maintained for the lifetime of the application context.",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "URI"
},
"contextId": {
"description": "Uniquely identifies the application context in the MEC system. Assigned by the MEC system and shall be present other than in a create request. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"associateDevAppId",
"appInfo"
],
"type": "object",
"x-etsi-notes": "NOTE 1:\tIf a value of the attribute is included in the request, the same value shall be included in the response.\nNOTE 2:\tThe design of the current operation with callback reference assumes no web proxy between the entity that originates the notification and the entity that receives it.\nNOTE 3:\tThe language support for the application description may be limited.\nNOTE 4:\tAttribute appLocationUpdates and appAutoInstantiation shall not both be set to TRUE.",
"x-etsi-ref": "6.2.3"
}
\ No newline at end of file
''[Documentation] robot --outputdir ../../outputs ./SysUeApplicationsLocation.robot
*** Settings ***
Resource environment/variables.txt
Resource ../../../pics.txt
Resource ../../../GenericKeywords.robot
Library OperatingSystem
Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
*** Test Cases ***
TP_MEC_MEC016_MEO_UEAPPLOC_001_OK
[Documentation]
... Check that the IUT sends the locations available for instantiation of a specific user application when requested by an UE Application
... Reference ETSI GS MEC 016 2.2.1, clause 7.6.3.4
... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Obtain Application Location Availability Task AppLocationAvailability.json
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ApplicationLocationAvailability
Should Be Equal As Strings ${response['body']['appInfo']['appName']} MyNewWornderfulApp
TP_MEC_MEC016_MEO_UEAPPLOC_001_BR
[Documentation]
... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
... Reference ETSI GS MEC 016 2.2.1, clause 7.6.3.4
... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Obtain Application Location Availability Task AppLocationAvailability_BR.json
Check HTTP Response Status Code Is 400
TP_MEC_MEC016_MEO_UEAPPCTX_001_NF
[Documentation]
... Check that the IUT responds with an error when a request with incorrect URL is sent by a MEC Application
... Reference ETSI GS MEC 016 2.2.1, clause 7.6.3.4
... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Obtain Application Location Availability Task using wrong endpoint AppLocationAvailability.json
Check HTTP Response Status Code Is 404
*** Keywords ***
Obtain Application Location Availability Task
[Arguments] ${content}
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
${path}= Catenate SEPARATOR= jsons/ ${content}
${body} Get File ${path}
Post ${apiRoot}/${apiName}/${apiVersion}/obtain_app_loc_availability ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Obtain Application Location Availability Task using wrong endpoint
[Arguments] ${content}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
${path}= Catenate SEPARATOR= jsons/ ${content}
${body} Get File ${path}
Post ${apiRoot}/${apiName}/${apiVersion}/obtain_app_loc_availability_error ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
*** Variables ***
${apiRoot}
${apiName} dev_app
${apiVersion} v1
${MEC-APP_SCHEMA} http
${MEC-APP_HOST} 192.168.56.1
${MEC-APP_PORT} 8081
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
{
"associateDevAppId":"MyNewWornderfulDevAppId",
"appInfo":{
"appName":"MyNewWornderfulApp",
"appProvider":"TF012",
"appDVersion":"v0.0.1"
}
}
\ No newline at end of file
{
"associateDevAppId":"MyNewWornderfulDevAppId",
"appInfo":{
"app":"MyNewWornderfulApp",
"appProvider":"TF012",
"appDVersion":"v0.0.1"
}
}
\ No newline at end of file
{
"properties": {
"appInfo": {
"description": "",
"properties": {
"appDVersion": {
"description": "Identifies the version of the application descriptor. It is equivalent to the appDVersion defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1].",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appDescription": {
"description": "Human readable description of the MEC application. The length of the value shall not exceed 128 characters.",
"type": "string",
"maxLength": 128,
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"appName": {
"description": "Name of the MEC application. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appPackageSource": {
"description": "URI of the application package. Shall be included in the request. The application package shall comply with the definitions in clause 6.2.1.2 of ETSI GS MEC 0102 [1].",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "URI"
},
"appProvider": {
"description": "Provider of the MEC application. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appSoftVersion": {
"description": "Software version of the MEC application. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"availableLocations": {
"description": "MEC application location constraints. ",
"items": {
"type": "object",
"properties": {
"appLocation": {
"properties": {
"area": {
"properties": {
"coordinates": {
"items": {
"items": {
"items": {
"type": "number",
"format": "float"
},
"type": "array"
},
"type": "array"
},
"minItems": 1,
"type": "array",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "array"
}
},
"type": "object"
},
"civicAddressElement": {
"description": "Zero or more elements comprising the civic address. Shall be absent if the \"area\" attribute is present.",
"items": {
"type": "object",
"properties": {
"caType": {
"description": "Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776 [6]. ",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Integer"
},
"caValue": {
"description": "Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776 [6].",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
}
},
"minItems": 0,
"required": [
"caType",
"caValue"
],
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "array (Structure inlined)"
},
"countryCode": {
"description": "The two-letter ISO 3166 [7] country code in capital letters. Shall be present in case the \"area\" attribute is absent. May be absent if the \"area\" attribute is present (see note).",
"type": "string",
"maxLength": 2,
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"type": "object",
"x-etsi-notes": "NOTE:\tIf both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.",
"x-etsi-ref": "6.5.2"
}
}
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "array (Structure (inline))"
}
},
"required": [
"appName",
"appProvider",
"appDVersion"
],
"type": "object",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Structure (inlined)"
},
"associateDevAppId": {
"description": "Uniquely identifies the device application. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"associateDevAppId",
"appInfo"
],
"type": "object",
"x-etsi-ref": "6.2.4"
}
\ No newline at end of file
......@@ -2,87 +2,99 @@
... Test Suite to validate Bandwidth Management API (APPCTX) operations.
*** Settings ***
Resource ../UEAPPCTX/environment/variables.txt
Resource ../../pics.txt
Resource ../../GenericKeywords.robot
Resource ../UEAPPCTX/resources/UeAppsContextAPI.robot
Resource environment/variables.txt
Resource ../../../pics.txt
Resource ../../../GenericKeywords.robot
Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
*** Test Cases ***
Get the list of the application contexts
[Documentation] TC_MEC_MEO_UEAPPS_001_OK
TP_MEC_MEC016_MEO_UEAPPS_001_OK
[Documentation]
... Check that the IUT responds with the list of user applications available when requested by an UE Application
... Reference ETSI GS MEC 016 V1.1.1, clause 7.3.3.1
... Reference ETSI GS MEC 016 v2.2.1, clause 7.3.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList
# Preamble
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Create an application context
# Test Body
Retrieve the application contexts list ${APP_NAME}
Retrieve the application contexts list
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AppInfo
Should Be True ${response['body']['appInfo']['appInfo'][0]['appName']} == ${APP_NAME}
# Postamble
Delete an application context ${APP_CTX_ID}
Get the list of the application contexts with wrong parameter
[Documentation] TC_MEC_MEO_UEAPPS_001_BR
... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
... Reference ETSI GS MEC 016 V1.1.1, clause 7.3.3.1
Check HTTP Response Body Json Schema Is ApplicationList
## Post condition
FOR ${appInfo} IN @{response['body']['appList']}
${passed} Run Keyword And Return Status Should Be Equal As Strings ${appInfo['appInfo']['appName']} ${APP_NAME}
Exit For Loop If ${passed}
END
Should Be True ${passed}
TP_MEC_MEC016_MEO_UEAPPS_001_NF
[Documentation]
... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
... Reference ETSI GS MEC 016 v2.2.1, clause 7.3.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList
# Preamble
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Create an application context
# Test Body
Retrieve the application contexts list with serviceCont ${SERVICE_CONT_BR}
Check HTTP Response Status Code Is 400
Check ProblemDetails 400
# Postamble
Delete an application context ${APP_CTX_ID}
Retrieve the application contexts list using wrong endpoint
Check HTTP Response Status Code Is 404
Get the list of the application contexts with non esistent parameter
[Documentation] TC_MEC_MEO_UEAPPS_001_NF
... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
... Reference ETSI GS MEC 016 V1.1.1, clause 7.3.3.1
TP_MEC_MEC016_MEO_UEAPPS_002_OK
[Documentation]
... Check that the IUT responds with the list of user applications available when requested by an UE Application
... Reference ETSI GS MEC 016 2.2.1, clause 7.3.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList
# Preamble
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
# AppInfo not created
# Test Body
Retrieve the application contexts list ${APP_NAME}
Check HTTP Response Status Code Is 404
Check ProblemDetails 404
Retrieve the application contexts list using filters ${filter}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ApplicationList
FOR ${appInfo} IN @{response['body']['appList']}
${passed} Run Keyword And Return Status Should Be Equal As Strings ${appInfo['appInfo']['appName']} ${APP_NAME}
Exit For Loop If ${passed}
END
Should Be True ${passed}
TP_MEC_MEC016_MEO_UEAPPS_002_BR
[Documentation]
... Check that the IUT responds with the list of user applications available when requested by an UE Application
... Reference ETSI GS MEC 016 2.2.1, clause 7.3.3.1
... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Retrieve the application contexts list using filters ${bad_filter}
Check HTTP Response Status Code Is 400
*** Keywords ***
Retrieve the application contexts list
[Arguments] ${app_name}
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Set Headers {"Content-Length":"0"}
Post /exampleAPI/mx2/v2/app_list?appName=${app_name}
GET ${apiRoot}/${apiName}/${apiVersion}/app_list
${output}= Output response
Set Suite Variable ${response} ${output}
Retrieve the application contexts list using wrong endpoint
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
GET ${apiRoot}/${apiName}/${apiVersion}/app_list_error
${output}= Output response
Set Suite Variable ${response} ${output}
Retrieve the application contexts list with serviceCont
[Arguments] ${service_cont}
Retrieve the application contexts list using filters
[Arguments] ${filter}
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Set Headers {"Content-Length":"0"}
Post /exampleAPI/mx2/v2/app_list?serviceCont=${service_cont}
GET ${apiRoot}/${apiName}/${apiVersion}/app_list?${filter}
${output}= Output response
Set Suite Variable ${response} ${output}
*** Variables ***
${apiRoot}
${apiName} dev_app
${apiVersion} v1
${MEC-APP_SCHEMA} http
${MEC-APP_HOST} 192.168.56.1
${MEC-APP_PORT} 8081
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${APP_NAME} MyWornderfulApp
${filter} appName=${APP_NAME}
${bad_filter} app=${APP_NAME}
{
"properties": {
"appList": {
"description": "List of user applications available to the device application. As defined below.",
"items": {
"type": "object",
"properties": {
"appInfo": {
"description": "",
"properties": {
"appCharcs": {
"description": "Characteristics of the application. As defined below. The application characteristics relate to the system resources consumed by the application. A device application can use this information e.g. for estimating the cost of use of the application or for the expected user experience.",
"properties": {
"bandwidth": {
"description": "The required connection bandwidth in kbit/s for the use of the MEC application instance. ",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "uint32"
},
"latency": {
"description": "The target round trip time in milliseconds supported by the MEC system for the MEC application instance.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "uint32"
},
"memory": {
"description": "The maximum size in Mbytes of the memory resource expected to be used by the MEC application instance in the MEC system.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "uint32"
},
"serviceCont": {
"description": "Required service continuity mode for this application. Permitted values: 0 = SERVICE_CONTINUITY_NOT_REQUIRED. 1 = SERVICE_CONTINUITY_REQUIRED.",
"enum": [
0,
1
],
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Enum"
},
"storage": {
"description": "The maximum size in Mbytes of the storage resource expected to be used by the MEC application instance in the MEC system.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "uint32"
}
},
"type": "object",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Structure (inlined)"
},
"appDId": {
"description": "Identifier of this MEC application descriptor. It is equivalent to the appDId defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1]. This attribute shall be globally unique.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appDVersion": {
"description": "Identifies the version of the application descriptor. It is equivalent to the appDVersion defined in clause 6.2.1.2 of ETSI GS MEC 0102 [1].",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appDescription": {
"description": "Human readable description of the MEC application (see note 2).",
"type": "string",
"maxLength": 128,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appLocation": {
"description": "Identifies the locations of the MEC application.",
"items": {
"properties": {
"area": {
"properties": {
"coordinates": {
"items": {
"items": {
"items": {
"type": "number",
"format": "float"
},
"type": "array"
},
"type": "array"
},
"minItems": 1,
"type": "array",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "array"
}
},
"type": "object"
},
"civicAddressElement": {
"description": "Zero or more elements comprising the civic address. Shall be absent if the \"area\" attribute is present.",
"items": {
"type": "object",
"properties": {
"caType": {
"description": "Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776 [6]. ",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Integer"
},
"caValue": {
"description": "Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776 [6].",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
}
},
"minItems": 0,
"required": [
"caType",
"caValue"
],
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "array (Structure inlined)"
},
"countryCode": {
"description": "The two-letter ISO 3166 [7] country code in capital letters. Shall be present in case the \"area\" attribute is absent. May be absent if the \"area\" attribute is present (see note).",
"type": "string",
"maxLength": 2,
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
}
},
"type": "object",
"x-etsi-notes": "NOTE:\tIf both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic area signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.",
"x-etsi-ref": "6.5.2"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "LocationConstraints"
},
"appName": {
"description": "Name of the MEC application. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appProvider": {
"description": "Provider of the MEC application. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"appSoftVersion": {
"description": "Software version of the MEC application. The length of the value shall not exceed 32 characters.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"appDId",
"appName",
"appProvider",
"appSoftVersion",
"appDVersion",
"appDescription"
],
"type": "object",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Structure (inlined)"
},
"vendorSpecificExt": {
"description": "Extension for vendor specific information (see note 1).",
"properties": {
"vendorId": {
"description": "Vendor identifier. The length of the value shall not exceed 32 characters. The rest of the structure of vendor specific extension is not defined.",
"type": "string",
"maxLength": 32,
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"vendorId"
],
"type": "object",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Structure (inlined)"
}
}
},
"minItems": 0,
"required": [
"appInfo"
],
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "Array (Structure (inlined))"
}
},
"type": "object",
"x-etsi-notes": "NOTE 1:\tThe vendor specific extension allows submitting information on the application lists that have been made available to the device application of the corresponding vendor.\nNOTE 2:\tThe language support may be limited. The length of the value shall not exceed 128 characters.",
"x-etsi-ref": "6.2.2"
}
\ No newline at end of file
......@@ -3,8 +3,8 @@
*** Settings ***
Resource environment/variables.txt
Resource ../../pics.txt
Resource ../../GenericKeywords.robot
Resource ../../../pics.txt
Resource ../../../GenericKeywords.robot
Library REST ${AMS_SCHEMA}://${AMS_HOST}:${AMS_PORT} ssl_verify=false
Library BuiltIn
Library OperatingSystem
......@@ -14,8 +14,8 @@ Library MockServerLibrary
*** Test Cases ***
Request Registered AMS information
[Documentation] TP_MEC_SRV_AMS_001_OK
TC_MEC_MEC021_SRV_AMS_001_OK
[Documentation] Request Registered AMS information
... 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
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -24,8 +24,8 @@ Request Registered AMS information
Check HTTP Response Body Json Schema Is AppMobilityServiceInfos
Request Registered AMS information using attribute-selector
[Documentation] TP_MEC_SRV_AMS_001_OK
TC_MEC_MEC021_SRV_AMS_002_OK
[Documentation] Request Registered AMS information using attribute-selector
... 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
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -35,8 +35,8 @@ Request Registered AMS information using attribute-selector
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
TC_MEC_MEC021_SRV_AMS_001_BR
[Documentation] Request Registered AMS information using bad parameters
... 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
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -44,8 +44,8 @@ Request 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
TC_MEC_MEC021_SRV_AMS_003_OK
[Documentation] Register a new application mobility services
... 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
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -56,8 +56,8 @@ Register a new application mobility services
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
TC_MEC_MEC021_SRV_AMS_003_BR
[Documentation] Register an UE Identity Tag using invalid parameter
... 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
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -65,8 +65,8 @@ Register an UE Identity Tag using invalid parameter
Check HTTP Response Status Code Is 400
Request Subscriptions List for the registered AMS services
[Documentation] TP_MEC_SRV_AMS_003_OK
TC_MEC_MEC021_SRV_AMS_004_OK
[Documentation] Request Subscriptions List for the registered AMS services
... Check that the AMS service returns information about the available subscriptions when requested.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
......@@ -79,8 +79,8 @@ Request Subscriptions List for the registered AMS services
Request Subscription List for registered AMS Services using wrong attribute parameters
[Documentation] TP_MEC_SRV_AMS_003_BR
TC_MEC_MEC021_SRV_AMS_004_BR
[Documentation] Request Subscription List for registered AMS Services using wrong attribute parameters
... Check that the AMS service sends an error when it receives a malformed query about the available subscriptions
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
Get Subscriptions for registered AMS with wrong attbirube parameter
......@@ -88,8 +88,8 @@ Request Subscription List for registered AMS Services using wrong attribute para
Create a notification subscription
[Documentation] TP_MEC_SRV_AMS_004_OK
TC_MEC_MEC021_SRV_AMS_005_OK
[Documentation] Create a notification subscription
... Check that the AMS service creates a notification subscriptions when requested.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
......@@ -101,8 +101,8 @@ Create a notification subscription
Check HTTP Response Body Json Schema Is NotificationSubscription
Create a notification subscription with wrong attribute parameter
[Documentation] TP_MEC_SRV_AMS_004_BR
TC_MEC_MEC021_SRV_AMS_005_BR
[Documentation] Create a notification subscription with wrong attribute parameter
... Check that the AMS service creates a notification subscriptions when requested.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
......@@ -114,8 +114,8 @@ Create a notification subscription with wrong attribute parameter
Request a specific subscription
[Documentation] TP_MEC_SRV_AMS_005_OK
TC_MEC_MEC021_SRV_AMS_006_OK
[Documentation] Request a specific subscription
... Check that the AMS service returns information about a given subscription when requested.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
......@@ -128,9 +128,8 @@ Request a specific subscription
Request a specific subscription using wrong identifier
[Documentation] TP_MEC_SRV_AMS_005_NF
TC_MEC_MEC021_SRV_AMS_006_NF
[Documentation] Request a specific subscription using wrong identifier
... 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
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -138,9 +137,8 @@ Request a specific subscription using wrong identifier
Check HTTP Response Status Code Is 404
Modify a specific subscription
[Documentation] TP_MEC_SRV_AMS_007_OK
TC_MEC_MEC021_SRV_AMS_007_OK
[Documentation] Modify a specific subscription
... Check that the AMS service modifies a given subscription when requested.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
......@@ -153,8 +151,8 @@ Modify a specific subscription
Modify a specific subscription using malformed request
[Documentation] TP_MEC_SRV_AMS_007_BR
TC_MEC_MEC021_SRV_AMS_007_BR
[Documentation] Modify a specific subscription using malformed request
... Check that the AMS service sends an error when it receives a malformed modify request for a given subscription.
... Permitted SUBSCRIPTION_TYPE are:
... - MobilityProcedureSubscription
......@@ -165,8 +163,8 @@ Modify a specific subscription using malformed request
Check HTTP Response Status Code Is 400
Modify a specific subscription using wrong identifier
[Documentation] TP_MEC_SRV_AMS_007_NF
TP_MEC_MEC021_SRV_AMS_007_NF
[Documentation] Modify a specific subscription using wrong identifier
... 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
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -174,8 +172,8 @@ Modify a specific subscription using wrong identifier
Check HTTP Response Status Code Is 404
Remove a specific subscription
[Documentation] TP_MEC_SRV_AMS_006_OK
TC_MEC_MEC021_SRV_AMS_008_OK
[Documentation] Remove a specific subscription
... Check that the AMS service deletes a given subscription when requested
... ETSI GS MEC 021 2.0.8, clause 8.7.3.5
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -183,8 +181,8 @@ Remove a specific subscription
Check HTTP Response Status Code Is 204
Remove a specific subscription using wrong identifier
[Documentation] TP_MEC_SRV_AMS_006_NF
TC_MEC_MEC021_SRV_AMS_008_NF
[Documentation] Remove a specific subscription using wrong identifier
... 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
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -192,9 +190,8 @@ Remove a specific subscription using wrong identifier
Check HTTP Response Status Code Is 404
Post Mobility Procedure Notification
[Documentation] TP_MEC_SRV_AMS_008_OK
TC_MEC_MEC021_SRV_AMS_009_OK
[Documentation] Post Mobility Procedure Notification
... 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
......@@ -212,8 +209,8 @@ Post Mobility Procedure Notification
Post Adjacent Application Info Notification
[Documentation] TP_MEC_SRV_AMS_009_OK
TC_MEC_MEC021_SRV_AMS_010_OK
[Documentation] Post Adjacent Application Info Notification
... 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
......@@ -231,8 +228,8 @@ Post Adjacent Application Info Notification
Post Expire Notification
[Documentation] TP_MEC_SRV_AMS_010_OK
TC_MEC_MEC021_SRV_AMS_011_OK
[Documentation] Post Expire Notification
... 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
......@@ -250,8 +247,8 @@ Post Expire Notification
Request a specific AMS service
[Documentation] TP_MEC_SRV_AMS_011_OK
TC_MEC_MEC021_SRV_AMS_012_OK
[Documentation] Request a specific AMS service
... Check that the AMS service returns information about this individual application mobility service
... ETSI GS MEC 021 2.0.10, clause 8.4.3.1
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -261,8 +258,8 @@ Request a specific AMS service
Request a specific AMS Service using non existent identifier
[Documentation] TP_MEC_SRV_AMS_011_NF
TC_MEC_MEC021_SRV_AMS_012_NF
[Documentation] Request a specific AMS Service using non existent identifier
... Check that the AMS service sends an error when receives a query about a not existing individual application mobility service
... ETSI GS MEC 021 2.0.10, clause 8.4.3.1
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -271,8 +268,8 @@ Request a specific AMS Service using non existent identifier
Modify a specific AMS service
[Documentation] TP_MEC_SRV_AMS_012_OK
TC_MEC_MEC021_SRV_AMS_013_OK
[Documentation] Modify a specific AMS service
... Check that the AMS service modifies the individual application mobility service when requested
... ETSI GS MEC 021 2.0.10, clause 8.4.3.2
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -283,8 +280,8 @@ Modify a specific AMS service
Modify a specific AMS Service using non existent identifier
[Documentation] TP_MEC_SRV_AMS_012_NF
TC_MEC_MEC021_SRV_AMS_013_NF
[Documentation] Modify a specific AMS Service using non existent identifier
... Check that the AMS service sends an error when receives a request to modify a not existing individual application mobility service
... ETSI GS MEC 021 2.0.10, clause 8.4.3.2
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -292,8 +289,8 @@ Modify a specific AMS Service using non existent identifier
Check HTTP Response Status Code Is 404
Modify a specific AMS Service using bad parameters
[Documentation] TP_MEC_SRV_AMS_012_BR
TC_MEC_MEC021_SRV_AMS_013_BR
[Documentation] Modify a specific AMS Service using bad parameters
... Check that the AMS service sends an error when receives a request to modify a individual application mobility service using bad parameters
... ETSI GS MEC 021 2.0.10, clause 8.4.3.2
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -301,8 +298,8 @@ Modify a specific AMS Service using bad parameters
Check HTTP Response Status Code Is 400
Remove a specific AMS service
[Documentation] TP_MEC_SRV_AMS_013_OK
TC_MEC_MEC021_SRV_AMS_014_OK
[Documentation] Remove a specific AMS service
... Check that the AMS service de-register the individual application mobility service and delete the resource
... that represents the individual application mobility service
... ETSI GS MEC 021 2.0.10, clause 8.4.3.5
......@@ -311,9 +308,8 @@ Remove a specific AMS service
Check HTTP Response Status Code Is 204
Remove a specific AMS Service using non existent identifier
[Documentation] TP_MEC_SRV_AMS_013_NF
TC_MEC_MEC021_SRV_AMS_014_NF
[Documentation] Remove a specific AMS Service using non existent identifier
... Check that the AMS service sends an error when is requested to delete the resource
... that represents the individual application mobility service
... ETSI GS MEC 021 2.0.10, clause 8.4.3.5
......@@ -323,8 +319,8 @@ Remove a specific AMS Service using non existent identifier
Request to deregister a specific AMS service
[Documentation] TP_MEC_SRV_AMS_014_OK
TC_MEC_MEC021_SRV_AMS_015_OK
[Documentation] Request to deregister a specific AMS service
... Check that the AMS service deregister an individual application mobility service on expiry of the timer associated with the service
... ETSI GS MEC 021 2.0.10, clause 8.5.3.4
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......@@ -333,8 +329,8 @@ Request to deregister a specific AMS service
Request to deregister a specific AMS service using non existent identifier
[Documentation] TP_MEC_SRV_AMS_014_NF
TC_MEC_MEC021_SRV_AMS_015_NF
[Documentation] Request to deregister a specific AMS service using non existent identifier
... Check that the AMS service send an error when is requested to deregister a not existent individual application mobility service
... ETSI GS MEC 021 2.0.10, clause 8.5.3.4
[Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS
......
''[Documentation] robot --outputdir ../../outputs ./WaiApInfo.robot
... Test Suite to validate WLAN Information API (AP_INFO) operations.
*** Settings ***
Resource environment/variables.txt
Resource ../../../pics.txt
Resource ../../../GenericKeywords.robot
Library String
Library OperatingSystem
Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
*** Test Cases ***
TP_MEC_MEC028_SRV_WAI_001_OK
[Documentation]
... Check that the IUT responds with the list of WLAN Access Point
... Reference "ETSI GS MEC 028 2.2.1, clause 7.3.3.1
... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo ##Outdated
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Retrieve the access point information
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ApInfo
## Post condition
FOR ${apInfo} IN @{response['body']}
${passed} Run Keyword And Return Status Should Be Equal As Strings ${apInfo['apId']['macId']} ${MAC_ID}
Exit For Loop If ${passed}
END
Should Be True ${passed}
TP_MEC_MEC028_SRV_WAI_002_OK
[Documentation]
... Check that the IUT responds with the list of WLAN Access Point filtered by the macId provided as query parameter
... Reference "ETSI GS MEC 028 2.2.1, clause 7.3.3.1
... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo ##Outdated
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Retrieve the access point information using filters ${filter}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is ApInfo
## Post condition
FOR ${apInfo} IN @{response['body']}
${passed} Run Keyword And Return Status Should Be Equal As Strings ${apInfo['apId']['macId']} ${MAC_ID}
Exit For Loop If ${passed}
END
Should Be True ${passed}
TP_MEC_MEC028_SRV_WAI_002_BR
[Documentation]
... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
... Reference "ETSI GS MEC 028 2.2.1, clause 7.3.3.1
... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/ApInfo ##Outdated
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Retrieve the access point information using filters ${bad_filter}
Check HTTP Response Status Code Is 400
Check HTTP Response Body Json Schema Is ProblemDetails
*** Keywords ***
Retrieve the access point information
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
GET ${apiRoot}/${apiName}/${apiVersion}/queries/ap/ap_information
${output}= Output response
Set Suite Variable ${response} ${output}
Retrieve the access point information using filters
[Arguments] ${filter}
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
GET ${apiRoot}/${apiName}/${apiVersion}/queries/ap/ap_information?filter=${filter}
${output}= Output response
Set Suite Variable ${response} ${output}
\ No newline at end of file
*** Variables ***
${apiRoot}
${apiName} wai
${apiVersion} v2
${MEC-APP_SCHEMA} http
${MEC-APP_HOST} 127.0.0.1
${MEC-APP_PORT} 8082
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${MAC_ID} macId01
${filter} (eq,apId/macId,macId01)
${bad_filter} (eq,apId/mac,macId01)
\ No newline at end of file
{
"items": {
"properties": {
"apId": {
"properties": {
"ipAddress": {
"description": "IPv4 or IPv6 address allocated for the Access Point.",
"items": {
"type": "string"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "String"
},
"macId": {
"description": "Unique Identifier assigned to an Access Point (as network interface controller) for communications at the data link layer of a network segment.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"ssid": {
"description": "Service Set Identifier to identify logical networks including Basic Service Set and Extended Service Set.",
"items": {
"type": "string"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"macId"
],
"type": "object",
"x-etsi-ref": "6.5.3"
},
"apLocation": {
"properties": {
"civicLocation": {
"properties": {
"ca0": {
"description": "Language",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca1": {
"description": "National subdivisions (state, canton, region,province, prefecture) ",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca128": {
"description": "Script",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca16": {
"description": "Leading street direction",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca17": {
"description": "Trailing street suffix",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca18": {
"description": "Street suffix or type",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca19": {
"description": "House number",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca2": {
"description": "County, parish, gun (JP), district (IN)",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca20": {
"description": "House number suffix",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca21": {
"description": "Landmark of vanity address",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca22": {
"description": "Additional location information",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca23": {
"description": "Name (residence and office occupant)",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca24": {
"description": "Postal/zip code",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca25": {
"description": "Building (structure)",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca26": {
"description": "Unit (apartment/suite)",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca27": {
"description": "Floor",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca28": {
"description": "Room",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca29": {
"description": "Type of place",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca3": {
"description": "City, township, shi (JP)",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca30": {
"description": "Postal community name",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca31": {
"description": "Post office box",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca32": {
"description": "Additional code",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca33": {
"description": "Seat (desk.cubicle, workstation)",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca34": {
"description": "Primary road name",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca35": {
"description": "Road section",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca36": {
"description": "Branch road name",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca37": {
"description": "Sub-branch road name",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca38": {
"description": "Street name pre-modifier",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca39": {
"description": "Street name post-modifier",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca4": {
"description": "City division, borough, city district, ward, chou (JP)",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca5": {
"description": "Neighborhood, block",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"ca6": {
"description": "Group of streets below the neighborhood level ",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"country": {
"description": "The two-letter ISO 3166 [i.9] country code in capital ASCII letters, e.g. DE or US, as per ISO 3166 [i.9]",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
}
},
"required": [
"country"
],
"type": "object",
"x-etsi-ref": "6.5.20"
},
"geolocation": {
"properties": {
"altitude": {
"description": "The altitude value of location as defined in IETF RFC6225 [6]",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Uint32"
},
"altitudeType": {
"description": "The type description for altitude information e.g. floors or meters as defined in IETF RFC 6225 [6]",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Uint8"
},
"altitudeUncertainty": {
"description": "The uncertainty for altitude information as defined in IETF RFC 6225 [6]",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Uint8"
},
"datum": {
"description": "The datum value to express how coordinates are organized and related to real world as defined in IETF RFC 6225 [6]",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"lat": {
"description": "The latitude value of location as defined in IETF RFC6225 [6]",
"format": "int64",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint64"
},
"latUncertainty": {
"description": "The uncertainty for Latitude information as defined in IETF RFC 6225 [6]",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"long": {
"description": "The longitude value of location as defined in IETF RFC6225 [6]",
"format": "int64",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint64"
},
"longUncertainty": {
"description": "The uncertainty for Longitude information as defined in IETF RFC 6225 [6]",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
}
},
"required": [
"latUncertainty",
"lat",
"longUncertainty",
"long",
"datum"
],
"type": "object",
"x-etsi-ref": "6.5.19"
}
},
"type": "object",
"x-etsi-ref": "6.5.9"
},
"apNeighbor": {
"properties": {
"bssid": {
"description": "BSS Id of the Access Point that is being reported.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"bssidInfo": {
"description": "Additional information related to Access Point that is being reported such as AP reachability, security, key scope, Mobility Domain, HT/VHT capability and Fine Time Measurements.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt32"
},
"channel": {
"description": "The channel currently used by this Access Point.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"operatingClass": {
"description": "The channel set of the AP indicated by this BSSID.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"phyType": {
"description": "PHY type of the AP indicated by this BSSID. It is an integer value coded according to the value of the dot11PHYType.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
}
},
"required": [
"bssid",
"bssidInfo",
"operatingClass",
"channel",
"phyType"
],
"type": "object",
"x-etsi-ref": "6.5.10"
},
"bssLoad": {
"properties": {
"availAdmCap": {
"description": "Available Admission Capacity that specifies the remaining amount of medium time available via explicit admission control, in units of 32 s/s.",
"format": "uint16",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint16"
},
"channelUtilization": {
"description": "The percentage of time, linearly scaled with 255 representing 100%, that the AP sensed the medium was busy, as indicated by either the physical or virtual Carrier Sense (CS) mechanism.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt8"
},
"staCount": {
"description": "An unsigned integer that indicates the total number of STAs currently associated with this BSS.",
"format": "uint16",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt16"
}
},
"required": [
"staCount",
"channelUtilization",
"availAdmCap"
],
"type": "object",
"x-etsi-ref": "6.5.7"
},
"channel": {
"description": "Channel configured for the Access Point.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Uint32"
},
"extBssLoad": {
"properties": {
"muMimoStaCount": {
"description": "Indicates the total number of STAs currently associated with this BSS that have a 1 in the MU Beamformee Capable field of their VHT Capabilities element.",
"format": "uint16",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt16"
},
"obsSec20MhzUtil": {
"description": "Observable loading on each of the secondary 20 MHz channel.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"obsSec40MhzUtil": {
"description": "Observable loading on each of the secondary 40 MHz channel.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"obsSec80MhzUtil": {
"description": "Observable loading on each of the secondary 80 MHz channel.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"spatStreamUnderUtil": {
"description": "The percentage of time, linearly scaled with 255 representing 100%, that the AP has underutilized spatial domain resources for given busy time of the medium.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt8"
}
},
"required": [
"muMimoStaCount",
"spatStreamUnderUtil",
"obsSec20MhzUtil",
"obsSec40MhzUtil",
"obsSec80MhzUtil"
],
"type": "object",
"x-etsi-ref": "6.5.8"
},
"timeStamp": {
"properties": {
"nanoSeconds": {
"description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint32"
},
"seconds": {
"description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint32"
}
},
"required": [
"seconds",
"nanoSeconds"
],
"type": "object",
"x-etsi-ref": "6.5.2"
},
"wanMetrics": {
"properties": {
"downlinkLoad": {
"description": "1-octet positive integer representing the current percentage loading of the downlink WAN connection, scaled linearly with 255 representing 100 %, as measured over an interval the duration of which is reported in Load Measurement Duration. In cases where the downlink load is unknown to the AP, the value is set to zero.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt8"
},
"downlinkSpeed": {
"description": "4-octet positive integer whose value is an estimate of the WAN Backhaul link current downlink speed in kilobits per second.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint32"
},
"lmd": {
"description": "The LMD (Load Measurement Duration) field is a 2-octet positive integer representing the duration over which the Downlink Load and Uplink Load have been measured, in tenths of a second. When the actual load measurement duration is greater than the maximum value, the maximum value will be reported. The value of the LMD field is set to 0 when neither the uplink nor downlink load can be computed. When the uplink and downlink loads are computed over different intervals, the maximum interval is reported.",
"format": "uint16",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint16"
},
"uplinkLoad": {
"description": "1-octet positive integer representing the current percentage loading of the uplink WAN connection, scaled linearly with 255 representing 100 %, as measured over an interval, the duration of which is reported in Load Measurement Duration. In cases where the uplink load is unknown to the AP, the value is set to zero.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"uplinkSpeed": {
"description": "4-octet positive integer whose value is an estimate of the WAN Backhaul link's current uplink speed in kilobits per second.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt32"
},
"wanInfo": {
"description": "Info about WAN link status, link symmetricity and capacity currently used.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
}
},
"required": [
"wanInfo",
"downlinkSpeed",
"uplinkSpeed",
"downlinkLoad",
"uplinkLoad",
"lmd"
],
"type": "object",
"x-etsi-ref": "6.5.6"
},
"wlanCap": {
"properties": {
"dmg": {
"properties": {
"ExtScMcsCap": {
"description": "Extended SC MCS capabilities as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"dmgApOrPcpCapInfo": {
"description": "DMG AP or PCP capabilities information as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "uint16",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint16"
},
"dmgStaBeamTrackTimeLimit": {
"description": "DMG station beam tracking time limit as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "uint16",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint16"
},
"dmgStaCapInfo": {
"description": "DMG station capabilities information as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "int64",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint64"
},
"maxNrBasicAmsduSubframes": {
"description": "Number of basic A-MSDU subframes in A-MSDU as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"maxNrShortAmsduSubframes": {
"description": "Number of short A-MSDU subframes in A-MSDU as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"sarCap": {
"description": "SAR capabilities as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"tddCap": {
"description": "TDD capabilities as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "uint16",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint16"
}
},
"required": [
"dmgStaCapInfo",
"dmgApOrPcpCapInfo",
"dmgStaBeamTrackTimeLimit",
"ExtScMcsCap",
"maxNrBasicAmsduSubframes",
"maxNrShortAmsduSubframes",
"tddCap",
"sarCap"
],
"type": "object",
"x-etsi-ref": "6.5.17"
},
"edmg": {
"properties": {
"ampduParameters": {
"description": "A-MPDU parameters as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"reserved": {
"description": "",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Uint8"
},
"supportedMcs": {
"description": "Supported MCS as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint32"
},
"trnParameters": {
"description": "Training parameters as defined in draft IEEE P802.11/D4.0 [i.11]",
"format": "uint16",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint16"
}
},
"required": [
"ampduParameters",
"trnParameters",
"supportedMcs"
],
"type": "object",
"x-etsi-ref": "6.5.18"
},
"he": {
"properties": {
"heMacCapInfo": {
"description": "MAC capabilities of an Access Point.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"hePhyCapinfo": {
"description": "PHY capabilities of an Access Point.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
},
"ppeThresholds": {
"description": "PPE Threshold determines the nominal packet padding value for a HE PPDU.",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "not defined"
},
"supportedHeMcsNssSet": {
"description": "Supported MCS and NSS Set.",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint8"
}
},
"required": [
"heMacCapInfo",
"hePhyCapinfo",
"supportedHeMcsNssSet"
],
"type": "object",
"x-etsi-ref": "6.5.16"
},
"ht": {
"properties": {
"ampduParameters": {
"description": "A-MPDU parameters as defined in IEEE 802.11-2016 [8].",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt8"
},
"aselCap": {
"description": "ASEL capabilities as defined in IEEE 802.11-2016 [8].",
"format": "uint8",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt8"
},
"htCapabilityInfo": {
"description": "HT Capability Information as defined in IEEE 802.11-2016 [8].",
"format": "uint16",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt16"
},
"htExtendedCap": {
"description": "Extended HT Capabilities as defined in IEEE 802.11-2016 [8].",
"format": "uint16",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt16"
},
"supportedMcsSet": {
"description": "Supported MCS set as defined in IEEE 802.11-2016 [8].",
"format": "uint128",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint128"
},
"txBeamFormCap": {
"description": "Transmit Beamforming Capabilities as defined in IEEE 802.11-2016 [8].",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt32"
}
},
"required": [
"htCapabilityInfo",
"ampduParameters",
"supportedMcsSet",
"htExtendedCap",
"txBeamFormCap",
"aselCap"
],
"type": "object",
"x-etsi-ref": "6.5.14"
},
"vht": {
"properties": {
"vhtCapInfo": {
"description": "VHT capabilities Info as defined in IEEE 802.11-2016 [8].",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt32"
},
"vhtMcsNss": {
"description": "Supported VHT-MCS and NSS Set as defined in IEEE 802.11-2016 [8].",
"format": "int64",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UInt64"
}
},
"required": [
"vhtCapInfo",
"vhtMcsNss"
],
"type": "object",
"x-etsi-ref": "6.5.15"
}
},
"type": "object",
"x-etsi-ref": "6.5.4"
}
},
"required": [
"apId"
],
"type": "object",
"x-etsi-ref": "6.2.2"
}
}
\ No newline at end of file
{
"ProblemDetails": {
"properties": {
"detail": {
"description": "A human-readable explanation specific to this occurrence of the problem",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"instance": {
"description": "A URI reference that identifies the specific occurrence of the problem",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "URI"
},
"status": {
"description": "The HTTP status code for this occurrence of the problem",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Uint32"
},
"title": {
"description": "A short, human-readable summary of the problem type",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"type": {
"description": "A URI reference according to IETF RFC 3986 that identifies the problem type",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "URI"
}
},
"type": "object"
}
}
\ No newline at end of file
''[Documentation] robot --outputdir ../../outputs ./ExistingSubscription.robot
... Test Suite to validate WLAN Information API (EXT_SUB) operations.
*** Settings ***
Resource environment/variables.txt
Resource ../../../pics.txt
Resource ../../../GenericKeywords.robot
Library String
Library OperatingSystem
Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
*** Test Cases ***
TP_MEC_MEC028_SRV_WAI_008_OK
[Documentation]
... Check that the IUT responds with the list of Subscription"
... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.1
... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Retrieve existing subscription information ${SUB_ID}
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AssocStaSubscription
Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE}
Should Be Equal As Strings ${response['body']['callbackReference']} ${CALLBACK_URI}
Should Be Equal As Strings ${response['body']['apId']['macId']} ${MAC_ID}
TP_MEC_MEC028_SRV_WAI_008_NF
[Documentation]
... Check that the IUT responds with an error when a request for existing subscription with incorrect parameters is sent"
... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.1
... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Retrieve existing subscription information ${NOT_EXISTING_SUB_ID}
Check HTTP Response Status Code Is 404
*** Test Cases ***
TP_MEC_MEC028_SRV_WAI_009_OK
[Documentation]
... Check that the IUT responds with a Notification Subscription when it is modified"
... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.2
... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Modify existing subscription information ${SUB_ID} UpdateAssocStaSubscription.json
Check HTTP Response Status Code Is 200
Check HTTP Response Body Json Schema Is AssocStaSubscription
Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE}
Should Be Equal As Strings ${response['body']['callbackReference']} ${NEW_CALLBACK_URI}
Should Be Equal As Strings ${response['body']['apId']['macId']} ${MAC_ID}
TP_MEC_MEC028_SRV_WAI_009_BR
[Documentation]
... Check that the IUT responds with an error when an invalid field is set in the subscription modification request"
... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.2
... https://forge.etsi.org/rep/mec/gs028-wai-api/blob/v2.1.1/WlanInformationApi.yaml#/schemas/AssocStaSubscription ##Outdated
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Modify existing subscription information ${SUB_ID} UpdateAssocStaSubscription_BR.json
Check HTTP Response Status Code Is 400
TP_MEC_MEC028_SRV_WAI_010_OK
[Documentation]
... Check that the IUT responds with 204 when an existing subscription is correctly deleted"
... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.5
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Remove existing subscription information ${SUB_ID}
Check HTTP Response Status Code Is 204
TP_MEC_MEC028_SRV_WAI_010_NF
[Documentation]
... Check that the IUT responds with an error when an not existing subscription cannot be deleted"
... Reference "ETSI GS MEC 028 2.2.1, clause 7.6.3.5
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Remove existing subscription information ${NOT_EXISTING_SUB_ID}
Check HTTP Response Status Code Is 404
*** Keywords ***
Retrieve existing subscription information
[Arguments] ${SUB_ID}
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
Modify existing subscription information
[Arguments] ${SUB_ID} ${content}
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
${path} Catenate SEPARATOR= jsons/ ${content}
${body} Get File ${path}
PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} ${body}
${output}= Output response
Set Suite Variable ${response} ${output}
Remove existing subscription information
[Arguments] ${SUB_ID}
Should Be True ${PIC_MEC_SYSTEM} == 1
Should Be True ${PIC_SERVICES} == 1
Set Headers {"Accept":"application/json"}
Set Headers {"Content-Type":"*/*"}
Set Headers {"Authorization":"${TOKEN}"}
DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID}
${output}= Output response
Set Suite Variable ${response} ${output}
\ No newline at end of file