diff --git a/MEC012/SRV/RNIS/RnisAllSubscriptions.robot b/MEC012/SRV/RNIS/RnisAllSubscriptions.robot new file mode 100644 index 0000000000000000000000000000000000000000..2bdc4f8f6d728808fc1860582d6702a712ca32ab --- /dev/null +++ b/MEC012/SRV/RNIS/RnisAllSubscriptions.robot @@ -0,0 +1,115 @@ +''[Documentation] robot --outputdir ../../outputs ./RnisSpecificSubscription_BI_BO.robot +... Test Suite to validate RNIS/Subscription (RNIS) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +#Resource resources/RadioNetworkInformationAPI.robot +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false +Library String + + +*** Test Cases *** +TC_MEC_MEC012_SRV_RNIS_011_BR + [Documentation] Request RNIS subscription list using bad parameters + ... Check that the RNIS service responds with an error when it receives a request to + ... get all RNIS subscriptions with a wrong subscription type + ... ETSI GS MEC 012 2.2.1, clause 7.6.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList + [Setup] Send a request for a subscription and get sub ID CellChangeSubscription + Get RNIS subscription list with wrong parameter + Check HTTP Response Status Code Is 400 + [TearDown] Delete subscription ${SUB_ID} + + +TC_MEC_MEC012_SRV_RNIS_012_BR + [Documentation] Create RNIS subscription using bad parameters + ... Check that the RNIS service responds with an error when it receives a request to create a new RNIS subscription with a wrong format + ... ETSI GS MEC 012 2.2.1, clause 7.6.3.4 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + Send a request for a subscription CellChangeSubscriptionBr + Check HTTP Response Status Code Is 400 + +TC_MEC_MEC012_SRV_RNIS_011_OK + [Documentation] Request RNIS subscription list + ... Check that the RNIS service sends the list of links to the relevant RNIS subscriptions when requested + ... ETSI GS MEC 012 2.2.1, clause 7.6.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList + [Setup] Send a request for a subscription and get sub ID CellChangeSubscription + Get RNIS subscription list with filter CellChangeSubscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + ${not_expected_syb_type} Set Variable ${FALSE} + FOR ${subscription} IN @{response['body']['_links']['subscription']} + IF '''${subscription}[subscriptionType]''' != '''CellChangeSubscription''' + ${not_expected_syb_type} Set Variable ${TRUE} + END + END + Should Be Equal ${not_expected_syb_type} ${FALSE} + [TearDown] Delete subscription ${SUB_ID} + +TC_MEC_MEC012_SRV_RNIS_012_OK + [Documentation] Create RNIS subscription + ... Check that the RNIS service creates a new RNIS subscription + ... ETSI GS MEC 012 2.2.1, clause 7.6.3.4 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Setup] Send a request for a subscription and get sub ID CellChangeSubscription + ${sub_type} Get value entry from JSON file CellChangeSubscription subscriptionType + ${callback_ref} Get value entry from JSON file CellChangeSubscription callbackReference + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is CellChangeSubscription + Should Be Equal ${response['body']['subscriptionType']} ${sub_type} + Should Be Equal ${response['body']['callbackReference']} ${callback_ref} + [TearDown] Delete subscription ${SUB_ID} + +*** Keywords *** +Get RNIS subscription list with filter + [Arguments] ${sub_type_filter} + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=${sub_type_filter} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get RNIS subscription list with wrong parameter + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=wrongSubscriptionType + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send a request for a subscription and get sub ID + [Arguments] ${content} + Send a request for a subscription ${content} + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${SUB_ID} ${elements[4]} + + +Send a request for a subscription + [Arguments] ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Delete subscription + [Arguments] ${subscription_id} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscription_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + + diff --git a/MEC012/SRV/RNIS/RnisNotifications.robot b/MEC012/SRV/RNIS/RnisNotifications.robot index 6e5613d05d26da905e775c511ea14f28025ac952..a80dadf5b881bba9cc2ef4926c0fecca8c58af88 100644 --- a/MEC012/SRV/RNIS/RnisNotifications.robot +++ b/MEC012/SRV/RNIS/RnisNotifications.robot @@ -2,204 +2,164 @@ ... Test Suite to validate RNIS/Notification (RNIS) operations. *** Settings *** -Resource environment/variables.txt -Resource ../../../pics.txt -Resource ../../../GenericKeywords.robot -Resource resources/RadioNetworkInformationAPI.robot -Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false -Library BuiltIn -Library OperatingSystem -Library MockServerLibrary -Suite Setup Create Mock Session ${callback_uri}:${callback_port} -Test Teardown Reset All Requests + +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library libraries/Server.py +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false +Library BuiltIn +Library OperatingSystem +Library Collections +Library String + *** Test Cases *** TC_MEC_MEC012_SRV_RNIS_001_OK - [Documentation] Cell change notification - ... Check that the RNIS service sends an RNIS notification about cell change if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.1.1, clause 6.4.2 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Documentation] + ... Check that the RNIS service sends an RNIS notification about cell change if the RNIS + ... service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.2 Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/CellChangeNotification.schema.json - Log Creating mock request and response to handle Cell change notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} - &{appjson_hdrs}= Create Dictionary Content-type=application/json - &{rsp}= Create Mock Response headers=&{appjson_hdrs} status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - + [Setup] Send a request for a subscription CellChangeSubscriptionRequest + Spawn Notification Server CellChangeNotification + Validate Json CellChangeNotification.schema.json ${payload_notification} + [TearDown] Delete subscription ${SUB_ID} TC_MEC_MEC012_SRV_RNIS_002_OK - [Documentation] RAB Establishment notification - ... Check that the RNIS service sends an RNIS notification about RAB establishment if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.1.1, clause 6.4.3 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Documentation] + ... Check that the RNIS service sends an RNIS notification about RAB establishment + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.3 Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RabEstNotification.schema.json - Log Creating mock request and response to handle RAB establishment notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint}/rab_est body_type="JSON_SCHEMA" body=${json} - &{appjson_hdrs}= Create Dictionary Content-type=application/json - &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} + [Setup] Send a request for a subscription RabEstSubscriptionRequest + Spawn Notification Server RabEstNotification + Validate Json RabEstNotification.schema.json ${payload_notification} + [TearDown] Delete subscription ${SUB_ID} + TC_MEC_MEC012_SRV_RNIS_003_OK - [Documentation] RAB modification notification - ... Check that the RNIS service sends an RNIS notification about RAB modification if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.1.1, clause 6.4.4 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Documentation] + ... Check that the RNIS service sends an RNIS notification about RAB modification + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.4 Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RabModNotification.schema.json - Log Creating mock request and response to handle RAB modification notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint}/rab_mod body_type="JSON_SCHEMA" body=${json} - &{appjson_hdrs}= Create Dictionary Content-type=application/json - &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - - + [Setup] Send a request for a subscription RabModSubscription + Spawn Notification Server RabModNotification + Validate Json RabModNotification.schema.json ${payload_notification} + [TearDown] Delete subscription ${SUB_ID} + + TC_MEC_MEC012_SRV_RNIS_004_OK - [Documentation] RAB release notification - ... Check that the RNIS service sends an RNIS notification about RAB release if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.1.1, clause 6.4.5 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Documentation] + ... Check that the RNIS service sends an RNIS notification about RAB release + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.5 Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RabRelNotification.schema.json - Log Creating mock request and response to handle RAB release notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint}/rab_rel body_type="JSON_SCHEMA" body=${json} - &{appjson_hdrs}= Create Dictionary Content-type=application/json - &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - + [Setup] Send a request for a subscription RabRelSubscription + Spawn Notification Server RabRelNotification + Validate Json RabRelNotification.schema.json ${payload_notification} + [TearDown] Delete subscription ${SUB_ID} + TC_MEC_MEC012_SRV_RNIS_005_OK - [Documentation] UE measurement notification - ... Check that the RNIS service sends an RNIS notification about UE measurement report if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.1.1, clause 6.4.6 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Documentation] + ... Check that the RNIS service sends an RNIS notification about UE measurement report + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.6 Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/MeasRepUeNotification.schema.json - Log Creating mock request and response to handle UE measurement notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint}/MeasRepUeNotification body_type="JSON_SCHEMA" body=${json} - &{appjson_hdrs}= Create Dictionary Content-type=application/json - &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - + [Setup] Send a request for a subscription MeasRepUeSubscription + Spawn Notification Server MeasRepUeNotification + Validate Json MeasRepUeNotification.schema.json ${payload_notification} + [TearDown] Delete subscription ${SUB_ID} TC_MEC_MEC012_SRV_RNIS_006_OK - [Documentation] UE timing advance notification - ... Check that the RNIS service sends an RNIS notification about UE timing advance if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.1.1, clause 6.4.7 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Documentation] + ... Check that the RNIS service sends an RNIS notification about UE timing advance + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.7 Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/MeasTaSubscription.schema.json - Log Creating mock request and response to handle UE timing advance notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint}/MeasTaNotification body_type="JSON_SCHEMA" body=${json} - &{appjson_hdrs}= Create Dictionary Content-type=application/json - &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - + [Setup] Send a request for a subscription MeasTaSubscription + Spawn Notification Server MeasTaNotification + Validate Json MeasTaNotification.schema.json ${payload_notification} + [TearDown] Delete subscription ${SUB_ID} + TC_MEC_MEC012_SRV_RNIS_007_OK - [Documentation] UE carrier aggregation reconfiguration notification - ... Check that the RNIS service sends an RNIS notification about UE carrier aggregation reconfiguration if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.1.1, clause 6.4.8 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Documentation] + ... Check that the RNIS service sends an RNIS notification about UE carrier aggregation reconfiguration + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.8 Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/CaReconfSubscription.schema.json - Log Creating mock request and response to handle UE carrier aggregation reconfiguration notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint}/CaReconfSubscription body_type="JSON_SCHEMA" body=${json} - &{appjson_hdrs}= Create Dictionary Content-type=application/json - &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} + [Setup] Send a request for a subscription CaReconfSubscription + Spawn Notification Server CaReconfNotification + Validate Json CaReconfNotification.schema.json ${payload_notification} + [TearDown] Delete subscription ${SUB_ID} TC_MEC_MEC012_SRV_RNIS_008_OK - [Documentation] S1-U bearer notification - ... Check that the RNIS service sends an RNIS notification about S1-U bearer if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.1.1, clause 6.4.9 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml - Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/S1BearerSubscription.schema.json - Log Creating mock request and response to handle S1-U bearer notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint}/S1BearerSubscription body_type="JSON_SCHEMA" body=${json} - &{appjson_hdrs}= Create Dictionary Content-type=application/json - &{rsp}= Create Mock Response headers=${appjson_hdrs} status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - - -TC_MEC_SRV_RNIS_009_OK - [Documentation] TC_MEC_SRV_RNIS_009_OK - ... Check that the RNIS service sends an RNIS notification about 5G NR UE measurement report if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.1.1, clause 6.4.11 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Documentation] + ... Check that the RNIS service sends an RNIS notification about S1-U bearer + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.10 Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/NrMeasRepUeSubscription.schema.json - Log Creating mock request and response to handle UE Measurement notification - &{req}= Create Mock Request Matcher POST ${callback_endpoint}/meas_rep_ue body_type="JSON_SCHEMA" body=${json} - &{appjson_hdrs}= Create Dictionary Content-type=application/json - &{rsp}= Create Mock Response headers=&{appjson_hdrs} status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - - -# TC_MEC_SRV_RNIS_010_OK - # [Documentation] TC_MEC_SRV_RNIS_010_OK - # ... Check that the RNIS service sends an RNIS notification on subscription expiration if the RNIS service has an associated subscription and the event is generated - # ... ETSI GS MEC 012 2.0.4, clause 6.4.9 - # ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml - # Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - # ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json - # Log Creating mock request and response to handle UE Measurement notification - # &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint} body_type="JSON_SCHEMA" body=${json} - #&{appjson_hdrs}= Create Dictionary Content-type=application/json - # &{rsp}= Create Mock Response &{appjson_hdrs} status_code=204 - # Create Mock Expectation ${req} ${rsp} - # Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - # Log Verifying results - # Verify Mock Expectation ${req} - # Log Cleaning the endpoint - # Clear Requests ${callback_endpoint} + [Setup] Send a request for a subscription S1BearerSubscription + Spawn Notification Server S1BearerNotification + Validate Json S1BearerNotification.schema.json ${payload_notification} + [TearDown] Delete subscription ${SUB_ID} + +TC_MEC_MEC012_SRV_RNIS_009_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about 5G NR UE measurement report + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.11 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + [Setup] Send a request for a subscription NrMeasRepUeSubscription + Spawn Notification Server NrMeasRepUeNotification + Validate Json NrMeasRepUeNotification.schema.json ${payload_notification} + [TearDown] Delete subscription ${SUB_ID} + +TC_MEC_MEC012_SRV_RNIS_010_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about cell change if the RNIS + ... service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.2 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + [Setup] Send a request for a subscription CellChangeSubscriptionRequestWithExpiration + Spawn Notification Server ExpiryNotification + Validate Json ExpiryNotification.schema.json ${payload_notification} + [TearDown] Delete subscription ${SUB_ID} + + +*** Keywords *** +Send a request for a subscription + [Arguments] ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${SUB_ID} ${elements[4]} + + +Delete subscription + [Arguments] ${subscription_id} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscription_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Spawn Notification Server + [Arguments] ${payload_notification} + ${output} Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} ${payload_notification} + Set Suite Variable ${payload_notification} ${output} diff --git a/MEC012/SRV/RNIS/RnisNotifications_noSetup.robot b/MEC012/SRV/RNIS/RnisNotifications_noSetup.robot new file mode 100644 index 0000000000000000000000000000000000000000..df5ddd2f6ea14c3c0476ff3f8bb093937afab832 --- /dev/null +++ b/MEC012/SRV/RNIS/RnisNotifications_noSetup.robot @@ -0,0 +1,165 @@ +''[Documentation] robot --outputdir ../../outputs ./RnisNotifications_BV.robot +... Test Suite to validate RNIS/Notification (RNIS) operations. + +*** Settings *** + +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library libraries/Server.py +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false +Library BuiltIn +Library OperatingSystem +Library Collections +Library String + + +*** Test Cases *** +TC_MEC_MEC012_SRV_RNIS_001_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about cell change if the RNIS + ... service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.2 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + #[Setup] Send a request for a subscription CellChangeSubscriptionRequest + Spawn Notification Server 10.30.8.189 8888 ${NOTIFICATION_SERVER_TIMEOUT} POST /callback_url CellChangeNotification + Validate Json CellChangeNotification.schema.json ${payload_notification} + #[TearDown] Delete subscription ${SUB_ID} + +TC_MEC_MEC012_SRV_RNIS_002_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about RAB establishment + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.3 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + #[Setup] Send a request for a subscription RabEstSubscriptionRequest + Spawn Notification Server 10.30.8.189 8888 ${NOTIFICATION_SERVER_TIMEOUT} POST /callback_url RabEstNotification + Validate Json RabEstNotification.schema.json ${payload_notification} + #[TearDown] Delete subscription ${SUB_ID} + + + +TC_MEC_MEC012_SRV_RNIS_003_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about RAB modification + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.4 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + #[Setup] Send a request for a subscription RabModSubscription + Spawn Notification Server 10.30.8.189 8888 ${NOTIFICATION_SERVER_TIMEOUT} POST /callback_url RabModNotification + Validate Json RabModNotification.schema.json ${payload_notification} + #[TearDown] Delete subscription ${SUB_ID} + + +TC_MEC_MEC012_SRV_RNIS_004_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about RAB release + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.5 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + #[Setup] Send a request for a subscription RabRelSubscription + Spawn Notification Server 10.30.8.189 8888 5 POST /callback_url RabRelNotification + Validate Json RabRelNotification.schema.json ${payload_notification} + #[TearDown] Delete subscription ${SUB_ID} + + +TC_MEC_MEC012_SRV_RNIS_005_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about UE measurement report + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.6 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + #[Setup] Send a request for a subscription MeasRepUeSubscription + Spawn Notification Server 10.30.8.189 8888 ${NOTIFICATION_SERVER_TIMEOUT} POST /callback_url MeasRepUeNotification + Validate Json MeasRepUeNotification.schema.json ${payload_notification} + #[TearDown] Delete subscription ${SUB_ID} + +TC_MEC_MEC012_SRV_RNIS_006_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about UE timing advance + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.7 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + #[Setup] Send a request for a subscription MeasTaSubscription + Spawn Notification Server 10.30.8.189 8888 ${NOTIFICATION_SERVER_TIMEOUT} POST /callback_url MeasTaNotification + Validate Json MeasTaNotification.schema.json ${payload_notification} + #[TearDown] Delete subscription ${SUB_ID} + + +TC_MEC_MEC012_SRV_RNIS_007_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about UE carrier aggregation reconfiguration + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.8 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + #[Setup] Send a request for a subscription CaReconfSubscription + Spawn Notification Server 10.30.8.189 8888 ${NOTIFICATION_SERVER_TIMEOUT} POST /callback_url CaReconfNotification + Validate Json CaReconfNotification.schema.json ${payload_notification} + #[TearDown] Delete subscription ${SUB_ID} + + +TC_MEC_MEC012_SRV_RNIS_008_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about S1-U bearer + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.10 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + #[Setup] Send a request for a subscription S1BearerSubscription + Spawn Notification Server 10.30.8.189 8888 ${NOTIFICATION_SERVER_TIMEOUT} POST /callback_url S1BearerNotification + Validate Json S1BearerNotification.schema.json ${payload_notification} + #[TearDown] Delete subscription ${SUB_ID} + + +TC_MEC_MEC012_SRV_RNIS_009_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about 5G NR UE measurement report + ... if the RNIS service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.11 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + #[Setup] Send a request for a subscription NrMeasRepUeSubscription + Spawn Notification Server 10.30.8.189 8888 ${NOTIFICATION_SERVER_TIMEOUT} POST /callback_url NrMeasRepUeNotification + Validate Json NrMeasRepUeNotification.schema.json ${payload_notification} + #[TearDown] Delete subscription ${SUB_ID} + +TC_MEC_MEC012_SRV_RNIS_010_OK + [Documentation] + ... Check that the RNIS service sends an RNIS notification about cell change if the RNIS + ... service has an associated subscription and the event is generated + ... ETSI GS MEC 012 2.2.1, clause 6.4.2 + Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + #[Setup] Send a request for a subscription CellChangeSubscriptionRequestWithExpiration + Spawn Notification Server 10.30.8.189 8888 ${NOTIFICATION_SERVER_TIMEOUT} POST /callback_url ExpiryNotification + Validate Json ExpiryNotification.schema.json ${payload_notification} + #[TearDown] Delete subscription ${SUB_ID} + + +*** Keywords *** +Send a request for a subscription + [Arguments] ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${SUB_ID} ${elements[4]} + + +Delete subscription + [Arguments] ${subscription_id} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscription_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Spawn Notification Server + [Arguments] ${host} ${port} ${timeout} ${method} ${endpoint} ${payload_notification} + ${output} Spawn Web Server ${host} ${port} ${timeout} ${method} ${endpoint} ${payload_notification} + Set Suite Variable ${payload_notification} ${output} diff --git a/MEC012/SRV/RNIS/RnisQuery_BI_BO.robot b/MEC012/SRV/RNIS/RnisQuery.robot similarity index 62% rename from MEC012/SRV/RNIS/RnisQuery_BI_BO.robot rename to MEC012/SRV/RNIS/RnisQuery.robot index 172fb0d14cd86bd7ff6b357b4b06325697876462..4bddb1d3362bcff4196e4d75b908cca6ba4a8707 100644 --- a/MEC012/SRV/RNIS/RnisQuery_BI_BO.robot +++ b/MEC012/SRV/RNIS/RnisQuery.robot @@ -1,4 +1,4 @@ -''[Documentation] robot --outputdir ../../outputs ./RnisQuery_BI_BO.robot +''[Documentation] robot --outputdir ../../outputs ./RnisQuery_BV.robot ... Test Suite to validate RNIS/Subscription (RNIS) operations. *** Settings *** @@ -14,27 +14,24 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v TC_MEC_MEC012_SRV_RNIS_016_BR [Documentation] Request RabInfo info using wrong parameters ... Check that the RNIS service returns an error when the RAB information is requested with a malformatted message - ... ETSI GS MEC 012 2.1.1, clause 7.3.3.1 + ... ETSI GS MEC 012 2.2.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo Get RabInfo info using wrong parameters Check HTTP Response Status Code Is 400 - Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 400 TC_MEC_MEC012_SRV_RNIS_016_NF [Documentation] Request RabInfo info using non existing cell id ... Check that the RNIS service returns an error when the RAB information for a not existing element is requested - ... ETSI GS MEC 012 2.1.1, clause 7.3.3.1 + ... ETSI GS MEC 012 2.2.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo Get RabInfo info using non existing cell id - Check HTTP Response Status Code Is 200 - # TODO Check the returned list is empty - # Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 + Check HTTP Response Status Code Is 404 TC_MEC_MEC012_SRV_RNIS_017_BR [Documentation] Request Plmn info using wrong parameters ... Check that the RNIS service returns an error when the PLMN information is requested with a malformatted message - ... ETSI GS MEC 012 2.1.1, clause 7.4.3.1 + ... ETSI GS MEC 012 2.2.1, clause 7.4.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo Get PLMN info using wrong parameters Check HTTP Response Status Code Is 400 @@ -44,39 +41,36 @@ TC_MEC_MEC012_SRV_RNIS_017_BR TC_MEC_MEC012_SRV_RNIS_017_NF [Documentation] Request Plmn info using non existing application id ... Check that the RNIS service returns an error when the PLMN information for a not existing element is requested - ... ETSI GS MEC 012 2.1.1, clause 7.4.3.1 + ... ETSI GS MEC 012 2.2.1, clause 7.4.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo - Get PLMN info using non existing application id - Check HTTP Response Status Code Is 200 - # TODO Check the returned list is empty - # Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 + Get PLMN info using non existing app id + Check HTTP Response Status Code Is 404 TC_MEC_MEC012_SRV_RNIS_018_BR [Documentation] Request S1Bearer info using wrong parameters ... Check that the RNIS service returns an error when the S1 bearer information is requested with a malformatted message - ... ETSI GS MEC 012 2.1.1, clause 7.5.3.1 + ... ETSI GS MEC 012 2.2.1, clause 7.5.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get S1Bearer info using wrong parameters Check HTTP Response Status Code Is 400 - Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 400 + TC_MEC_MEC012_SRV_RNIS_018_NF [Documentation] Request S1Bearer info using non existing cell id ... Check that the RNIS service returns an error when the S1 bearer information is requested with a malformatted message - ... ETSI GS MEC 012 2.1.1, clause 7.5.3.1 + ... ETSI GS MEC 012 2.2.1, clause 7.5.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get S1Bearer info using non existing cell id - Check HTTP Response Status Code Is 200 - # TODO Check the returned list is empty - #Run Keyword If ${PIC_PROBLEM_DETAILS_ON_4xx} == 1 Check ProblemDetails 404 + Check HTTP Response Status Code Is 404 + TC_MEC_MEC012_SRV_RNIS_019_BR [Documentation] Request L2Meas info using wrong parameters ... Check that the RNIS service returns an error when the L2 measurements information is requested with a malformatted message - ... ETSI GS MEC 012 2.1.1, clause 7.5a.3.1 + ... ETSI GS MEC 012 2.2.1, clause 7.5a.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get L2Meas info using wrong parameters Check HTTP Response Status Code Is 400 @@ -86,11 +80,56 @@ TC_MEC_MEC012_SRV_RNIS_019_BR TC_MEC_MEC012_SRV_RNIS_019_NF [Documentation] Request L2Meas info using non existing cell id ... Check that the RNIS service returns an error when the L2 measurements information for a not existing element is requested - ... ETSI GS MEC 012 2.1.1, clause 7.5a.3.1 + ... ETSI GS MEC 012 2.2.1, clause 7.5a.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get L2Meas info using non existing cell id Check HTTP Response Status Code Is 200 - # TODO Check the returned list is empty + + +TC_MEC_MEC012_SRV_RNIS_016_OK + [Documentation] Request RabInfo info + ... Check that the RNIS service returns the RAB information when requested + ... ETSI GS MEC 012 2.2.1, clause 7.3.3.1 + ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo + Get RabInfo info + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is RabInfo + Check RabInfo ${response['body']} + + + +TC_MEC_MEC012_SRV_RNIS_017_OK + [Documentation] Request Plmn info + ... Check that the RNIS service returns the PLMN information when requested + ... ETSI GS MEC 012 2.2.1, clause 7.4.3.1 + ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo + Get PLMN info + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PlmnInfos + Check PlmnInfo ${response['body'][0]} + + +TC_MEC_MEC012_SRV_RNIS_018_OK + [Documentation] Request S1Bearer info + ... Check that the RNIS service returns the S1 bearer information + ... ETSI GS MEC 012 2.2.1, clause 7.5.3.1 + ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo + Get S1Bearer info + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is S1BearerInfo + Check S1BearerInfo ${response['body']} + + +TC_MEC_MEC012_SRV_RNIS_019_OK + [Documentation] Request L2Meas info + ... Check that the RNIS service returns the L2 measurements information + ... ETSI GS MEC 012 2.2.1, clause 7.5a.3.1 + ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/L2Meas + Get Layer2Meas Info + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is L2Meas + Check L2MeasInfo ${response['body']} + *** Keywords *** Get RabInfo info using wrong parameters @@ -99,7 +138,7 @@ Get RabInfo info using wrong parameters Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/queries/rab_info?c_id=${C_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/rab_info?cId=${CELL_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -120,18 +159,18 @@ Get Plmn info using wrong parameters Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_id=${APP_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/plmn_info?cId=${NOT_EXISTENT_CELL_ID} ${output}= Output response Set Suite Variable ${response} ${output} -Get Plmn info using non existing application id +Get Plmn info using non existing app id Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_ins_id=${NOT_EXISTENT_APP_INS_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/plmn_info?appInstanceId=${NOT_EXISTENT_APP_INS_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -142,7 +181,7 @@ Get S1Bearer info using wrong parameters Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?c_id=${C_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?cId=${CELL_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -153,7 +192,7 @@ Get S1Bearer info using non existing cell id Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?cell_id=${NOT_EXISTENT_CELL_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?appInstanceId=${NOT_EXISTENT_APP_INS_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -164,7 +203,7 @@ Get L2Meas info using wrong parameters Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?c_id=${C_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?c_id=${CELL_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -178,3 +217,47 @@ Get L2Meas info using non existing cell id Get ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?cell_id=${NOT_EXISTENT_CELL_ID} ${output}= Output response Set Suite Variable ${response} ${output} + + + +Get RabInfo info + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/queries/rab_info?cell_id=${CELL_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get Plmn info + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_ins_id=${APP_INS_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get S1Bearer info + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?cell_id=${CELL_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get Layer2Meas Info + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?cell_id=${CELL_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/RnisQuery_BV.robot b/MEC012/SRV/RNIS/RnisQuery_BV.robot deleted file mode 100644 index 17722be12f668bf3f22f84486b13a64d71ebb362..0000000000000000000000000000000000000000 --- a/MEC012/SRV/RNIS/RnisQuery_BV.robot +++ /dev/null @@ -1,100 +0,0 @@ -''[Documentation] robot --outputdir ../../outputs ./RnisQuery_BV.robot -... Test Suite to validate RNIS/Subscription (RNIS) operations. - -*** Settings *** -Resource environment/variables.txt -Resource ../../../pics.txt -Resource ../../../GenericKeywords.robot -Resource resources/RadioNetworkInformationAPI.robot -Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false - - - -*** Test Cases *** -TC_MEC_MEC012_SRV_RNIS_016_OK - [Documentation] Request RabInfo info - ... Check that the RNIS service returns the RAB information when requested - ... ETSI GS MEC 012 2.1.1, clause 7.3.3.1 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo - Get RabInfo info - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is RabInfo - Check RabInfo ${response['body']} - - -TC_MEC_MEC012_SRV_RNIS_017_OK - [Documentation] Request Plmn info - ... Check that the RNIS service returns the PLMN information when requested - ... ETSI GS MEC 012 2.1.1, clause 7.4.3.1 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo - Get PLMN info - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PlmnInfos - Check PlmnInfo ${response['body'][0]} - - -TC_MEC_MEC012_SRV_RNIS_018_OK - [Documentation] Request S1Bearer info - ... Check that the RNIS service returns the S1 bearer information - ... ETSI GS MEC 012 2.1.1, clause 7.5.3.1 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo - Get S1Bearer info - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is S1BearerInfos - #log ${response['body']} - Check S1BearerInfo ${response['body']} - - -TC_MEC_MEC012_SRV_RNIS_019_OK - [Documentation] Request L2Meas info - ... Check that the RNIS service returns the L2 measurements information - ... ETSI GS MEC 012 2.1.1, clause 7.5a.3.1 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/L2Meas - Get Layer2Meas Info - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is L2Meas - Check L2MeasInfo ${response['body']} - - -*** Keywords *** -Get RabInfo info - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/queries/rab_info?cell_id=${CELL_ID} - ${output}= Output response - Set Suite Variable ${response} ${output} - -Get Plmn info - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_ins_id=${APP_INS_ID} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Get S1Bearer info - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?cell_id=${CELL_ID} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Get Layer2Meas Info - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?cell_id=${CELL_ID} - ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/RnisSpecificSubscription.robot b/MEC012/SRV/RNIS/RnisSpecificSubscription.robot new file mode 100644 index 0000000000000000000000000000000000000000..20617a7997487d7c8f1318702b8139f14681e503 --- /dev/null +++ b/MEC012/SRV/RNIS/RnisSpecificSubscription.robot @@ -0,0 +1,167 @@ +''[Documentation] robot --outputdir ../../outputs ./RnisSpecificSubscription_BV.robot +... Test Suite to validate RNIS/Subscription (RNIS) operations. + +*** Settings *** +Library OperatingSystem +Resource environment/variables.txt +Resource ../../../GenericKeywords.robot +Resource resources/RadioNetworkInformationAPI.robot +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false +Library String + + +*** Test Cases *** +TC_MEC_MEC012_SRV_RNIS_013_NF + [Documentation] Get an Individual RNIS subscription + ... Check that the RNIS service responds with error when a not existing + ... RNIS subscription is requested + ... ETSI GS MEC 012 2.2.1, clause 7.8.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Setup] Delete Individual RNIS Subscription ${NON_EXISTENT_SUBSCRIPTION_ID} + Get Individual RNIS Subscription ${NON_EXISTENT_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + + +TC_MEC_MEC012_SRV_RNIS_014_BR + [Documentation] Update an Individual RNIS subscription + ... Check that the RNIS service sends an error when it receives a malformed modify + ... request for a RNIS subscription + ... ETSI GS MEC 012 2.2.1, clause 7.8.3.2 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Setup] Post RNIS subscription request CellChangeSubscription + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${SUB_ID} ${elements[4]} + Update Individual RNIS Subscription ${SUB_ID} UpdateCellChangeSubscriptionRequestBr + Check HTTP Response Status Code Is 400 + [TearDown] Delete Individual RNIS Subscription ${SUB_ID} + + +TC_MEC_MEC012_SRV_RNIS_014_NF + [Documentation] Update an Individual RNIS subscription + ... Check that the RNIS service responds with error when a modification for a not existing RNIS subscription is requested + ... ETSI GS MEC 012 2.2.1, clause 7.8.3.2 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Setup] Delete Individual RNIS Subscription ${NON_EXISTENT_SUBSCRIPTION_ID} + Update Individual RNIS Subscription ${NON_EXISTENT_SUBSCRIPTION_ID} UpdateCellChangeSubscriptionRequest + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC012_SRV_RNIS_015_NF + [Documentation] Update an Individual RNIS subscription + ... Check that the RNIS service responds with error when the deletion of a not existing RNIS subscription is requested + ... ETSI GS MEC 012 2.2.1, clause 7.8.3.5 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Setup] Delete Individual RNIS Subscription ${NON_EXISTENT_SUBSCRIPTION_ID} + Delete Individual RNIS Subscription ${NON_EXISTENT_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC012_SRV_RNIS_013_OK + [Documentation] Get an Individual RNIS subscription + ... Check that the RNIS service sends a RNIS subscription when requested + ... ETSI GS MEC 012 2.2.1, clause 7.8.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Setup] Post RNIS subscription request CellChangeSubscription + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${SUB_ID} ${elements[4]} + Get Individual RNIS Subscription ${SUB_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CellChangeSubscription + ${sub_type} Get value entry from JSON file CellChangeSubscription subscriptionType + ${callbackReference} Get value entry from JSON file CellChangeSubscription callbackReference + Should be Equal ${response['body']['subscriptionType']} ${sub_type} + Should be Equal ${response['body']['callbackReference']} ${callbackReference} + [TearDown] Delete Individual RNIS Subscription ${SUB_ID} + +TC_MEC_MEC012_SRV_RNIS_014_OK + [Documentation] Update an Individual RNIS subscription + ... Check that the RNIS service modifies a RNIS subscription when requested + ... ETSI GS MEC 012 2.2.1, clause 7.8.3.2 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Setup] Post RNIS subscription request CellChangeSubscription + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${SUB_ID} ${elements[4]} + Update Individual RNIS Subscription ${SUB_ID} UpdateCellChangeSubscriptionRequest + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CellChangeSubscription + ${sub_type} Get value entry from JSON file UpdateCellChangeSubscriptionRequest subscriptionType + ${callbackReference} Get value entry from JSON file UpdateCellChangeSubscriptionRequest callbackReference + Should be Equal ${response['body']['subscriptionType']} ${sub_type} + Should be Equal ${response['body']['callbackReference']} ${callbackReference} + [TearDown] Delete Individual RNIS Subscription ${SUB_ID} + +TC_MEC_MEC012_SRV_RNIS_015_OK + [Documentation] Remove an Individual RNIS subscription + ... Check that the RNIS service deletes a RNIS subscription when requested + ... ETSI GS MEC 012 2.1.1, clause 7.8.3.5 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + [Setup] Post RNIS subscription request CellChangeSubscription + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${SUB_ID} ${elements[4]} + Delete Individual RNIS Subscription ${SUB_ID} + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Get RNIS subscription list + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=${SUBSCRIPTION_HREF_VALUE} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Post RNIS subscription request + [Arguments] ${content} + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${json_file} = Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${json_file} + ${body}= Replace String ${body} \${HREF} ${HREF} + ${body}= Replace String ${body} \${LINKS_SELF} ${LINKS_SELF} + Post ${apiRoot}/rni/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get Individual RNIS Subscription + [Arguments] ${subscription_id} + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/subscriptions/${subscription_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Update Individual RNIS Subscription + [Arguments] ${subscription_id} ${content} + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${json_file} = Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${json_file} + #${body}= Replace String ${body} \${HREF} ${HREF} + #${body}= Replace String ${body} \${LINKS_SELF} ${LINKS_SELF} + Put ${apiRoot}/rni/${apiVersion}/subscriptions/${subscription_id} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Delete Individual RNIS Subscription + [Arguments] ${subscription_id} + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Delete ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot b/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot deleted file mode 100644 index 0a05314ccfb956441e81f25289a97fe7c6bd4687..0000000000000000000000000000000000000000 --- a/MEC012/SRV/RNIS/RnisSubscriptions_BI_BO.robot +++ /dev/null @@ -1,49 +0,0 @@ -''[Documentation] robot --outputdir ../../outputs ./RnisSpecificSubscription_BI_BO.robot -... Test Suite to validate RNIS/Subscription (RNIS) operations. - -*** Settings *** -Resource environment/variables.txt -Resource ../../../pics.txt -Resource ../../../GenericKeywords.robot -Resource resources/RadioNetworkInformationAPI.robot -Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false - -*** Test Cases *** -TC_MEC_MEC012_SRV_RNIS_011_BR - [Documentation] Request RNIS subscription list using bad parameters - ... Check that the RNIS service responds with an error when it receives a request to get all RNIS subscriptions with a wrong subscription type - ... ETSI GS MEC 012 2.1.1, clause 7.6.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList - Get RNIS subscription list with wrong parameter - Check HTTP Response Status Code Is 400 - - -TC_MEC_MEC012_SRV_RNIS_012_BR - [Documentation] Create RNIS subscription using bad parameters - ... Check that the RNIS service responds with an error when it receives a request to create a new RNIS subscription with a wrong format - ... ETSI GS MEC 012 2.1.1, clause 7.6.3.4 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml - Post RNIS subscription request {"CellChangeSubscription": {"subscriptionType": "CelCangeSubscription", "callbackReference": "${HREF}", "_links": {"self": { "href": "${LINKS_SELF}" } }, "filterCriteria": {"appInsId": "01", "associateId": [{"type": "UE_IPV4_ADDRESS", "value": 1}], "plmn": {"mcc": "01", "mnc": "001"}, "cellId": ["800000"], "hoStatus": "COMPLETED"}, "expiryDeadline": {"seconds": 1577836800, "nanoSeconds": 0}}} - Check HTTP Response Status Code Is 400 - -*** Keywords *** -Get RNIS subscription list with wrong parameter - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=wrongSubscriptionType - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Post RNIS subscription request - [Arguments] ${content} - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Post ${apiRoot}/rni/${apiVersion}/subscriptions ${content} - ${output}= Output response - Set Suite Variable ${response} ${output} diff --git a/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot b/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot deleted file mode 100644 index 44301fe702412252b15baed3cbcbb5998fd91aa6..0000000000000000000000000000000000000000 --- a/MEC012/SRV/RNIS/RnisSubscriptions_BV.robot +++ /dev/null @@ -1,127 +0,0 @@ -''[Documentation] robot --outputdir ../../outputs ./RnisSpecificSubscription_BV.robot -... Test Suite to validate RNIS/Subscription (RNIS) operations. - -*** Settings *** -Library OperatingSystem -Resource environment/variables.txt -Resource ../../../GenericKeywords.robot -Resource resources/RadioNetworkInformationAPI.robot -Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false -Library String - - -*** Test Cases *** -TC_MEC_MEC012_SRV_RNIS_011_OK - [Documentation] Request RNIS subscription list - ... Check that the RNIS service sends the list of links to the relevant RNIS subscriptions when requested - ... ETSI GS MEC 012 2.1.1, clause 7.6.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList - Get RNIS subscription list - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is SubscriptionLinkList - # The following step is faulty in the design, thus it is commented. It is kept since - # it is required by the Test Purpose TP_MEC_SRV_RNIS_011_OK - # Check Subscription ${response['body']} ${SUBSCRIPTION_VALUE} - - -TC_MEC_MEC012_SRV_RNIS_012_OK - [Documentation] Create RNIS subscription - ... Check that the RNIS service creates a new RNIS subscription - ... ETSI GS MEC 012 2.1.1, clause 7.6.3.4 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml - Post RNIS subscription request CellChangeSubscriptionRequest - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is CellChangeSubscription - Check CellChangeSubscription ${response['body']} - - -TC_MEC_MEC012_SRV_RNIS_013_OK - [Documentation] Get an Individual RNIS subscription - ... Check that the RNIS service sends a RNIS subscription when requested - ... ETSI GS MEC 012 2.1.1, clause 7.8.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml - Get Individual RNIS Subscription - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is CellChangeSubscription - - -TC_MEC_MEC012_SRV_RNIS_014_OK - [Documentation] Update an Individual RNIS subscription - ... Check that the RNIS service modifies a RNIS subscription when requested - ... ETSI GS MEC 012 2.1.1, clause 7.8.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml - Update Individual RNIS Subscription - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is CellChangeSubscription - - -TC_MEC_MEC012_SRV_RNIS_015_OK - [Documentation] Remove an Individual RNIS subscription - ... Check that the RNIS service deletes a RNIS subscription when requested - ... ETSI GS MEC 012 2.1.1, clause 7.8.3.5 - ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml - Delete Individual RNIS Subscription - Check HTTP Response Status Code Is 204 - -*** Keywords *** -Get RNIS subscription list - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=${SUBSCRIPTION_HREF_VALUE} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Post RNIS subscription request - [Arguments] ${content} - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - ${json_file} = Catenate SEPARATOR= jsons/ ${content} .json - ${body}= Get File ${json_file} - ${body}= Replace String ${body} \${HREF} ${HREF} - ${body}= Replace String ${body} \${LINKS_SELF} ${LINKS_SELF} - Log ${body} - Post ${apiRoot}/rni/${apiVersion}/subscriptions ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Get Individual RNIS Subscription - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Get ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Update Individual RNIS Subscription - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - ${body} Get File jsons/UpdateCellChangeSubscriptionRequest.json - ${body}= Replace String ${body} \${HREF} ${HREF} - ${body}= Replace String ${body} \${LINKS_SELF} ${LINKS_SELF} - Log ${body} - Put ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} ${body} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Delete Individual RNIS Subscription - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Delete ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} - ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/environment/variables.txt b/MEC012/SRV/RNIS/environment/variables.txt index 8853f8d96d4ec0422c3f0c1918695f8c0c17a717..d073df4ccd058253b4a0b845dc86c2aaf8f86d09 100644 --- a/MEC012/SRV/RNIS/environment/variables.txt +++ b/MEC012/SRV/RNIS/environment/variables.txt @@ -1,35 +1,28 @@ *** Variables *** ${MEC-APP_SCHEMA} http -${MEC-APP_HOST} my-rnis-example.com -${MEC-APP_PORT} 8080 -${SUBSCRIPTION_ID} 7777 -${NON_EXISTENT_SUBSCRIPTION_ID} 6666 -${LINKS_SELF} http://example.com/exampleAPI/rni/v2/subscriptions -${SUBSCRIPTION_HREF_VALUE} cell_changed -${SUBSCRIPTION_TYPE} CELL_CHANGE -${HREF} http://notify-me.com:80/notify -${SUBSCRIPTION_VALUE} {'href': 'http://notify-me.com:80/notify', 'subscriptionType': 'CELL_CHANGE'} -${CELL_ID} 6060606 -${C_ID} 6060606 -${NOT_EXISTENT_CELL_ID} 0x8000099 -${APP_INS_ID} -${APP_ID} 10 -${NOT_EXISTENT_APP_INS_ID} 99 +${MEC-APP_HOST} 127.0.0.1 +${MEC-APP_PORT} 8085 +${apiRoot} +${apiName} rni +${apiVersion} v2 + + ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${SUB_ID} -${apiRoot} /example -${apiVersion} v2 +##Notification Server variables +${NOTIFICATION_SERVER_IP} 10.30.8.189 +${NOTIFICATION_SERVER_PORT} 8888 +${NOTIFICATION_SERVER_HTTP_METHOD} POST +${NOTIFICATION_SERVER_URI} /callback_url +${NOTIFICATION_SERVER_TIMEOUT} 10 -${PIC_PROBLEM_DETAILS_ON_4xx} 0 -# Notifications variables -${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar +${APP_INS_ID} appInsId +${NOT_EXISTENT_APP_INS_ID} NOT_EXISTENT_APP_INS_ID +${NOT_EXISTENT_CELL_ID} 0x8000099 +${CELL_ID} 6060606 -${callback_port} 80 -${callback_uri} http://notify-me.com -${callback_endpoint} /notify -${callback_endpoint_error} /subs_404 -${total_polling_time} 2 min -${polling_interval} 10 sec +${PIC_PROBLEM_DETAILS_ON_4xx} 0 \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/CaReconfNotification.json b/MEC012/SRV/RNIS/jsons/CaReconfNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..d7182b7901ddbe44323219c13e7870e22b91ea01 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/CaReconfNotification.json @@ -0,0 +1,15 @@ +{ + "notificationType": "CaReconfNotification", + "ecgi": { + "cellId": "cellId", + "plmn": { + "mcc": "999", + "mnc": "99" + } + }, + "_links": { + "subscription": { + "href": "somesuburl/subscriptions/subscriptionId" + } + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/CaReconfSubscription.json b/MEC012/SRV/RNIS/jsons/CaReconfSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..efc0791d7eb67b57d1203c8ced03b9ed47521554 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/CaReconfSubscription.json @@ -0,0 +1,7 @@ +{ + "subscriptionType": "CaReconfSubscription", + "callbackReference": "http://10.30.8.189:8080/callback_url", + "filterCriteriaAssoc": { + "appInstanceId": "appInstanceId" + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/CellChangeNotification.json b/MEC012/SRV/RNIS/jsons/CellChangeNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..ebd520a1ff3f4315b3cfb90a6fa67a7011f66848 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/CellChangeNotification.json @@ -0,0 +1,29 @@ +{ + "associateId": [{ + "type": 1, + "value": "somevalue" + }], + "hoStatus": 1, + "notificationType": "CellChangeNotification", + "srcEcgi": { + "cellId": "cellId", + "plmn": { + "mcc": "999", + "mnc": "99" + } + }, + "trgEcgi": [ + { + "cellId": "AnotherCellId", + "plmn": { + "mcc": "999", + "mnc": "99" + } + } + ], + "_links": { + "subscription": { + "href": "somesuburl/subscriptions/subscriptionId" + } + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/CellChangeSubscription.json b/MEC012/SRV/RNIS/jsons/CellChangeSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..2e8a4cfe7f0eb46e9a98ecbf72ae958a395049ad --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/CellChangeSubscription.json @@ -0,0 +1,14 @@ +{ + "subscriptionType": "CellChangeSubscription", + "callbackReference": "http://10.30.8.189:8888/callback_url", + "_links": { + "self": { + "href": "someLinks" + } + }, + "filterCriteriaAssocHo": { + "associateId": [ + "associatedId" + ] + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionBr.json b/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionBr.json new file mode 100644 index 0000000000000000000000000000000000000000..aa371ca1cbe774e9f8b50e54d86dac9e3d3ee81f --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionBr.json @@ -0,0 +1,18 @@ +{ + "subscriptionType": "CelChangeSubscription", + "callbackReference": "http://10.30.8.189:8888/callback_url", + "_links": { + "self": { + "href": "someLinks" + } + }, + "filterCriteriaAssocHo": { + "associateId": [ + "associatedId" + ] + }, + "expiryDeadline":{ + "seconds":199999, + "nanoSeconds":0 + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequestWithExpiration.json b/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequestWithExpiration.json new file mode 100644 index 0000000000000000000000000000000000000000..6a01966ac0994658b78e862efb7d2ad01f2e594f --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequestWithExpiration.json @@ -0,0 +1,18 @@ +{ + "subscriptionType": "CellChangeSubscription", + "callbackReference": "http://10.30.8.189:8888/callback_url", + "_links": { + "self": { + "href": "someLinks" + } + }, + "filterCriteriaAssocHo": { + "associateId": [ + "associatedId" + ] + }, + "expiryDeadline":{ + "seconds":199999, + "nanoSeconds":0 + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/ExpiryNotification.json b/MEC012/SRV/RNIS/jsons/ExpiryNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..5c5a7313cc4eaca6d2a1d59e4d1cc77b5992f460 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/ExpiryNotification.json @@ -0,0 +1,12 @@ +{ + "notificationType": "ExpiryNotification", + "_links": { + "subscription": { + "href": "somesuburl/subscriptions/subscriptionId" + } + }, + "expiryDeadline": { + "nanoSeconds": 34684608, + "seconds": 21329786 + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/MeasRepUeNotification.json b/MEC012/SRV/RNIS/jsons/MeasRepUeNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..b1140b940815d0e78b834c19275893d889c4df46 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/MeasRepUeNotification.json @@ -0,0 +1,18 @@ +{ + "notificationType": "MeasRepUeNotification", + "ecgi": { + "cellId": "cellId", + "plmn": { + "mcc": "999", + "mnc": "99" + } + }, + "rsrp": -50, + "rsrq": -20, + "trigger": 10, + "_links": { + "subscription": { + "href": "somesuburl/subscriptions/subscriptionId" + } + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/MeasRepUeSubscription.json b/MEC012/SRV/RNIS/jsons/MeasRepUeSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..82c9c35c0ade11fe5d701a5b33ecbbf286ec0789 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/MeasRepUeSubscription.json @@ -0,0 +1,7 @@ +{ + "subscriptionType": "MeasRepUeSubscription", + "callbackReference": "http://10.30.8.189:8888/callback_url", + "filterCriteriaAssocTri": { + "appInstanceId": "appInstanceId" + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/MeasTaNotification.json b/MEC012/SRV/RNIS/jsons/MeasTaNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..fad8697e67bf2b38cce015655bc3a051fec42602 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/MeasTaNotification.json @@ -0,0 +1,16 @@ +{ + "notificationType": "MeasTaNotification", + "ecgi": { + "cellId": "cellId", + "plmn": { + "mcc": "999", + "mnc": "99" + } + }, + "timingAdvance": 1234567, + "_links": { + "subscription": { + "href": "somesuburl/subscriptions/subscriptionId" + } + } + } \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/MeasTaSubscription.json b/MEC012/SRV/RNIS/jsons/MeasTaSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..e50b5f14257af6e097426d55dddb7cd634e290d6 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/MeasTaSubscription.json @@ -0,0 +1,7 @@ +{ + "subscriptionType": "MeasTaSubscription", + "callbackReference": "http://10.30.8.189:8888/callback_url", + "filterCriteriaAssoc": { + "appInstanceId": "appInstanceId" + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/NrMeasRepUeNotification.json b/MEC012/SRV/RNIS/jsons/NrMeasRepUeNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..be2c853ab14a089f2444162ed6f833df38509599 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/NrMeasRepUeNotification.json @@ -0,0 +1,9 @@ +{ + "notificationType": "NrMeasRepUeNotification", + "triggerNr": 1, + "_links": { + "subscription": { + "href": "somesuburl/subscriptions/subscriptionId" + } + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/NrMeasRepUeSubscription.json b/MEC012/SRV/RNIS/jsons/NrMeasRepUeSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..96805195920dc515ce118480fc1f9961c567b1da --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/NrMeasRepUeSubscription.json @@ -0,0 +1,7 @@ +{ + "subscriptionType": "NrMeasRepUeSubscription", + "callbackReference": "http://10.30.8.189:8888/callback_url", + "filterCriteriaNrMrs": { + "appInstanceId": "appInstanceId" + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/RabEstNotification.json b/MEC012/SRV/RNIS/jsons/RabEstNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..cff7c1d96a67d35606dd0ed3541eea24845ddd1c --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/RabEstNotification.json @@ -0,0 +1,16 @@ +{ + "notificationType": "RabEstNotification", + "ecgi": { + "cellId": "cellId", + "plmn": { + "mcc": "999", + "mnc": "99" + } + }, + "erabId": 1234, + "_links": { + "subscription": { + "href": "somesuburl/subscriptions/subscriptionId" + } + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/RabEstSubscriptionRequest.json b/MEC012/SRV/RNIS/jsons/RabEstSubscriptionRequest.json new file mode 100644 index 0000000000000000000000000000000000000000..64732525eaa04ffe34e821933265c2e5d61cc552 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/RabEstSubscriptionRequest.json @@ -0,0 +1,7 @@ +{ + "subscriptionType": "RabEstSubscription", + "callbackReference": "http://10.30.8.189:8888/callback_url", + "filterCriteriaQci": { + "qci": 9 + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/RabModNotification.json b/MEC012/SRV/RNIS/jsons/RabModNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..ba943c306dcc0890a55a0604a474a8863cb20caa --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/RabModNotification.json @@ -0,0 +1,16 @@ +{ + "notificationType": "RabModNotification", + "ecgi": { + "cellId": "cellId", + "plmn": { + "mcc": "999", + "mnc": "99" + } + }, + "erabId": 1234, + "_links": { + "subscription": { + "href": "somesuburl/subscriptions/subscriptionId" + } + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/RabModSubscription.json b/MEC012/SRV/RNIS/jsons/RabModSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..f80926413c53e21bc28d436abeb6af755beb7433 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/RabModSubscription.json @@ -0,0 +1,9 @@ +{ + "subscriptionType": "RabModSubscription", + "callbackReference": "http://10.30.8.189:8888/callback_url", + + "filterCriteriaQci": { + "erabId": 123, + "qci": 9 + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/RabRelNotification.json b/MEC012/SRV/RNIS/jsons/RabRelNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..25ee08f2accb010560d33345b683f44d0dc13aa7 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/RabRelNotification.json @@ -0,0 +1,18 @@ +{ + "notificationType": "RabRelNotification", + "ecgi": { + "cellId": "cellId", + "plmn": { + "mcc": "999", + "mnc": "99" + } + }, + "erabReleaseInfo": { + "erabId": 1234 + }, + "_links": { + "subscription": { + "href": "somesuburl/subscriptions/subscriptionId" + } + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/RabRelSubscription.json b/MEC012/SRV/RNIS/jsons/RabRelSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..c1c4bac9d0b71a3b8ed9134c29aae5943eec0777 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/RabRelSubscription.json @@ -0,0 +1,9 @@ +{ + "subscriptionType": "RabRelSubscription", + "callbackReference": "http://10.30.8.189:8888/callback_url", + + "filterCriteriaQci": { + "erabId": 123, + "qci": 9 + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/S1BearerNotification.json b/MEC012/SRV/RNIS/jsons/S1BearerNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..6590a88f292143ca4153d86379a952103a118d13 --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/S1BearerNotification.json @@ -0,0 +1,33 @@ +{ + "notificationType": "S1BearerNotification", + "s1Event": 0, + "s1UeInfo": { + "ecgi": [ + { + "cellId": "cellId", + "plmn": { + "mcc": "999", + "mnc": "99" + } + } + ], + "s1BearerInfo": [ + { + "enbInfo": { + "ipAddress": "127.0.0.1", + "tunnelIdaa": "tunnelId" + }, + "erabId": 1234, + "sGwInfo": { + "ipAddress": "127.0.0.1", + "tunnelId": "tunnelId" + } + } + ] + }, + "_links": { + "subscription": { + "href": "somesuburl/subscriptions/subscriptionId" + } + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/S1BearerSubscription.json b/MEC012/SRV/RNIS/jsons/S1BearerSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..bd9032b970683a829afe163c9955faa61479792d --- /dev/null +++ b/MEC012/SRV/RNIS/jsons/S1BearerSubscription.json @@ -0,0 +1,7 @@ +{ + "subscriptionType": "S1BearerSubscription", + "callbackReference": "http://10.30.8.189:8888/callback_url", + "eventType":1, + "S1BearerSubscriptionCriteria": { + } +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json index 321f1d20eb337cf461cca8ed1f85639e988d3157..8910d5bf0a09834132a667ba5e65a0aced8a467f 100644 --- a/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json +++ b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json @@ -1,6 +1,6 @@ { "subscriptionType": "CellChangeSubscription", - "callbackReference": "${HREF}", + "callbackReference": "http://10.30.8.189:8888/new_callback_url", "_links": { "self": { "href": "${LINKS_SELF}" diff --git a/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequestBr.json similarity index 70% rename from MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json rename to MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequestBr.json index 321f1d20eb337cf461cca8ed1f85639e988d3157..d4771e54ab6be21c45e051aed3b9101d0a5a9647 100644 --- a/MEC012/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json +++ b/MEC012/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequestBr.json @@ -1,6 +1,6 @@ { "subscriptionType": "CellChangeSubscription", - "callbackReference": "${HREF}", + "callbackRefer": "http://10.30.8.189:8888/new_callback_url", "_links": { "self": { "href": "${LINKS_SELF}" diff --git a/MEC012/SRV/RNIS/libraries/Server.py b/MEC012/SRV/RNIS/libraries/Server.py new file mode 100644 index 0000000000000000000000000000000000000000..c983c3b78a770fa8b41bb3976ebbd5543d739337 --- /dev/null +++ b/MEC012/SRV/RNIS/libraries/Server.py @@ -0,0 +1,144 @@ +#!/usr/bin/python3 + +from http.server import BaseHTTPRequestHandler, HTTPServer +import json, os +import logging + +# Library version +__version__ = '0.0.1' + +def import_notification_json(subscription_type): + notification_type = subscription_type.split("Subscription")[0] + file_path = "./jsons/"+notification_type+".json" + logging.info(file_path) + logging.info(os.listdir()) + try: + with open(file_path, 'r') as json_file: + # Load the JSON data + data = json.load(json_file) + logging.info(data) + return data + except FileNotFoundError: + logging.error(f"Error: File not found at {file_path}") + + +class Server ( object ): + + ROBOT_LIBRARY_VERSION = '0.0.1' + + def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None): + + class GET_Server(BaseHTTPRequestHandler): + + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + + def do_GET(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + if self.path == self.endpoint: + self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8')) + else: + self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8')) + + class POST_Server(BaseHTTPRequestHandler): + + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + self.req_body = None + + + def do_POST(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + + #if self.path == self.endpoint: + # self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8')) + #else: + # self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8')) + + content_len = int(self.headers.get('Content-Length')) + post_body = self.rfile.read(content_len) + self.req_body=post_body + + def get_req_body(self): + return self.req_body + + def get_resp_body(self): + return self.resp_body + + + class PUT_Server(BaseHTTPRequestHandler): + + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + + def do_PUT(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + if self.path == self.endpoint: + self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8')) + else: + self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8')) + + class DELETE_Server(BaseHTTPRequestHandler): + + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + + def do_DELETE(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + if self.path == self.endpoint: + self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8')) + else: + self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8')) + + if method == "GET": + self.handler = GET_Server(endpoint, resp_body) + elif method == "POST": + self.handler = POST_Server(endpoint, resp_body) + elif method == "PUT": + self.handler = PUT_Server(endpoint, resp_body) + elif method == "DELETE": + self.handler = DELETE_Server(endpoint, resp_body) + else: + logging.info("Error, unknown endpoint") + exit(1) + + self.app = HTTPServer((host, int(port)), self.handler) + self.app.timeout = int(timeout) + + + self.app.handle_request() + self.app.server_close() + logging.info(self.handler.get_resp_body()) + if(self.handler.get_req_body()!=None): + return json.loads(self.handler.get_req_body().decode("windows-1252")) + notification_json= import_notification_json(self.handler.get_resp_body()) + return notification_json + diff --git a/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot b/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot index 51323d4182be85895502c43b2fc2fd419e2fb897..0bf36397ba6e31c386463f601e48e31cb140cd00 100644 --- a/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot +++ b/MEC012/SRV/RNIS/resources/RadioNetworkInformationAPI.robot @@ -39,9 +39,9 @@ Check PlmnInfo Check S1BearerInfo [Arguments] ${received_value} log ${received_value} - Should Be Equal As Strings ${received_value['s1UeIffo']['ecgi']['cellId']} ${CELL_ID} + Should Be Equal As Strings ${received_value['s1UeInfo'][0]['ecgi'][0]['cellId']} ${CELL_ID} Check L2MeasInfo [Arguments] ${received_value} log ${received_value} - Should Be Equal As Strings ${received_value['cellInfo'][0]['ecgi']['cellId']} ${CELL_ID} + Should Be Equal As Strings ${received_value['cellInfo'][0]['ecgi'][0]['cellId']} ${CELL_ID} diff --git a/MEC012/SRV/RNIS/schemas/CaReconfNotification.schema.json b/MEC012/SRV/RNIS/schemas/CaReconfNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..51c09b03a6c394e4f3b916777c91333af51fa0c3 --- /dev/null +++ b/MEC012/SRV/RNIS/schemas/CaReconfNotification.schema.json @@ -0,0 +1,277 @@ +{ + "title": "CaReconfNotification", + "allOf": [ + { + "title": "InlineNotification", + "required": [ + "notificationType" + ], + "type": "object", + "properties": { + "notificationType": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "notificationType", + "mapping": { + "CaReconfNotification": "#/components/schemas/CaReconfNotification", + "CellChangeNotification": "#/components/schemas/CellChangeNotification", + "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification", + "MeasTaNotification": "#/components/schemas/MeasTaNotification", + "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification", + "RabEstNotification": "#/components/schemas/RabEstNotification", + "RabModNotification": "#/components/schemas/RabModNotification", + "RabRelNotification": "#/components/schemas/RabRelNotification", + "S1BearerNotification": "#/components/schemas/S1BearerNotification", + "ExpiryNotification": "#/components/schemas/ExpiryNotification", + "TestNotification": "#/components/schemas/TestNotification" + } + } + }, + { + "required": [ + "ecgi", + "_links" + ], + "type": "object", + "properties": { + "associateId": { + "type": "array", + "items": { + "title": "AssociateId", + "type": "object", + "properties": { + "type": { + "title": "Type", + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Numeric value (0-255) corresponding to specified type of identifier as following: 0 = reserved. 1 = UE_IPv4_ADDRESS. 2 = UE_IPV6_ADDRESS. 3 = NATED_IP_ADDRESS. 4 = GTP_TEID.", + "examples": [ + 0 + ] + }, + "value": { + "type": "string", + "description": "Value for the identifier." + } + } + }, + "description": "0 to N identifiers to associate the event for a specific UE or flow." + }, + "carrierAggregationMeasInfo": { + "type": "array", + "items": { + "title": "CarrierAggregationMeasInfo", + "type": "object", + "required": [ + "cellIdSrv", + "cellIdNei" + ], + "properties": { + "cellIdNei": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "cellIdSrv": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "rsrpNei": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].", + "contentEncoding": "int32" + }, + "rsrpSrv": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].", + "contentEncoding": "int32" + }, + "rsrqNei": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].", + "contentEncoding": "int32" + }, + "rsrqSrv": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].", + "contentEncoding": "int32" + } + } + }, + "description": "This parameter can be repeated to contain information of all the carriers assign for Carrier Aggregation up to N." + }, + "ecgi": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", + "properties": { + "cellId": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + }, + "secondaryCellAdd": { + "type": "array", + "items": { + "title": "SecondaryCellAdd", + "type": "object", + "required": [ + "ecgi" + ], + "properties": { + "ecgi": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", + "properties": { + "cellId": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + } + } + }, + "description": "" + }, + "secondaryCellRemove": { + "type": "array", + "items": { + "title": "SecondaryCellRemove", + "type": "object", + "required": [ + "ecgi" + ], + "properties": { + "ecgi": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", + "properties": { + "cellId": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + } + } + }, + "description": "" + }, + "timeStamp": { + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } + }, + "_links": { + "description": "Links to resources related to this notification.", + "required": [ + "subscription" + ], + "properties": { + "subscription": { + "description": "A link to the related subscription.", + "title": "LinkType", + "required": [ + "href" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + } + } + } + } + } + ] + } \ No newline at end of file diff --git a/MEC012/SRV/RNIS/schemas/CellChangeNotification.schema.json b/MEC012/SRV/RNIS/schemas/CellChangeNotification.schema.json index 4266f1a1ba19edb6226f3fb117808d8f58d7eb5d..ae3f9da3df99ba3d8e5477ef9df1fd4a025d8219 100644 --- a/MEC012/SRV/RNIS/schemas/CellChangeNotification.schema.json +++ b/MEC012/SRV/RNIS/schemas/CellChangeNotification.schema.json @@ -1,158 +1,218 @@ { - "properties": { - "associateId": { - "description": "0 to N identifiers to associate the event for a specific UE or flow.", - "items": { + "title": "CellChangeNotification", + "description": "This type represents a notification from RNIS with regards to cell change procedure\nNOTE:\tCardinality N is valid only in case of statuses IN_PREPARATION, REJECTED and CANCELLED.\n", + "allOf": [ + { + "title": "InlineNotification", + "required": [ + "notificationType" + ], + "type": "object", + "properties": { + "notificationType": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "notificationType", + "mapping": { + "CaReconfNotification": "#/components/schemas/CaReconfNotification", + "CellChangeNotification": "#/components/schemas/CellChangeNotification", + "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification", + "MeasTaNotification": "#/components/schemas/MeasTaNotification", + "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification", + "RabEstNotification": "#/components/schemas/RabEstNotification", + "RabModNotification": "#/components/schemas/RabModNotification", + "RabRelNotification": "#/components/schemas/RabRelNotification", + "S1BearerNotification": "#/components/schemas/S1BearerNotification", + "ExpiryNotification": "#/components/schemas/ExpiryNotification", + "TestNotification": "#/components/schemas/TestNotification" + } + } + }, + { + "required": [ + "hoStatus", + "srcEcgi", + "trgEcgi", + "_links" + ], + "type": "object", + "properties": { + "associateId": { + "type": "array", + "items": { + "title": "AssociateId", + "type": "object", + "properties": { + "type": { + "title": "Type", + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:
0 = reserved.
1 = UE_IPv4_ADDRESS.
2 = UE_IPV6_ADDRESS.
3 = NATED_IP_ADDRESS.
4 = GTP_TEID.", + "examples": [ + 0 + ] + }, + "value": { + "type": "string", + "description": "Value for the identifier." + } + } + }, + "description": "0 to N identifiers to associate the event for a specific UE or flow." + }, + "hoStatus": { + "title": "HoStatus", + "enum": [ + 1, + 2, + 3, + 4, + 5 + ], + "type": "integer", + "description": "Indicate the status of the UE handover procedure. Values are defined as following:
1 = IN_PREPARATION.
2 = IN_EXECUTION.
3 = COMPLETED.
4 = REJECTED.
5 = CANCELLED.", + "examples": [ + 1 + ] + }, + "srcEcgi": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", + "properties": { + "cellId": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", "properties": { - "type": { - "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", - "enum": [ - "SEE_DESCRIPTION" - ], + "mcc": { "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Enum" + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." }, - "value": { - "description": "Value for the identifier.", + "mnc": { "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." } - }, - "required": [ - "type", - "value" - ], - "type": "object", - "x-etsi-ref": "6.5.4" + } + } + } + }, + "tempUeId": { + "title": "TempUeId", + "required": [ + "mmec", + "mtmsi" + ], + "type": "object", + "properties": { + "mmec": { + "type": "string", + "description": "MMEC as defined in ETSI TS 136 413 [i.3]." }, - "type": "array", - "x-etsi-mec-cardinality": "0..N", - "x-etsi-mec-origin-type": "AssociateId" + "mtmsi": { + "type": "string", + "description": "M-TMSI as defined in ETSI TS 136 413 [i.3]." + } }, - "hoStatus": { - "description": "Indicate the status of the UE handover procedure. Values are defined as following:\n1 = IN_PREPARATION.\n2 = IN_EXECUTION.\n3 = COMPLETED.\n4 = REJECTED.\n5 = CANCELLED.", - "enum": [ - "SEE_DESCRIPTION" + "description": "The temporary identifier allocated for the specific UE as defined below." + }, + "timeStamp": { + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } + }, + "trgEcgi": { + "type": "array", + "items": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" ], - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Enum" - }, - "notificationType": { - "description": "Shall be set to \"CellChangeNotification\".", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "srcEcgi": { + "type": "object", "properties": { "cellId": { - "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", - "type": "string" + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." }, "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", "properties": { "mcc": { - "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." }, "mnc": { - "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." } - }, - "required": [ - "mcc", - "mnc" - ], - "type": "object", - "x-etsi-ref": "6.5.5" - } - }, - "required": [ - "plmn", - "cellId" - ], - "type": "object", - "x-etsi-ref": "6.5.6" - }, - "tempUeId": { - "description": "The temporary identifier allocated for the specific UE as defined below.", - "type": "object", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Structure (inlined)" - }, - "timeStamp": { - "properties": { - "nanoSeconds": { - "type": "number" - }, - "seconds": { - "type": "number" + } } - }, - "required": [ - "seconds", - "nanoSeconds" - ], - "type": "object", - "x-etsi-ref": "6.5.3" + } }, - "trgEcgi": { - "description": "E-UTRAN CelI Global Identifier of the target cell.\nNOTE: Cardinality N is valid only in case of statuses IN_PREPARATION, REJECTED and CANCELLED.", - "items": { - "properties": { - "cellId": { - "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", - "type": "string" - }, - "plmn": { - "properties": { - "mcc": { - "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "mnc": { - "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - } - }, - "required": [ - "mcc", - "mnc" - ], - "type": "object", - "x-etsi-ref": "6.5.5" - } - }, + "description": "E-UTRAN Cell Global Identifier of the target cell. See note.\n" + }, + "_links": { + "description": "Links to resources related to this notification.", + "required": [ + "subscription" + ], + "properties": { + "subscription": { + "description": "A link to the related subscription.", + "title": "LinkType", "required": [ - "plmn", - "cellId" + "href" ], "type": "object", - "x-etsi-ref": "6.5.6" - }, - "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Ecgi" + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + } } - }, - "required": [ - "notificationType", - "srcEcgi", - "trgEcgi", - "hoStatus" - ], - "type": "object", - "x-etsi-ref": "6.4.2" - } \ No newline at end of file + } + } + } + ] +} \ No newline at end of file diff --git a/MEC012/SRV/RNIS/schemas/ExpiryNotification.schema.json b/MEC012/SRV/RNIS/schemas/ExpiryNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..df78249a35329fa2405970429814ffe072bedcc8 --- /dev/null +++ b/MEC012/SRV/RNIS/schemas/ExpiryNotification.schema.json @@ -0,0 +1,107 @@ +{ + "title": "ExpiryNotification", + "allOf": [ + { + "title": "InlineNotification", + "required": [ + "notificationType" + ], + "type": "object", + "properties": { + "notificationType": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "notificationType", + "mapping": { + "CaReconfNotification": "#/components/schemas/CaReconfNotification", + "CellChangeNotification": "#/components/schemas/CellChangeNotification", + "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification", + "MeasTaNotification": "#/components/schemas/MeasTaNotification", + "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification", + "RabEstNotification": "#/components/schemas/RabEstNotification", + "RabModNotification": "#/components/schemas/RabModNotification", + "RabRelNotification": "#/components/schemas/RabRelNotification", + "S1BearerNotification": "#/components/schemas/S1BearerNotification", + "ExpiryNotification": "#/components/schemas/ExpiryNotification", + "TestNotification": "#/components/schemas/TestNotification" + } + } + }, + { + "required": [ + "_links", + "expiryDeadline" + ], + "type": "object", + "properties": { + "_links": { + "title": "Links2", + "required": [ + "subscription" + ], + "type": "object", + "properties": { + "subscription": { + "description": "URI identifying the subscription which has expired.", + "title": "LinkType", + "required": [ + "href" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + } + }, + "description": "List of hyperlinks related to the resource." + }, + "expiryDeadline": { + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } + }, + "timeStamp": { + "description": "Time stamp of the notification.", + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } + } + } + } + ] + } \ No newline at end of file diff --git a/MEC012/SRV/RNIS/schemas/MeasTaNotification.schema.json b/MEC012/SRV/RNIS/schemas/MeasTaNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..88bed1e2eaa317c20eb56d69a4c2cccfcae167da --- /dev/null +++ b/MEC012/SRV/RNIS/schemas/MeasTaNotification.schema.json @@ -0,0 +1,151 @@ +{ + "title": "MeasTaNotification", + "allOf": [ + { + "title": "InlineNotification", + "required": [ + "notificationType" + ], + "type": "object", + "properties": { + "notificationType": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "notificationType", + "mapping": { + "CaReconfNotification": "#/components/schemas/CaReconfNotification", + "CellChangeNotification": "#/components/schemas/CellChangeNotification", + "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification", + "MeasTaNotification": "#/components/schemas/MeasTaNotification", + "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification", + "RabEstNotification": "#/components/schemas/RabEstNotification", + "RabModNotification": "#/components/schemas/RabModNotification", + "RabRelNotification": "#/components/schemas/RabRelNotification", + "S1BearerNotification": "#/components/schemas/S1BearerNotification", + "ExpiryNotification": "#/components/schemas/ExpiryNotification", + "TestNotification": "#/components/schemas/TestNotification" + } + } + }, + { + "required": [ + "ecgi", + "timingAdvance", + "_links" + ], + "type": "object", + "properties": { + "associateId": { + "type": "array", + "items": { + "title": "AssociateId", + "type": "object", + "properties": { + "type": { + "title": "Type", + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:
0 = reserved.
1 = UE_IPv4_ADDRESS.
2 = UE_IPV6_ADDRESS.
3 = NATED_IP_ADDRESS.
4 = GTP_TEID.", + "examples": [ + 0 + ] + }, + "value": { + "type": "string", + "description": "Value for the identifier." + } + } + }, + "description": "0 to N identifiers to associate the event for a specific UE or flow." + }, + "ecgi": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", + "properties": { + "cellId": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + }, + "timeStamp": { + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } + }, + "timingAdvance": { + "type": "integer", + "description": "The timing advance as defined in ETSI TS 136 214 [i.5].", + "contentEncoding": "int32" + }, + "_links": { + "description": "Links to resources related to this notification.", + "required": [ + "subscription" + ], + "properties": { + "subscription": { + "description": "A link to the related subscription.", + "title": "LinkType", + "required": [ + "href" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + } + } + } + } + } + ] + } \ No newline at end of file diff --git a/MEC012/SRV/RNIS/schemas/NrMeasRepUeNotification.schema.json b/MEC012/SRV/RNIS/schemas/NrMeasRepUeNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..d39064a3448cfcab554f0bf3c2f68b5f24a651b4 --- /dev/null +++ b/MEC012/SRV/RNIS/schemas/NrMeasRepUeNotification.schema.json @@ -0,0 +1,723 @@ +{ + "title": "NrMeasRepUeNotification", + "allOf": [ + { + "title": "InlineNotification", + "required": [ + "notificationType" + ], + "type": "object", + "properties": { + "notificationType": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "notificationType", + "mapping": { + "CaReconfNotification": "#/components/schemas/CaReconfNotification", + "CellChangeNotification": "#/components/schemas/CellChangeNotification", + "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification", + "MeasTaNotification": "#/components/schemas/MeasTaNotification", + "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification", + "RabEstNotification": "#/components/schemas/RabEstNotification", + "RabModNotification": "#/components/schemas/RabModNotification", + "RabRelNotification": "#/components/schemas/RabRelNotification", + "S1BearerNotification": "#/components/schemas/S1BearerNotification", + "ExpiryNotification": "#/components/schemas/ExpiryNotification", + "TestNotification": "#/components/schemas/TestNotification" + } + } + }, + { + "required": [ + "triggerNr", + "_links" + ], + "type": "object", + "properties": { + "associateId": { + "type": "array", + "items": { + "title": "AssociateId", + "type": "object", + "properties": { + "type": { + "title": "Type", + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:
0 = reserved.
1 = UE_IPv4_ADDRESS.
2 = UE_IPV6_ADDRESS.
3 = NATED_IP_ADDRESS.
4 = GTP_TEID.", + "examples": [ + 0 + ] + }, + "value": { + "type": "string", + "description": "Value for the identifier." + } + } + }, + "description": "0 to N identifiers to associate the event for a specific UE or flow." + }, + "eutraNeighCellMeasInfo": { + "type": "array", + "items": { + "title": "EutraNeighCellMeasInfo", + "type": "object", + "required": [ + "ecgi" + ], + "properties": { + "ecgi": { + "description": "E-UTRAN Cell Global Identifier.", + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", + "properties": { + "cellId": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + }, + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal plus Interference Noise Ratio as defined in ETSI TS138331[i.13].", + "contentEncoding": "int32" + } + } + }, + "description": "This parameter can be repeated to contain measurement information of all the neighbouring cells up to N. It shall not be included if nrNeighCellMeasInfo is included." + }, + "nrNeighCellMeasInfo": { + "type": "array", + "items": { + "title": "NrNeighCellMeasInfo", + "type": "object", + "required": [ + "nrcgi" + ], + "properties": { + "measQuantityResultsCsiRsCell": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + }, + "measQuantityResultsSsbCell": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + }, + "nrcgi": { + "description": "NR Cell Global Identifier.", + "title": "Nrcgi", + "required": [ + "nrCellId", + "plmn" + ], + "type": "object", + "properties": { + "nrcellId": { + "type": "string", + "description": "String representing the NR Cell Identity. Encoded as a bit string (size (36)) as defined in ETSI TS 138 423 [i.17]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + }, + "rsIndexResults": { + "title": "RsIndexResults", + "required": [ + "resultsCsiRsIndexes", + "resultsSsbIndexes" + ], + "type": "object", + "properties": { + "resultsCsiRsIndexes": { + "title": "ResultsPerCsiRsIndexList", + "type": "object", + "properties": { + "resultsPerCsiRsIndex": { + "type": "array", + "items": { + "title": "ResultsPerCsiRsIndex", + "required": [ + "csiRsIndex" + ], + "type": "object", + "properties": { + "csiRsIndex": { + "type": "integer", + "contentEncoding": "int32" + }, + "csiRsResults": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + } + } + }, + "description": "" + } + } + }, + "resultsSsbIndexes": { + "title": "ResultsPerSsbIndexList", + "type": "object", + "properties": { + "resultsPerSsbIndex": { + "type": "array", + "items": { + "title": "ResultsPerSsbIndex", + "required": [ + "ssbIndex" + ], + "type": "object", + "properties": { + "ssbIndex": { + "type": "integer", + "contentEncoding": "int32" + }, + "ssbResults": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + } + } + }, + "description": "" + } + } + } + } + } + } + }, + "description": "This parameter can be repeated to contain measurement information of all the neighbouring cells up to N. It shall not be included if eutraNeighCellMeasInfo is included." + }, + "servCellMeasInfo": { + "type": "array", + "items": { + "title": "ServCellMeasInfo", + "type": "object", + "required": [ + "nrcgi", + "sCell" + ], + "properties": { + "nCell": { + "title": "NCell", + "type": "object", + "properties": { + "measQuantityResultsCsiRsCell": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + }, + "measQuantityResultsSsbCell": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + }, + "rsIndexResults": { + "title": "RsIndexResults", + "required": [ + "resultsCsiRsIndexes", + "resultsSsbIndexes" + ], + "type": "object", + "properties": { + "resultsCsiRsIndexes": { + "title": "ResultsPerCsiRsIndexList", + "type": "object", + "properties": { + "resultsPerCsiRsIndex": { + "type": "array", + "items": { + "title": "ResultsPerCsiRsIndex", + "required": [ + "csiRsIndex" + ], + "type": "object", + "properties": { + "csiRsIndex": { + "type": "integer", + "contentEncoding": "int32" + }, + "csiRsResults": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + } + } + }, + "description": "" + } + } + }, + "resultsSsbIndexes": { + "title": "ResultsPerSsbIndexList", + "type": "object", + "properties": { + "resultsPerSsbIndex": { + "type": "array", + "items": { + "title": "ResultsPerSsbIndex", + "required": [ + "ssbIndex" + ], + "type": "object", + "properties": { + "ssbIndex": { + "type": "integer", + "contentEncoding": "int32" + }, + "ssbResults": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + } + } + }, + "description": "" + } + } + } + } + } + }, + "description": "Measurement information relating to the best neighbour of this serving cell." + }, + "nrcgi": { + "title": "Nrcgi", + "required": [ + "nrCellId", + "plmn" + ], + "type": "object", + "properties": { + "nrcellId": { + "type": "string", + "description": "String representing the NR Cell Identity. Encoded as a bit string (size (36)) as defined in ETSI TS 138 423 [i.17]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + }, + "sCell": { + "title": "SCell", + "type": "object", + "properties": { + "measQuantityResultsCsiRsCell": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + }, + "measQuantityResultsSsbCell": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + }, + "rsIndexResults": { + "title": "RsIndexResults", + "required": [ + "resultsCsiRsIndexes", + "resultsSsbIndexes" + ], + "type": "object", + "properties": { + "resultsCsiRsIndexes": { + "title": "ResultsPerCsiRsIndexList", + "type": "object", + "properties": { + "resultsPerCsiRsIndex": { + "type": "array", + "items": { + "title": "ResultsPerCsiRsIndex", + "required": [ + "csiRsIndex" + ], + "type": "object", + "properties": { + "csiRsIndex": { + "type": "integer", + "contentEncoding": "int32" + }, + "csiRsResults": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + } + } + }, + "description": "" + } + } + }, + "resultsSsbIndexes": { + "title": "ResultsPerSsbIndexList", + "type": "object", + "properties": { + "resultsPerSsbIndex": { + "type": "array", + "items": { + "title": "ResultsPerSsbIndex", + "required": [ + "ssbIndex" + ], + "type": "object", + "properties": { + "ssbIndex": { + "type": "integer", + "contentEncoding": "int32" + }, + "ssbResults": { + "title": "MeasQuantityResultsNr", + "type": "object", + "properties": { + "rsrp": { + "type": "integer", + "description": "Reference Signal Received Power as defined in ETSI TS138 331 [i.13].", + "contentEncoding": "int32" + }, + "rsrq": { + "type": "integer", + "description": "Reference Signal Received Quality as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + }, + "sinr": { + "type": "integer", + "description": "Reference Signal to Interference & Noise Ratio as defined in ETSI TS 138 331 [i.13].", + "contentEncoding": "int32" + } + } + } + } + }, + "description": "" + } + } + } + } + } + }, + "description": "Measurement information relating to this serving cell." + } + } + }, + "description": "This parameter can be repeated to contain information of all the serving cells up to N." + }, + "timeStamp": { + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } + }, + "triggerNr": { + "title": "TriggerNr", + "enum": [ + 0, + 1, + 2, + 10, + 11, + 12, + 13, + 14, + 15, + 20, + 21, + 30, + 31 + ], + "type": "integer", + "description": "The enumeration Trigger represents specified triggers for a 5G UE Measurement Report. Full details can be found in ETSI TS 138 331 [i.13]).
0 = NOT_AVAILABLE
1 = NR_PERIODICAL
2 = NR_CGI
10 = EVENT_A1
11 = EVENT_A2
12 = EVENT_A3
13 = EVENT_A4
14 = EVENT_A5
15 = EVENT_A6
20 = INTER_RAT_PERIODICAL
21 = INTER_RAT_CGI
30 = EVENT_B1
31 = EVENT_B2", + "examples": [ + 0 + ] + }, + "_links": { + "description": "Links to resources related to this notification.", + "required": [ + "subscription" + ], + "properties": { + "subscription": { + "description": "A link to the related subscription.", + "title": "LinkType", + "required": [ + "href" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + } + } + } + } + } + ] + } \ No newline at end of file diff --git a/MEC012/SRV/RNIS/schemas/PlmnInfos.schema.json b/MEC012/SRV/RNIS/schemas/PlmnInfos.schema.json index 72f2ac15a48bd67c8aafa13cf9d25c53fdb0e5f5..91c9164046220696512aa90264ada1c9abdf117f 100644 --- a/MEC012/SRV/RNIS/schemas/PlmnInfos.schema.json +++ b/MEC012/SRV/RNIS/schemas/PlmnInfos.schema.json @@ -1,64 +1,59 @@ { "type": "array", "items": { - "type": "object", - "properties": { - "appInstanceId": { - "description": "Unique identifier for the MEC application instance.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "plmn": { - "description": "Public Land Mobile Network Identity.", - "items": { - "properties": { - "mcc": { - "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "mnc": { - "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - } - }, - "required": [ - "mcc", - "mnc" - ], - "type": "object", - "x-etsi-ref": "6.5.5" - }, - "minItems": 1, - "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Plmn" - }, - "timeStamp": { - "properties": { - "nanoSeconds": { - "type": "number" - }, - "seconds": { - "type": "number" - } - }, + "title": "PlmnInfo", "required": [ - "seconds", - "nanoSeconds" + "appInstanceId", + "plmn" ], "type": "object", - "x-etsi-ref": "6.5.3" + "properties": { + "appInstanceId": { + "type": "string", + "description": "Unique identifier for the MEC application instance." + }, + "plmn": { + "type": "array", + "items": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + }, + "description": "Public Land Mobile Network Identity." + }, + "timeStamp": { + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } + } + } } - }, - "required": [ - "appInstanceId", - "plmn" - ], - "x-etsi-ref": "6.2.2" - } } \ No newline at end of file diff --git a/MEC012/SRV/RNIS/schemas/RabEstNotification.schema.json b/MEC012/SRV/RNIS/schemas/RabEstNotification.schema.json index 095fb26c70b804b57d8fa7f93a52df4a070e1d7a..dd77919127b1351242326a59ffddac83246c826a 100644 --- a/MEC012/SRV/RNIS/schemas/RabEstNotification.schema.json +++ b/MEC012/SRV/RNIS/schemas/RabEstNotification.schema.json @@ -1,129 +1,201 @@ { - "properties": { - "associateId": { - "description": "0 to N identifiers to bind the event for a specific UE or flow. ", - "items": { - "properties": { - "type": { - "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", - "enum": [ - "SEE_DESCRIPTION" - ], - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Enum" - }, - "value": { - "description": "Value for the identifier.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - } - }, - "required": [ - "type", - "value" - ], - "type": "object", - "x-etsi-ref": "6.5.4" - }, - "type": "array", - "x-etsi-mec-cardinality": "0..N", - "x-etsi-mec-origin-type": "AssociateId" - }, - "ecgi": { - "properties": { - "cellId": { - "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", - "type": "string" - }, - "plmn": { - "properties": { - "mcc": { - "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "mnc": { - "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - } - }, - "required": [ - "mcc", - "mnc" - ], - "type": "object", - "x-etsi-ref": "6.5.5" - } - }, - "required": [ - "plmn", - "cellId" - ], - "type": "object", - "x-etsi-ref": "6.5.6" - }, - "erabId": { - "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].", - "type": "integer", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Integer" - }, - "erabQosParameters": { - "description": "QoS parameters for the E-RAB as defined below.", - "properties": { - "qci": { - "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].", - "type": "integer", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Integer" - } - }, - "required": [ - "qci" - ], - "type": "object", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Structure (inlined)" - }, - "notificationType": { - "description": "Shall be set to \"RabEstNotification\".", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "tempUeId": { - "description": "The temporary identifier allocated for the specific UE as defined below. ", - "type": "object", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Structure (inlined)" - }, - "timeStamp": { - "properties": { - "nanoSeconds": { - "type": "number" - }, - "seconds": { - "type": "number" - } - }, - "required": [ - "seconds", - "nanoSeconds" - ], - "type": "object", - "x-etsi-ref": "6.5.3" - } - }, - "required": [ - "notificationType", - "ecgi", - "erabId" - ], - "type": "object", - "x-etsi-ref": "6.4.3" -} \ No newline at end of file + "title": "RabEstNotification", + "allOf": [ + { + "title": "InlineNotification", + "required": [ + "notificationType" + ], + "type": "object", + "properties": { + "notificationType": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "notificationType", + "mapping": { + "CaReconfNotification": "#/components/schemas/CaReconfNotification", + "CellChangeNotification": "#/components/schemas/CellChangeNotification", + "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification", + "MeasTaNotification": "#/components/schemas/MeasTaNotification", + "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification", + "RabEstNotification": "#/components/schemas/RabEstNotification", + "RabModNotification": "#/components/schemas/RabModNotification", + "RabRelNotification": "#/components/schemas/RabRelNotification", + "S1BearerNotification": "#/components/schemas/S1BearerNotification", + "ExpiryNotification": "#/components/schemas/ExpiryNotification", + "TestNotification": "#/components/schemas/TestNotification" + } + } + }, + { + "required": [ + "ecgi", + "erabId", + "_links" + ], + "type": "object", + "properties": { + "associateId": { + "type": "array", + "items": { + "title": "AssociateId", + "type": "object", + "properties": { + "type": { + "title": "Type", + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:
0 = reserved.
1 = UE_IPv4_ADDRESS.
2 = UE_IPV6_ADDRESS.
3 = NATED_IP_ADDRESS.
4 = GTP_TEID.", + "examples": [ + 0 + ] + }, + "value": { + "type": "string", + "description": "Value for the identifier." + } + } + }, + "description": "0 to N identifiers to bind the event for a specific UE or flow." + }, + "ecgi": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", + "properties": { + "cellId": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + }, + "erabId": { + "type": "integer", + "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].", + "contentEncoding": "int32" + }, + "erabQosParameters": { + "title": "ErabQosParameters", + "required": [ + "qci" + ], + "type": "object", + "properties": { + "qci": { + "type": "integer", + "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].", + "contentEncoding": "int32" + }, + "qosInformation": { + "title": "QosInformation", + "required": [ + "erabGbrDl", + "erabGbrUl", + "erabMbrDl", + "erabMbrUl" + ], + "type": "object", + "properties": { + "erabGbrDl": { + "type": "integer", + "description": "This attribute indicates the guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + }, + "erabGbrUl": { + "type": "integer", + "description": "This attribute indicates the guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + }, + "erabMbrDl": { + "type": "integer", + "description": "This attribute indicates the maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + }, + "erabMbrUl": { + "type": "integer", + "description": "This attribute indicates the maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + } + }, + "description": "The QoS information for the E-RAB." + } + }, + "description": "QoS parameters for the E-RAB as defined below." + }, + "tempUeId": { + "title": "TempUeId", + "required": [ + "mmec", + "mtmsi" + ], + "type": "object", + "properties": { + "mmec": { + "type": "string", + "description": "MMEC as defined in ETSI TS 136 413 [i.3]." + }, + "mtmsi": { + "type": "string", + "description": "M-TMSI as defined in ETSI TS 136 413 [i.3]." + } + }, + "description": "The temporary identifier allocated for the specific UE as defined below." + }, + "timeStamp": { + "_links": null, + "description": "Links to resources related to this notification.", + "required": [ + "subscription" + ], + "properties": { + "subscription": { + "description": "A link to the related subscription.", + "title": "LinkType", + "required": [ + "href" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + } + }, + "title": "TimeStamp", + "type": "object" + } + } + } + ] + } \ No newline at end of file diff --git a/MEC012/SRV/RNIS/schemas/RabInfo.schema.json b/MEC012/SRV/RNIS/schemas/RabInfo.schema.json index bb3c80831db46022713e68bc6622b46683adadf7..8d60b57b9681ea507d98a9620ac4fa81d9ad9976 100644 --- a/MEC012/SRV/RNIS/schemas/RabInfo.schema.json +++ b/MEC012/SRV/RNIS/schemas/RabInfo.schema.json @@ -1,152 +1,189 @@ { - "type": "object", - "properties": { - "appInstanceId": { - "description": "Unique identifier for the MEC application instance.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "cellUserInfo": { - "description": "The information on users per cell as defined below.", - "items": { + "title": "RabInfo", + "required": [ + "appInstanceId", + "requestId" + ], + "type": "object", "properties": { - "ecgi": { - "properties": { - "cellId": { - "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", - "type": "string" - }, - "plmn": { - "properties": { - "mcc": { - "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "mnc": { - "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - } - }, - "required": [ - "mcc", - "mnc" - ], - "type": "object", - "x-etsi-ref": "6.5.5" - } - }, - "required": [ - "plmn", - "cellId" - ], - "type": "object", - "x-etsi-ref": "6.5.6" + "appInstanceId": { + "type": "string", + "description": "Unique identifier for the MEC application instance." }, - "ueInfo": { - "description": "Information on UEs in the specific cell as defined below.", + "cellUserInfo": { + "type": "array", "items": { + "title": "CellUserInfo", + "type": "object", + "required": [ + "ecgi", + "ueInfo" + ], "properties": { - "associateId": { - "description": "0 to N identifiers to associate the event for a specific UE or flow.", + "ecgi": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", + "properties": { + "cellId": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + }, + "ueInfo": { + "type": "array", "items": { + "title": "UeInfo", + "type": "object", + "required": [ + "erabInfo" + ], "properties": { - "type": { - "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", - "type": "number", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Enum" + "associateId": { + "type": "array", + "items": { + "title": "AssociateId", + "type": "object", + "properties": { + "type": { + "title": "Type", + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:
0 = reserved.
1 = UE_IPv4_ADDRESS.
2 = UE_IPV6_ADDRESS.
3 = NATED_IP_ADDRESS.
4 = GTP_TEID.", + "examples": [ + 0 + ] + }, + "value": { + "type": "string", + "description": "Value for the identifier." + } + } + }, + "description": "0 to N identifiers to associate the event for a specific UE or flow." }, - "value": { - "description": "Value for the identifier.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" + "erabInfo": { + "type": "array", + "items": { + "title": "ErabInfo", + "type": "object", + "properties": { + "erabId": { + "type": "integer", + "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].", + "contentEncoding": "int32" + }, + "erabQosParameters": { + "title": "ErabQosParameters", + "required": [ + "qci" + ], + "type": "object", + "properties": { + "qci": { + "type": "integer", + "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].", + "contentEncoding": "int32" + }, + "qosInformation": { + "title": "QosInformation", + "required": [ + "erabGbrDl", + "erabGbrUl", + "erabMbrDl", + "erabMbrUl" + ], + "type": "object", + "properties": { + "erabGbrDl": { + "type": "integer", + "description": "This attribute indicates the guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + }, + "erabGbrUl": { + "type": "integer", + "description": "This attribute indicates the guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + }, + "erabMbrDl": { + "type": "integer", + "description": "This attribute indicates the maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + }, + "erabMbrUl": { + "type": "integer", + "description": "This attribute indicates the maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + } + }, + "description": "The QoS information for the E-RAB." + } + }, + "description": "QoS parameters for the E-RAB as defined below." + } + } + }, + "description": "Information on E-RAB as defined below." } - }, - "required": [ - "type", - "value" - ], - "type": "object", - "x-etsi-ref": "6.5.4" - }, - "type": "array", - "x-etsi-mec-cardinality": "0..N", - "x-etsi-mec-origin-type": "AssociateId" - }, - "erabInfo": { - "description": "Information on E-RAB as defined below.", - "items": { - "type": "object" - }, - "properties": { - "erabId": { - "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].", - "type": "integer", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Integer" - }, - "erabQosParameters": { - "description": "QoS parameters for the E-RAB as defined below.", - "type": "object", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Structure (inlined)" } }, - "required": [ - "erabId" - ], - "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Structure (inlined)" + "description": "Information on UEs in the specific cell as defined below." } - }, - "type": "object" + } }, + "description": "The information on users per cell as defined below." + }, + "requestId": { + "type": "string", + "description": "Unique identifier allocated by the service consumer for the RAB Information request." + }, + "timeStamp": { + "title": "TimeStamp", "required": [ - "erabInfo" + "nanoSeconds", + "seconds" ], - "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Structure (inlined)" + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } } - }, - "type": "object", - "required": [ - "ecgi", - "ueInfo" - ] - }, - "type": "array", - "x-etsi-mec-cardinality": "0..N", - "x-etsi-mec-origin-type": "Structure (inlined)" - }, - "requestId": { - "description": "Unique identifier allocated by the service consumer for the RAB Information request.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "timeStamp": { - "properties": { - "nanoSeconds": { - "type": "number" - }, - "seconds": { - "type": "number" } - }, - "required": [ - "seconds", - "nanoSeconds" - ], - "type": "object", - "x-etsi-ref": "6.5.3" - } - } -} + } \ No newline at end of file diff --git a/MEC012/SRV/RNIS/schemas/RabModNotification.schema.json b/MEC012/SRV/RNIS/schemas/RabModNotification.schema.json index c0cd6eceb437779d81730c1af1340c0e6f885d83..679ac23270c5743dadfe3166b91fb5b20870c982 100644 --- a/MEC012/SRV/RNIS/schemas/RabModNotification.schema.json +++ b/MEC012/SRV/RNIS/schemas/RabModNotification.schema.json @@ -1,123 +1,199 @@ { - "properties": { - "associateId": { - "description": "0 to N identifiers to bind the event for a specific UE or flow. ", - "items": { - "properties": { - "type": { - "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", - "enum": [ - "SEE_DESCRIPTION" - ], - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Enum" - }, - "value": { - "description": "Value for the identifier.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - } - }, - "required": [ - "type", - "value" - ], - "type": "object", - "x-etsi-ref": "6.5.4" + "title": "RabModNotification", + "allOf": [ + { + "title": "InlineNotification", + "required": [ + "notificationType" + ], + "type": "object", + "properties": { + "notificationType": { + "type": "string" + } }, - "type": "array", - "x-etsi-mec-cardinality": "0..N", - "x-etsi-mec-origin-type": "AssociateId" + "discriminator": { + "propertyName": "notificationType", + "mapping": { + "CaReconfNotification": "#/components/schemas/CaReconfNotification", + "CellChangeNotification": "#/components/schemas/CellChangeNotification", + "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification", + "MeasTaNotification": "#/components/schemas/MeasTaNotification", + "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification", + "RabEstNotification": "#/components/schemas/RabEstNotification", + "RabModNotification": "#/components/schemas/RabModNotification", + "RabRelNotification": "#/components/schemas/RabRelNotification", + "S1BearerNotification": "#/components/schemas/S1BearerNotification", + "ExpiryNotification": "#/components/schemas/ExpiryNotification", + "TestNotification": "#/components/schemas/TestNotification" + } + } }, - "ecgi": { + { + "required": [ + "ecgi", + "erabId", + "_links" + ], + "type": "object", "properties": { - "cellId": { - "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", - "type": "string" + "associateId": { + "type": "array", + "items": { + "title": "AssociateId", + "type": "object", + "properties": { + "type": { + "title": "Type", + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:
0 = reserved.
1 = UE_IPv4_ADDRESS.
2 = UE_IPV6_ADDRESS.
3 = NATED_IP_ADDRESS.
4 = GTP_TEID.", + "examples": [ + 0 + ] + }, + "value": { + "type": "string", + "description": "Value for the identifier." + } + } + }, + "description": "0 to N identifiers to bind the event for a specific UE or flow." }, - "plmn": { + "ecgi": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", "properties": { - "mcc": { - "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "cellId": { "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." }, - "mnc": { - "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + }, + "erabId": { + "type": "integer", + "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].", + "contentEncoding": "int32" + }, + "erabQosParameters": { + "title": "ErabQosParameters2", + "required": [ + "qci" + ], + "type": "object", + "properties": { + "qci": { + "type": "integer", + "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].", + "contentEncoding": "int32" + }, + "qosInformation": { + "title": "QosInformation2", + "required": [ + "erabGbrDl", + "erabGbrUl", + "erabMbrDl", + "erabMbrUl" + ], + "type": "object", + "properties": { + "erabGbrDl": { + "type": "integer", + "description": "This attribute indicates the guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + }, + "erabGbrUl": { + "type": "integer", + "description": "This attribute indicates the guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + }, + "erabMbrDl": { + "type": "integer", + "description": "This attribute indicates the maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + }, + "erabMbrUl": { + "type": "integer", + "description": "This attribute indicates the maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401 [i.4] for this bearer.", + "contentEncoding": "int32" + } + }, + "description": "The QoS Information for the E-RAB as defined below." } }, + "description": "The QoS parameters for the E-RAB as defined below." + }, + "timeStamp": { + "title": "TimeStamp", "required": [ - "mcc", - "mnc" + "nanoSeconds", + "seconds" ], "type": "object", - "x-etsi-ref": "6.5.5" - } - }, - "required": [ - "plmn", - "cellId" - ], - "type": "object", - "x-etsi-ref": "6.5.6" - }, - "erabId": { - "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].", - "type": "integer", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Integer" - }, - "erabQosParameters": { - "description": "The QoS parameters for the E-RAB as defined below.", - "properties": { - "qci": { - "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].", - "type": "integer", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Integer" - } - }, - "required": [ - "qci" - ], - "type": "object", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Structure (inlined)" - }, - "notificationType": { - "description": "Shall be set to \"RabModNotification\".", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - }, - "timeStamp": { - "properties": { - "nanoSeconds": { - "type": "number" + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } }, - "seconds": { - "type": "number" + "_links": { + "description": "Links to resources related to this notification.", + "required": [ + "subscription" + ], + "properties": { + "subscription": { + "description": "A link to the related subscription.", + "title": "LinkType", + "required": [ + "href" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + } + } } - }, - "required": [ - "seconds", - "nanoSeconds" - ], - "type": "object", - "x-etsi-ref": "6.5.3" + } } - }, - "required": [ - "notificationType", - "ecgi", - "erabId" - ], - "type": "object", - "x-etsi-ref": "6.4.4" + ] } \ No newline at end of file diff --git a/MEC012/SRV/RNIS/schemas/S1BearerInfos.schema.json b/MEC012/SRV/RNIS/schemas/S1BearerInfos.schema.json index 35efd72ec658459c7daa4e10a5203cb9aabe0b64..3bd04e8f42ed2ca985f48884b6c203da2f85341c 100644 --- a/MEC012/SRV/RNIS/schemas/S1BearerInfos.schema.json +++ b/MEC012/SRV/RNIS/schemas/S1BearerInfos.schema.json @@ -1,178 +1,189 @@ { "type": "array", "items": { - "type": "object", - "properties": { - "s1UeIffo": { - "description": "1..N", + "title": "S1BearerInfo", + "required": [ + "s1UeInfo" + ], + "type": "object", "properties": { - "associateId": { - "properties": { - "type": { - "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", - "enum": [ - "SEE_DESCRIPTION" - ], - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Enum" - }, - "value": { - "description": "Value for the identifier.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - } - }, - "required": [ - "type", - "value" - ], - "type": "object", - "x-etsi-ref": "6.5.4" - }, - "ecgi": { - "properties": { - "cellId": { - "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", - "type": "string" - }, - "plmn": { - "properties": { - "mcc": { - "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" + "s1UeInfo": { + "type": "array", + "items": { + "title": "S1UeInfo", + "type": "object", + "required": [ + "associateId", + "ecgi", + "s1BearerInfoDetailed" + ], + "properties": { + "associateId": { + "type": "array", + "items": { + "title": "AssociateId", + "type": "object", + "properties": { + "type": { + "title": "Type", + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:
0 = reserved.
1 = UE_IPv4_ADDRESS.
2 = UE_IPV6_ADDRESS.
3 = NATED_IP_ADDRESS.
4 = GTP_TEID.", + "examples": [ + 0 + ] + }, + "value": { + "type": "string", + "description": "Value for the identifier." + } + } }, - "mnc": { - "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" - } + "description": "1 to N identifiers to associate the information for a specific UE or flow." }, - "required": [ - "mcc", - "mnc" - ], - "type": "object", - "x-etsi-ref": "6.5.5" - } - }, - "required": [ - "plmn", - "cellId" - ], - "type": "object", - "x-etsi-ref": "6.5.6" - }, - "s1BearerInfoDetailed": { - "description": "1..N", - "properties": { - "erabId": { - "description": "The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].", - "type": "integer", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "Integer" - }, - "enbInfo": { - "description": "S1 bearer information on eNB", - "properties": { - "ipAddress": { - "type": "string", - "description": "eNB transport layer address of this S1 bearer." + "ecgi": { + "type": "array", + "items": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", + "properties": { + "cellId": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } }, - "tunnelId": { - "type": "string", - "description": "eNB GTP-U TEID of this S1 bearer." - } + "description": "E-UTRAN Cell Global Identifier." }, - "required": [ - "ipAddress", - "tunnelId" - ] - }, - "sGwInfo": { - "properties": { - "ipAddress": { - "type": "string", - "description": "SGW transport layer address of this S1 bearer." + "s1BearerInfoDetailed": { + "type": "array", + "items": { + "title": "S1BearerInfoDetailed", + "type": "object", + "required": [ + "erabId", + "erabInfo", + "sGwInfo" + ], + "properties": { + "enbInfo": { + "title": "EnbInfo", + "required": [ + "ipAddress", + "tunnelId" + ], + "type": "object", + "properties": { + "ipAddress": { + "type": "string", + "description": "eNB transport layer address of this S1 bearer." + }, + "tunnelId": { + "type": "string", + "description": "eNB GTP-U TEID of this S1 bearer." + } + }, + "description": "S1 bearer information on eNB side as defined below." + }, + "erabId": { + "type": "integer", + "description": "The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].", + "contentEncoding": "int32" + }, + "sGwInfo": { + "title": "SGwInfo", + "required": [ + "ipAddress", + "tunnelId" + ], + "type": "object", + "properties": { + "ipAddress": { + "type": "string", + "description": "SGW transport layer address of this S1 bearer." + }, + "tunnelId": { + "type": "string", + "description": "SGW GTP-U TEID of this S1 bearer." + } + }, + "description": "S1 bearer information on GW side as defined below." + } + } }, - "tunnelId": { - "type": "string", - "description": "SGW GTP-U TEID of this S1 bearer." - } + "description": "S1 bearer information as defined below." }, - "required": [ - "ipAddress", - "tunnelId" - ] + "tempUeId": { + "title": "TempUeId", + "required": [ + "mmec", + "mtmsi" + ], + "type": "object", + "properties": { + "mmec": { + "type": "string", + "description": "MMEC as defined in ETSI TS 136 413 [i.3]." + }, + "mtmsi": { + "type": "string", + "description": "M-TMSI as defined in ETSI TS 136 413 [i.3]." + } + }, + "description": "The temporary identifier allocated for the specific UE as defined below." + } } }, + "description": "Information on a specific UE as defined below." + }, + "timeStamp": { + "title": "TimeStamp", "required": [ - "erabId", - "enbInfo" + "nanoSeconds", + "seconds" ], "type": "object", - "x-etsi-mec-cardinality": "Structure (inlined)", - "x-etsi-mec-origin-type": "Structure (inlined)" - }, - "tempUeId": { - "description": "0..1", "properties": { - "mmec": { - "description": "1", - "type": "string", - "x-etsi-mec-cardinality": "String", - "x-etsi-mec-origin-type": "String" + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" }, - "mtmsi": { - "description": "1", - "type": "string", - "x-etsi-mec-cardinality": "String", - "x-etsi-mec-origin-type": "String" + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" } - }, - "required": [ - "mmec", - "mtmsi" - ], - "type": "object", - "x-etsi-mec-cardinality": "Structure (inlined)", - "x-etsi-mec-origin-type": "Structure (inlined)" - } - }, - "required": [ - "tempUeId", - "associateId", - "ecgi", - "s1BearerInfoDetailed" - ], - "type": "object", - "x-etsi-mec-cardinality": "Structure (inlined)", - "x-etsi-mec-origin-type": "Structure (inlined)" - }, - "timeStamp": { - "properties": { - "nanoSeconds": { - "type": "number" - }, - "seconds": { - "type": "number" + } } - }, - "required": [ - "seconds", - "nanoSeconds" - ], - "type": "object", - "x-etsi-ref": "6.5.3" + } } - }, - "required": [ - "s1UeInfo" - ], - "x-etsi-ref": "6.2.4" - } } \ No newline at end of file diff --git a/MEC012/SRV/RNIS/schemas/S1BearerNotification.schema.json b/MEC012/SRV/RNIS/schemas/S1BearerNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..91009d3974fc5e0af4daf2c93c66ba5296f612a7 --- /dev/null +++ b/MEC012/SRV/RNIS/schemas/S1BearerNotification.schema.json @@ -0,0 +1,243 @@ +{ + "title": "S1BearerNotification", + "allOf": [ + { + "title": "InlineNotification", + "required": [ + "notificationType" + ], + "type": "object", + "properties": { + "notificationType": { + "type": "string" + } + }, + "discriminator": { + "propertyName": "notificationType", + "mapping": { + "CaReconfNotification": "#/components/schemas/CaReconfNotification", + "CellChangeNotification": "#/components/schemas/CellChangeNotification", + "MeasRepUeNotification": "#/components/schemas/MeasRepUeNotification", + "MeasTaNotification": "#/components/schemas/MeasTaNotification", + "NrMeasRepUeNotification": "#/components/schemas/NrMeasRepUeNotification", + "RabEstNotification": "#/components/schemas/RabEstNotification", + "RabModNotification": "#/components/schemas/RabModNotification", + "RabRelNotification": "#/components/schemas/RabRelNotification", + "S1BearerNotification": "#/components/schemas/S1BearerNotification", + "ExpiryNotification": "#/components/schemas/ExpiryNotification", + "TestNotification": "#/components/schemas/TestNotification" + } + } + }, + { + "required": [ + "s1Event", + "s1UeInfo", + "_links" + ], + "type": "object", + "properties": { + "s1Event": { + "type": "integer", + "description": "The subscribed event that triggered this notification in S1BearerSubscription.", + "contentEncoding": "int32" + }, + "s1UeInfo": { + "title": "S1UeInfo1", + "required": [ + "ecgi", + "s1BearerInfo" + ], + "type": "object", + "properties": { + "associateId": { + "type": "array", + "items": { + "title": "AssociateId", + "type": "object", + "properties": { + "type": { + "title": "Type", + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:
0 = reserved.
1 = UE_IPv4_ADDRESS.
2 = UE_IPV6_ADDRESS.
3 = NATED_IP_ADDRESS.
4 = GTP_TEID.", + "examples": [ + 0 + ] + }, + "value": { + "type": "string", + "description": "Value for the identifier." + } + } + }, + "description": "0 to N identifiers to associate the information for a specific UE or flow." + }, + "ecgi": { + "type": "array", + "items": { + "title": "Ecgi", + "required": [ + "cellId", + "plmn" + ], + "type": "object", + "properties": { + "cellId": { + "type": "string", + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3]." + }, + "plmn": { + "title": "Plmn", + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "properties": { + "mcc": { + "type": "string", + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + }, + "mnc": { + "type": "string", + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3]." + } + } + } + } + }, + "description": "E-UTRAN Cell Global Identifier." + }, + "s1BearerInfo": { + "type": "array", + "items": { + "title": "S1BearerInfo1", + "type": "object", + "required": [ + "enbInfo", + "erabId", + "sGwInfo" + ], + "properties": { + "enbInfo": { + "title": "EnbInfo", + "required": [ + "ipAddress", + "tunnelId" + ], + "type": "object", + "properties": { + "ipAddress": { + "type": "string", + "description": "eNB transport layer address of this S1 bearer." + }, + "tunnelId": { + "type": "string", + "description": "eNB GTP-U TEID of this S1 bearer." + } + }, + "description": "S1 bearer information on eNB side as defined below." + }, + "erabId": { + "type": "integer", + "description": "The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].", + "contentEncoding": "int32" + }, + "sGwInfo": { + "title": "SGwInfo", + "required": [ + "ipAddress", + "tunnelId" + ], + "type": "object", + "properties": { + "ipAddress": { + "type": "string", + "description": "SGW transport layer address of this S1 bearer." + }, + "tunnelId": { + "type": "string", + "description": "SGW GTP-U TEID of this S1 bearer." + } + }, + "description": "S1 bearer information on GW side as defined below." + } + } + }, + "description": "S1 bearer information as defined below." + }, + "tempUeId": { + "title": "TempUeId", + "required": [ + "mmec", + "mtmsi" + ], + "type": "object", + "properties": { + "mmec": { + "type": "string", + "description": "MMEC as defined in ETSI TS 136 413 [i.3]." + }, + "mtmsi": { + "type": "string", + "description": "M-TMSI as defined in ETSI TS 136 413 [i.3]." + } + }, + "description": "The temporary identifier allocated for the specific UE as defined below." + } + }, + "description": "Information on specific UE that matches the criteria in S1BearerSubscription as defined below." + }, + "timeStamp": { + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } + }, + "_links": { + "description": "Links to resources related to this notification.", + "required": [ + "subscription" + ], + "properties": { + "subscription": { + "description": "A link to the related subscription.", + "title": "LinkType", + "required": [ + "href" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + } + } + } + } + } + ] + } \ No newline at end of file