diff --git a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot index 4e36c2637427c993a44ac7e267eb48993e95fbb6..168033e8d543cae0b8b01e36c75aae15ec7d9318 100644 --- a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot @@ -1,211 +1,211 @@ -*** Settings *** -Resource environment/variables.txt -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ - -*** Test Cases *** -POST API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.1 - ... Test title: POST API version - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version - [Documentation] Test ID: 6.3.2.7.2 - ... Test title: GET API Version - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.3 - ... Test title: PUT API Version - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.4 - ... Test title: PATCH API Version - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version - Method not implemented - [Documentation] Test ID: 6.3.2.7.5 - ... Test title: DELETE API Version - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -POST API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.6 - ... Test title: POST API version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that POST method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - POST API Version - Check HTTP Response Status Code Is 405 - -GET API Version with apiMajorVerion - [Documentation] Test ID: 6.3.2.7.7 - ... Test title: GET API Version with apiMajorVerion - ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET API Version - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is ApiVersionInformation - -PUT API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.8 - ... Test title: PUT API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PUT method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PUT API Version - Check HTTP Response Status Code Is 405 - -PATCH API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.9 - ... Test title: PATCH API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that PATCH method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - PATCH API Version - Check HTTP Response Status Code Is 405 - -DELETE API Version with apiMajorVerion - Method not implemented - [Documentation] Test ID: 6.3.2.7.10 - ... Test title: DELETE API Version with apiMajorVerion - Method not implemented - ... Test objective: The objective is to test that DELETE method is not implemented - ... Pre-conditions: none - ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - DELETE API Version - Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/v1/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/v1/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/v1/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/v1/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/v1/api_version - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} +*** Settings *** +Resource environment/variables.txt +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +POST API Version - Method not implemented + [Documentation] Test ID: 6.3.3.9.1 + ... Test title: POST API version - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version + [Documentation] Test ID: 6.3.3.9.2 + ... Test title: GET API Version + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version - Method not implemented + [Documentation] Test ID: 6.3.3.9.3 + ... Test title: PUT API Version - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version - Method not implemented + [Documentation] Test ID: 6.3.3.9.4 + ... Test title: PATCH API Version - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version - Method not implemented + [Documentation] Test ID: 6.3.3.9.5 + ... Test title: DELETE API Version - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +POST API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.3.9.6 + ... Test title: POST API version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that POST method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.1 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST API Version + Check HTTP Response Status Code Is 405 + +GET API Version with apiMajorVerion + [Documentation] Test ID: 6.3.3.9.7 + ... Test title: GET API Version with apiMajorVerion + ... Test objective: The objective is to test that GET method successfully return ApiVersionInformation + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.2 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET API Version + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ApiVersionInformation + +PUT API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.3.9.8 + ... Test title: PUT API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.3 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT API Version + Check HTTP Response Status Code Is 405 + +PATCH API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.3.9.9 + ... Test title: PATCH API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.4 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH API Version + Check HTTP Response Status Code Is 405 + +DELETE API Version with apiMajorVerion - Method not implemented + [Documentation] Test ID: 6.3.3.9.10 + ... Test title: DELETE API Version with apiMajorVerion - Method not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 9.3.3.3.5 - ETSI GS NFV-SOL 013 v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE API Version + Check HTTP Response Status Code Is 405 + +*** Keywords *** +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + Should Be Equal ${response['status']} ${expected_status} + Log Status code validated + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 5c49a39fe0399ae99d1e969b69cd34f2ac770b72..b95e714b431c8390479e48af6c1980abd42d0fdf 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -1,9 +1,10 @@ *** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library JSONLibrary -Resource environment/IndividualPmJob.txt -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt # Generic Parameters +Library JSONLibrary +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library DependencyLibrary *** Test Cases *** GET individual VNF Performance Job @@ -11,7 +12,7 @@ GET individual VNF Performance Job ... Test title: Get individual VNF Performance Job ... Test objective: The objective is to test the retrieval of an individual VNF performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +26,7 @@ GET individual VNF Performance Job with invalid resource identifier ... Test title: Get individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +39,7 @@ DELETE Individual VNF Performance Job ... Test title: Delete Individual VNF Performance Job ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM @@ -51,7 +52,7 @@ DELETE Individual VNF Performance Job with invalid resource identifier ... Test title: Delete individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,47 +64,59 @@ POST Individual VNF Performance Job - Method not implemented [Documentation] Test ID: 6.3.3.2.5 ... Test title: POST Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Monitoring Job - ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Job is not created on the VNFM + ... Post-Conditions: none Send Post request for individual VNF Performance Job Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Job is not Created PUT Individual VNF Performance Job - Method not implemented [Documentation] Test ID: 6.3.3.2.6 ... Test title: PUT Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance Monitoring Job - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Job is not modified by the operation + ... Post-Conditions: none Send Put request for individual VNF Performance Job Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Job is Unmodified (Implicit) -PATCH Individual VNF Performance Job - Method not implemented +PATCH Individual VNF Performance Job [Documentation] Test ID: 6.3.3.2.7 - ... Test title: PATCH Individual VNF Performance Job - method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new VNF Performance Monitoring Job + ... Test title: PATCH Individual VNF Performance Job + ... Test objective: The objective is to test that PATCH method allows to modify an exsisting individual PM job resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Job is not modified by the operation + ... Post-Conditions: none Send Patch request for individual VNF Performance Job - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Job is Unmodified (Implicit) + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PMJobModifications +PATCH Individual VNF Performance Job - Precondition failed + [Documentation] Test ID: 6.3.3.2.8 + ... Test title: PATCH Individual VNF Performance Job - Precondition failed + ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Job is not modified by the operation + Send Patch request for individual VNF Performance Job + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails + Check Postcondition VNF Performance Job is Unmodified (Implicit) + *** Keywords *** GET individual VNF Performance Job Log Trying to get a Pm Job present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -111,7 +124,7 @@ GET individual VNF Performance Job with invalid resource identifier Log Trying to perform a negative get, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${erroneousPmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -119,7 +132,7 @@ Send Delete request for individual VNF Performance Job Log Trying to delete an existing PM Job Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -127,7 +140,7 @@ Send Delete request for individual VNF Performance Job with invalid resource ide Log Trying to perform a negative delete, using erroneous PM Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${erroneousPmJobId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${erroneousPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -135,7 +148,7 @@ Send Post request for individual VNF Performance Job Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${newPmJobId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${newPmJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -143,30 +156,22 @@ Send Put request for individual VNF Performance Job Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch request for individual VNF Performance Job - Log Trying to perform a PATCH (method should not be implemented) - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${body}= Get File jsons/PMJobModification.json + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} -Check Postcondition VNF Performance Job is not Created - Log Trying to get a new Pm Job - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${newPmJobId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - Check Postcondition VNF Performance Job is Unmodified (Implicit) Log Check Postcondition VNF PM job is not modified GET individual VNF Performance Job diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index 1148dffdc73e4b5149c6cc4c6ba01df59f0694ff..89ad7952dd382cc4acd23fcd951981b0fb15d9a5 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -1,7 +1,6 @@ *** Settings *** Library JSONSchemaLibrary schemas/ Resource environment/variables.txt # Generic Parameters -Resource environment/reports.txt Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false @@ -11,7 +10,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,64 +23,61 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual VNF performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none Get Individual Performance Report with invalid resource endpoint Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual Performance Report - Method not implemented [Documentation] Test ID: 6.3.3.3.3 ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF performance report within a monitoring job - ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not created on the VNFM + ... Post-Conditions: none Send Post request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report is not Created PUT Individual Performance Report - Method not implemented [Documentation] Test ID: 6.3.3.3.4 ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF performance report within a monitoring job - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not modified by the operation + ... Post-Conditions: none Send Put request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report is Unmodified (Implicit) PATCH Individual Performance Report - Method not implemented [Documentation] Test ID: 6.3.3.3.5 ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF performance report within a monitoring job - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not modified by the operation + ... Post-Conditions: none Send Patch request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report is Unmodified (Implicit) DELETE Individual Performance Report - Method not implemented [Documentation] Test ID: 6.3.3.3.6 ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF performance report within a monitoring job - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance report is not deleted by the operation + ... Post-Conditions: none Send Delete request for Individual Performance Report Check HTTP Response Status Code Is 405 - Check Postcondition VNF Individual Performance Report Exists *** Keywords *** Get Individual Performance Report @@ -113,7 +109,7 @@ Send Put request for Individual Performance Report GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -123,7 +119,7 @@ Send Patch request for Individual Performance Report GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${reportId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -145,14 +141,6 @@ Check Postcondition VNF Individual Performance Report is not Created GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}/reports/${newReportId} ${output}= Output response Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 - -Check Postcondition VNF Individual Performance Report is Unmodified (Implicit) - Log Check Postcondition VNF PM job is not modified - Get Individual Performance Report - Log Check Response matches original VNF report - ${report}= evaluate json.loads('''${response['body']}''') json - Should Be Equal ${origResponse['body']['entries'][0]['objectInstanceId']} ${report['entries'][0]['objectInstanceId']} Check HTTP Response Status Code Is [Arguments] ${expected_status} diff --git a/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot b/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot deleted file mode 100644 index 39acdca29ea3f3c9803b19fa9e65e96589e80167..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/IndividualSubscription.robot +++ /dev/null @@ -1,99 +0,0 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource environment/individualSubscription.txt -Resource VNFPerformanceManagementKeywords.robot - -*** Test Cases *** -GET Individual VNF Performance Subscription - [Documentation] Test ID: 6.3.3.7.1 - ... Test title: GET Individual VNF Performance Subscription - ... Test objective: The objective is to test the retrieval of individual VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get Individual VNF Performance Subscription - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body Subscription Identifier matches the requested Subscription - -GET Individual VNF Performance Subscription with invalid resource identifier - [Documentation] Test ID: 6.3.3.7.2 - ... Test title: GET Individual VNF Performance Subscription with invalid resource identifier - ... Test objective: The objective is to test that the retrieval of an individual VNF performance subscription fails when using an invalid resource identifier - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - GET individual VNF Performance Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -DELETE Individual VNF Performance Subscription - [Documentation] Test ID: 6.3.3.7.3 - ... Test title: DELETE Individual VNF Performance Subscription - ... Test objective: The objective is to test the deletion of an individual VNF performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance Subscription is not available anymore in the VNFM - Send Delete request for individual VNF Performance Subscription - Check HTTP Response Status Code Is 204 - Check Postcondition VNF Performance Subscription is Deleted - -DELETE Individual VNF Performance Subscription with invalid resource identifier - [Documentation] Test ID: 6.3.3.7.4 - ... Test title: DELETE Individual VNF Performance Subscription with invalid resource identifier - ... Test objective: The objective is to test that the deletion of an individual VNF performance subscription fails when using an invalid resource identifier - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Delete request for individual VNF Performance Subscription with invalid resource identifier - Check HTTP Response Status Code Is 404 - -POST Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 6.3.3.7.5 - ... Test title: POST Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Subscription - ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance Subscription is not created on the VNFM - Send Post request for individual VNF Performance Subscription - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is not Created - -PUT Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 6.3.3.7.6 - ... Test title: PUT Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance subscription is not modified by the operation - Send Put request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is Unmodified (Implicit) - -PATCH Individual VNF Performance Subscription - Method not implemented - [Documentation] Test ID: 6.3.3.7.7 - ... Test title: PATCH Individual VNF Performance Subscription - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance subscription - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF Performance subscription is not modified by the operation - Send Patch request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscription is Unmodified (Implicit) \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 9df58168bcd6b0bf3a2fed34acfd4d8f6a3318f8..1a29cd867ef2b05f285bb402f8c1185ed330d6a7 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -4,7 +4,6 @@ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library OperatingSystem -Resource environment/individualThresholds.txt *** Test Cases *** GET Individual Threshold @@ -12,7 +11,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,19 +25,20 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance threshold fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none GET individual VNF Performance Threshold with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails DELETE Individual Threshold [Documentation] Test ID: 6.3.3.5.3 ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not available anymore in the VNFM @@ -51,50 +51,63 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none Send Delete request for individual VNF Performance Threshold with invalid resource identifier Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails POST Individual Threshold - Method not implemented [Documentation] Test ID: 6.3.3.5.5 ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Threshold - ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not created on the VNFM Send Post request for individual VNF Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Threshold is not Created PUT Individual Threshold - Method not implemented [Documentation] Test ID: 6.3.3.5.6 ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance threshold - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF Performance Threshold is not modified by the operation + ... Post-Conditions: none Send Put request for individual VNF Performance Threshold Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Threshold is Unmodified (Implicit) -PATCH Individual Threshold - Method not implemented +PATCH Individual Threshold [Documentation] Test ID: 6.3.3.5.7 - ... Test title: PATCH Individual Threshold - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF Performance threshold + ... Test title: PATCH Individual Threshold + ... Test objective: The objective is to test that PATCH method allows to modify an Individual threshold resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not modified by the operation Send Patch request for individual VNF Performance Threshold - Check HTTP Response Status Code Is 405 + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ThresholdModifications + +PATCH Individual Threshold - Precondition failed + [Documentation] Test ID: 6.3.3.5.8 + ... Test title: PATCH Individual Threshold - Preconition failed + ... Test objective: The objective is to attempt to modify an individual threshold resource, where the precondition was not met. + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Job is not modified by the operation + Send Patch request for individual VNF Performance Threshold + Check HTTP Response Status Code Is 412 + Check HTTP Response Body Json Schema Is ProblemDetails Check Postcondition VNF Performance Threshold is Unmodified (Implicit) *** Keywords *** @@ -142,7 +155,7 @@ Send Put request for individual VNF Performance Threshold GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds/${thresholdId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -164,15 +177,6 @@ Check Postcondition VNF Performance Threshold is Unmodified (Implicit) ${threshold}= evaluate json.loads('''${response['body']}''') json Should Be Equal ${origresponse['body']['id']} ${threshold.id} Should Be Equal ${origresponse['body']['criteria']} ${threshold.criteria} - -Check Postcondition VNF Performance Threshold is not Created - Log Trying to get a new Threshold - Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${newThresholdId} - ${output}= Output response - Set Suite Variable ${response} ${output} - Check HTTP Response Status Code Is 404 Check Postcondition VNF Performance Threshold is Deleted Log Check Postcondition Threshold is deleted diff --git a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot new file mode 100644 index 0000000000000000000000000000000000000000..ed697e43e5766b032e9deae17189adddd2ebeb26 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot @@ -0,0 +1,71 @@ +*** Settings *** +Library JSONSchemaLibrary schemas/ +Resource environment/variables.txt +Library JSONLibrary +Library OperatingSystem +Library String +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Suite Setup Check resource existence and get CallbackUri + +*** Test Cases *** +VNF Performance Information Availability Notification + [Documentation] Test ID: 6.3.3.10.1 + ... Test title: VNF Performance Information Availability Notification + ... Test objective: The objective is to test that VNF Performance Information Availability Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF Performance Information Availability Notification + Check HTTP Response Status Code Is 204 + +VNF Threshold Crossed Notification + [Documentation] Test ID: 6.3.3.10.2 + ... Test title: VNF Threshold Crossed Notification + ... Test objective: The objective is to test that VNF Threshold Crossed Notification is delivered with success to the notification consumer + ... Pre-conditions: A VNF performance job is created, and a subscription for Threshold Crossed Notification is available in the VNFM. + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Post VNF Threshold Crossed Notification + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} + Integer response status 200 + Validate Json response body PmJob.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Check HTTP Response Status Code Is + [Arguments] ${expected_status} + ${status}= Convert To Integer ${expected_status} + Should Be Equal ${response['status']} ${status} + Log Status code validated + +Post VNF Performance Information Availability Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/PerformanceInformationAvaliableNotification.json + ${body}= Format String ${template} objectInstanceId=${objectInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post VNF Threshold Crossed Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + ${template} = Get File jsons/ThresholdCrossedNotification.json + ${body}= Format String ${template} thresholdId=${thresholdId} objectInstanceId=${objectInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 577623b1567b0894a798f15b31b59d3d22c15841..160d126427f6888df05b0e05783fd2d9133eeb12 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -4,7 +4,6 @@ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library OperatingSystem Library String -Resource environment/pmJobs.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false *** Test Cases *** @@ -13,21 +12,20 @@ GET all VNF Performance Monitoring Jobs ... Test title: GET all VNF Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none GET all VNF Performance Monitoring Jobs Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PmJobs - Check HTTP Response Body Does Not Contain reports GET VNF Performance Monitoring Jobs with attribute-based filter [Documentation] Test ID: 6.3.3.1.2 ... Test title: GET all VNF Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +39,7 @@ GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued all_fileds selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +53,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -69,7 +67,7 @@ GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -83,7 +81,7 @@ GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -97,7 +95,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -110,7 +108,7 @@ GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test title: GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -123,7 +121,7 @@ Create new VNF Performance Monitoring Job ... Test title: Create a new VNF Performance Monitoring Job ... Test objective: The objective is to test the creation of a new VNF performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM @@ -136,20 +134,20 @@ PUT all VNF Performance Monitoring Jobs - Method not implemented [Documentation] Test ID: 6.3.3.1.10 ... Test title: PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Monitoring Jobs - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none Send PUT Request for all VNF Performance Monitoring Jobs Check HTTP Response Status Code Is 405 -PATCH all VNF Performance Monitoring Jobs - (Method not implemented) +PATCH all VNF Performance Monitoring Jobs - Method not implemented [Documentation] Test ID: 6.3.3.1.11 ... Test title: PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF Performance Monitoring Jobs - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -160,34 +158,33 @@ DELETE all VNF Performance Monitoring Jobs - Method not implemented [Documentation] Test ID: 6.3.3.1.12 ... Test title: DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Monitoring Jobs - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none Send PATCH Request for all VNF Performance Monitoring Jobs Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Monitoring Jobs Exist GET VNF Performance Monitoring Jobs to get Paged Response [Documentation] Test ID: 6.3.3.1.13 ... Test title: GET VNF Performance Monitoring Jobs to get Paged Response ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs to get Paged response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none GET all VNF Performance Monitoring Jobs Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET VNF Performance Monitoring Jobs for Bad Request Response too big [Documentation] Test ID: 6.3.3.1.14 ... Test title: GET VNF Performance Monitoring Jobs for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about VNF Performance Monitoring when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -195,13 +192,24 @@ GET VNF Performance Monitoring Jobs for Bad Request Response too big Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails - +GET all VNF Performance Monitoring Jobs with exclude_default and fields attribute selector + [Documentation] Test ID: 6.3.3.1.15 + ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default and fields attribute selector + ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs with exclude_default and fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF Performance Monitoring Jobs with exclude_default and fields attribute selector + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJobs *** Keywords *** GET all VNF Performance Monitoring Jobs Log Trying to get all PM Jobs present in the VNFM Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -209,7 +217,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?${POS_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -217,7 +225,7 @@ GET VNF Performance Monitoring Jobs with all_fields attribute selector Log Trying to get all PM Jobs present in the VNFM, using 'all_fields' filter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?all_fields + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -225,7 +233,7 @@ GET VNF Performance Monitoring Jobs with exclude_default attribute selector Log Trying to get all VNF Packages present in the VNFM, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?exclude_default + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -234,7 +242,15 @@ GET VNF Performance Monitoring Jobs with fields attribute selector Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} + ${output}= Output response + Set Suite Variable ${response} ${output} + +GET VNF Performance Monitoring Jobs with exclude_default and fields attribute selector + Log Trying to get all VNF Packages present in the VNFM, using filter params + Set Headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields}&exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -243,7 +259,7 @@ GET VNF Performance Monitoring Jobs with exclude_fields attribute selector Pass Execution If ${FIELD_USAGE} == 0 Skipping test as VNFM is not supporting 'fields' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -251,7 +267,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter Log Trying to get all PM Jobs present in the VNFM, using an erroneous filter param Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?${NEG_FILTER} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -259,7 +275,7 @@ GET VNF Performance Monitoring Jobs with invalid resource endpoint Log Trying to perform a GET on a erroneous URI Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -268,8 +284,9 @@ Send Post Request Create new VNF Performance Monitoring Job Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${body}= Get File jsons/CreatePmJobRequest.json - POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs ${body} + ${template}= Get File jsons/CreatePmJobRequest.json + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -277,7 +294,7 @@ Send PUT Request for all VNF Performance Monitoring Jobs Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -285,7 +302,7 @@ Send PATCH Request for all VNF Performance Monitoring Jobs Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} @@ -293,19 +310,15 @@ Send DELETE Request for all VNF Performance Monitoring Jobs Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition VNF Performance Monitoring Jobs Exist - Log Checking that Pm Job still exists - GET all VNF Performance Monitoring Jobs Check Postcondition PmJob Exists Log Checking that Pm Job exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -354,12 +367,6 @@ Check HTTP Response Body Matches filter Log Checking that attribute-based filter is matched @{words} = Split String ${POS_FILTER} ,${SEPERATOR} Should Be Equal As Strings ${response['body'][0]['objectInstanceIds']} @{words}[1] - -Check HTTP Response Body Does Not Contain reports - Log Checking that field element is missing - ${reports}= Get Value From Json ${response['body']} $..reports - Should Be Empty ${reports} - Log Reports element is empty as expected Check HTTP Response Status Code Is [Arguments] ${expected_status} @@ -382,8 +389,6 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} - - + Should Not Be Empty ${linkURL} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/Subscriptions.robot b/SOL002/VNFPerformanceManagement-API/Subscriptions.robot deleted file mode 100644 index 11c7f53ada2f498c652459316d006e39ffade5ca..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/Subscriptions.robot +++ /dev/null @@ -1,176 +0,0 @@ -*** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Resource VNFPerformanceManagementKeywords.robot -Resource environment/subscriptions.txt -Library MockServerLibrary -Library Process -Suite Setup Create Sessions -Suite Teardown Terminate All Processes kill=true - -*** Test Cases *** -GET all VNF Performance Subscriptions - [Documentation] Test ID: 6.3.3.6.1 - ... Test title: GET all VNF Performance Subscriptions - ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions and perform a JSON schema validation of the returned subscriptions data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get all VNF Performance Subscriptions - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscriptions - -GET VNF Performance Subscriptions with attribute-based filter - [Documentation] Test ID: 6.3.3.6.2 - ... Test title: GET VNF Performance Subscriptions with attribute-based filter - ... Test objective: The objective is to test the retrieval of VNF performance subscriptions using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with attribute-based filters - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is PmSubscriptions - Check HTTP Response Body Subscriptions Match the requested Attribute-Based Filter - -GET VNF Performance Management Subscriptions with invalid attribute-based filter - [Documentation] Test ID: 6.3.3.6.3 - ... Test title: GET VNF Performance Management Subscriptions with invalid attribute-based filter - ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid attribute-based filters - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails - -GET VNF Performance Subscriptions with invalid resource endpoint - [Documentation] Test ID: 6.3.3.6.4 - ... Test title: GET VNF Performance Subscriptions with invalid resource endpoint - ... Test objective: The objective is to test that the retrieval of all VNF performance subscriptions fails when using invalid resource endpoint. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid resource endpoint - Check HTTP Response Status Code Is 404 - -Create new VNF Performance subscription - [Documentation] Test ID: 6.3.3.6.5 - ... Test title: Create new VNF Performance subscription - ... Test objective: The objective is to test the creation of a new VNF performance subscription and perform a JSON schema and content validation of the returned subscription data structure - ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF performance subscription is successfully set and it matches the issued subscription - Send Post Request for VNF Performance Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Check Postcondition VNF Performance Subscription Is Set - - -Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions - [Tags] no-duplicated-subs - [Documentation] Test ID: 6.3.3.6.6 - ... Test title: Create duplicated VNF Performance subscription with VNFM not creating duplicated subscriptions - ... Test objective: The objective is to test the attempt of a creation of a duplicated VNF performance subscription and check that no new subscription is created by the VNFM and a link to the original subscription is returned - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: The VNFM does not support the creation of duplicated subscriptions - ... Post-Conditions: The existing VNF performance subscription returned is available in the VNFM - Send Post Request for Duplicated VNF Performance Subscription - Check HTTP Response Status Code Is 303 - Check HTTP Response Body Is Empty - Check HTTP Response Header Contains Location - Check Postcondition Subscription Resource Returned in Location Header Is Available - -Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions - [Tags] duplicated-subs - [Documentation] Test ID: 6.3.3.6.7 - ... Test title: Create duplicated VNF Performance subscription with VNFM creating duplicated subscriptions - ... Test objective: The objective is to test the creation of a duplicated VNF performance subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: The VNFM supports the creation of duplicated subscriptions - ... Post-Conditions: The duplicated VNF performance subscription is successfully set and it matches the issued subscription - Send Post Request for Duplicated VNF Performance Subscription - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is PmSubscription - Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subscription - Check Postcondition VNF Performance Subscription Is Set - -PUT VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 6.3.3.6.8 - ... Test title: PUT VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that PUT method is not allowed to modify VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Put Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - -PATCH VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 6.3.3.6.9 - ... Test title: PATCH VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that PATCH method is not allowed to update VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Send Patch Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - -DELETE VNF Performance Subscriptions - Method not implemented - [Documentation] Test ID: 6.3.3.6.10 - ... Test title: DELETE VNF Performance Subscriptions - Method not implemented - ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF performance subscriptions - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: The VNF performance subscriptions are not deleted by the failed operation - Send Delete Request for VNF Performance Subscriptions - Check HTTP Response Status Code Is 405 - Check Postcondition VNF Performance Subscriptions Exists - -GET VNF Performance Subscriptions to get Paged Response - [Documentation] Test ID: 6.3.3.6.11 - ... Test title: GET VNF Performance Subscriptions to get Paged Response - ... Test objective: The objective is to test the retrieval of all VNF performance subscriptions to get Paged Response - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get all VNF Performance Subscriptions - Check HTTP Response Status Code Is 200 - Check LINK in Header - -GET VNF Performance Management Subscriptions for Bad Request Response too big - [Documentation] Test ID: 6.3.3.6.12 - ... Test title: GET VNF Performance Management Subscriptions for Bad Request Response too big - ... Test objective: The objective is to test that the retrieval of VNF performance subscriptions fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. - ... Pre-conditions: A VNF instance is instantiated. At least one VNF performance subscription is available in the VNFM. - ... Reference: Clause 6.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 - ... Config ID: Config_prod_VNFM - ... Applicability: none - ... Post-Conditions: none - Get VNF Performance Subscriptions with invalid attribute-based filters - Check HTTP Response Status Code Is 400 - Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index bcb6017f300be824c4103a1d8aa5737cd3ba3fe6..e2618357ba10f91ae328858cae6af1ab006e6180 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -4,7 +4,6 @@ Resource environment/variables.txt # Generic Parameters Library JSONLibrary Library String Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false -Resource environment/thresholds.txt Library OperatingSystem *** Test Cases *** @@ -13,7 +12,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +25,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,19 +39,20 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none GET Performance Thresholds with invalid attribute-based filter Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails GET Performance Thresholds with invalid resource endpoint [Documentation] Test ID: 6.3.3.4.4 ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ Create new Performance Threshold ... Test title: Create new Performance Threshold ... Test objective: The objective is to test the creation of a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM @@ -79,8 +79,8 @@ PUT Performance Thresholds - Method not implemented [Documentation] Test ID: 6.3.3.4.6 ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Thresholds - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNF. - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -91,8 +91,8 @@ PATCH Performance Thresholds - Method not implemented [Documentation] Test ID: 6.3.3.4.7 ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify VNF Performance Thresholds - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -103,34 +103,33 @@ DELETE Performance Thresholds - Method not implemented [Documentation] Test ID: 6.3.3.4.8 ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Thresholds - ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Pre-conditions: none + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none - ... Post-Conditions: The VNF performance thresholds are not deleted by the failed operation + ... Post-Conditions: none Send DELETE Request for all Performance Thresholds Check HTTP Response Status Code Is 405 - Check Postcondition Thresholds Exist GET Performance Thresholds with Paged Response [Documentation] Test ID: 6.3.3.4.9 ... Test title: GET Performance Thresholds with Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds with Paged response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none GET all Performance Thresholds Check HTTP Response Status Code Is 200 - Check LINK in Header + Check HTTP Response Header Contain Link GET Performance Thresholds for Bad Request Response too big [Documentation] Test ID: 6.3.3.4.10 ... Test title: GET Performance Thresholds for Bad Request Response too big ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -176,8 +175,9 @@ Send Post Request Create new Performance Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - ${request}= Get File jsons/CreateThresholdRequest.json - POST ${apiRoot}/${apiName}/${apiVersion}/thresholds ${request} + ${template}= Get File jsons/CreateThresholdRequest.json + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -186,7 +186,7 @@ Send PUT Request for all Performance Thresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/thresholds + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -195,7 +195,7 @@ Send PATCH Request for all Performance Thresholds Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/thresholds + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -205,16 +205,12 @@ Send DELETE Request for all Performance Thresholds DELETE ${apiRoot}/${apiName}/${apiVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} - -Check Postcondition Thresholds Exist - Log Checking that Thresholds still exists - GET all Performance Thresholds Check Postcondition Threshold Exists Log Checking that Threshold exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/thresholds/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -242,7 +238,7 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response['body']} Log Json Schema Validation OK -Check LINK in Header +Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index 4599d7620ba0773efc88cec071187f22931826a2..564519f560cad1d79730a3685c5c54251befd1cb 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -1,7 +1,7 @@ *** Settings *** +Library String Resource environment/variables.txt -Resource environment/subscriptions.txt -Resource environment/individualSubscription.txt + Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false Library MockServerLibrary Library OperatingSystem @@ -12,6 +12,7 @@ Library JSONSchemaLibrary schemas/ Library Process *** Keywords *** + Get all VNF Performance Subscriptions [Documentation] The client can use this method to query the list of active subscriptions to Performance management notifications ... subscribed by the client. @@ -105,7 +106,7 @@ Send Post Request for VNF Performance Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${VNFM_CHECKS_NOTIF_ENDPOINT} == 1 @@ -136,7 +137,7 @@ Send Post Request for Duplicated VNF Performance Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body_request}= Get File jsons/subscriptions.json - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body_request} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body_request} ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 303 @@ -156,7 +157,7 @@ Send Put Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 4.3.5.4. Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 405 @@ -166,7 +167,7 @@ Send Patch Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 4.3.5.4. Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 405 @@ -176,7 +177,7 @@ Send Delete Request for VNF Performance Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the VNFM shall return a "405 Method ... Not Allowed" response as defined in Clause 4.3.5.4. Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} # Integer response status 405 @@ -185,52 +186,52 @@ Send Delete Request for VNF Performance Subscriptions Get Individual VNF Performance Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} GET individual VNF Performance Subscription with invalid resource identifier Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual VNF Performance Subscription Set headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual VNF Performance Subscription with invalid resource identifier Log Trying to delete a subscription in the VNFM with invalid id Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${erroneousSubscriptionId} + DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual VNF Performance Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for individual VNF Performance Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch request for individual VNF Performance Threshold Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscriptionId} + PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -246,7 +247,7 @@ Check Postcondition VNF Performance Subscription is not Created Log Trying to get a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${newSubscriptionId} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 @@ -294,7 +295,7 @@ Check HTTP Response Body PmSubscription Attributes Values Match the Issued Subsc Check Postcondition VNF Performance Subscription Is Set Log Check Postcondition subscription exist Set Headers {"Accept": "${ACCEPT_JSON}"} - GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${response['body']['id']} + GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 diff --git a/SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt b/SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt deleted file mode 100644 index 3fc3b0a0d34511aefb0fbcee8253825cc63f638a..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e -${erroneousPmJobId} erroneousPmJobId -${newPmJobId} newPmJobId -${response}= httpresponse -${OrigResponse}= httpresponse diff --git a/SOL002/VNFPerformanceManagement-API/environment/individualSubscription.txt b/SOL002/VNFPerformanceManagement-API/environment/individualSubscription.txt deleted file mode 100644 index 921749ffd1726c7f1581a28b0b27bb85cf06c63e..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/individualSubscription.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa -${erroneousSubscriptionId} erroneousSubscriptionId -${newSubscriptionId} newSubsciptionId -${response} httpresponse -${origResponse} httpresponse \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/environment/individualThresholds.txt b/SOL002/VNFPerformanceManagement-API/environment/individualThresholds.txt deleted file mode 100644 index 1efba79c6e00a105cad4aadd6afad956a538aece..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/individualThresholds.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${thresholdId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${erroneousThresholdId} erroneousThresholdId -${newThresholdId} newThresholdId -${response}= httpresponse -${origResponse}= httpresponse \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt b/SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt deleted file mode 100644 index f1675679ea49b7e4deb60fa76129a081f6390f25..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/pmJobs.txt +++ /dev/null @@ -1,6 +0,0 @@ -*** Variables *** -${POS_FILTER} objectInstanceIds=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${NEG_FILTER} criteriaPmJob=erroneousAttributeName -${fields} criteria,reports -${response}= httpresponse -${SEPERATOR} = \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/environment/reports.txt b/SOL002/VNFPerformanceManagement-API/environment/reports.txt deleted file mode 100644 index 6ac5f7c0b020825db1e44161c95118d9b08b5dbd..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/reports.txt +++ /dev/null @@ -1,7 +0,0 @@ -*** Variables *** -${pmJobId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 -${erroneousReportId} erroneousReportId -${newReportId} newReportId -${response}= httpresponse -${OrigResponse}= httpresponse diff --git a/SOL002/VNFPerformanceManagement-API/environment/subscriptions.txt b/SOL002/VNFPerformanceManagement-API/environment/subscriptions.txt deleted file mode 100644 index c490457435c0921e84a9db9f27ceab2a016c3a82..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/subscriptions.txt +++ /dev/null @@ -1,8 +0,0 @@ -*** Variables *** -${callbackUri_Sub} http://172.22.1.7:9091/vnfpm/subscriptions -${filter_ok} callbackUri=${callbackUri_Sub} -${filter_ko} erroneousFilter=erroneous -${total_polling_time} 2 min -${polling_interval} 10 sec -${response} httpresponse - diff --git a/SOL002/VNFPerformanceManagement-API/environment/thresholds.txt b/SOL002/VNFPerformanceManagement-API/environment/thresholds.txt deleted file mode 100644 index b044c053e51e52eb43e06a93fedc37982fc1632c..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/environment/thresholds.txt +++ /dev/null @@ -1,5 +0,0 @@ -*** Variables *** -${FILTER_OK} objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a -${FILTER_KO} criterias=erroneousFilter -${response}= httpresponse -${SEPERATOR} = \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index 1b6fb6dbc341eed0b9e5665f7e3a669ecdb26735..b3453720a67c52a6a040ae8c4813cfe969a079cc 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -4,7 +4,7 @@ ${VNFM_PORT} 8080 # Listening port of the VNFM ${VNFM_SCHEMA} https ${apiRoot} / -${apiVersion} v1 +${apiMajorVersion} v2 ${apiName} vnfpm @@ -23,4 +23,46 @@ ${callback_endpoint_error} /endpoint_404 ${sleep_interval} 20s ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar -${response} http-response \ No newline at end of file +${response} http-response + +${objectInstanceIds} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a + +${subscribe} /subscribe + + + +${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e +${erroneousPmJobId} erroneousPmJobId +${newPmJobId} newPmJobId +${OrigResponse}= httpresponse + +${thresholdId} 1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${erroneousThresholdId} erroneousThresholdId +${newThresholdId} newThresholdId + +${POS_FILTER} objectInstanceIds=${objectInstanceIds} +${NEG_FILTER} criteriaPmJob=erroneousAttributeName +${fields} criteria,reports +${SEPERATOR} = + +${reportId} 0fb4c875-e07f-46ca-a9dd-13907667a568 +${erroneousReportId} erroneousReportId +${newReportId} newReportId + + +${FILTER_OK} objectInstanceId=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a +${FILTER_KO} criterias=erroneousFilter + +${subscriptionId} 17563e75-0e14-4bd7-94b4-6bbb869c79aa +${erroneousSubscriptionId} erroneousSubscriptionId +${newSubscriptionId} newSubsciptionId + +${callbackUri_Sub} http://172.22.1.7:9091/vnfpm/subscriptions +${filter_ok} callbackUri=${callbackUri_Sub} +${filter_ko} erroneousFilter=erroneous +${total_polling_time} 2 min +${polling_interval} 10 sec + +${callbackResp} localhost + +${objectInstanceId} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json index 6a21ba34fa05dab0a8d3011fe1130d7492998ab8..587c3fba7a90c832d6dc62fca2c2407108b02fcb 100644 --- a/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json +++ b/SOL002/VNFPerformanceManagement-API/jsons/CreatePmJobRequest.json @@ -1,9 +1,10 @@ -{ - "objectInstanceIds" : ["1f50d68b-82e8-4deb-bd40-c934d4d1ac0a"], - "criteria" : { +{{ + "objectInstanceIds" : ["{objectInstanceIds}"], + "criteria" : {{ "performanceMetric": [], "performanceMetricGroup": [], "collectionPeriod": 10, "reportingPeriod": 30 - } -} \ No newline at end of file + }}, + "callbackuri": "{callback_uri}" +}} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json b/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json index 1e58c2bac513f36d37597e8f11bbe06d68b664cc..9f7640468d28840400225ce13e6c2525cb09dd48 100644 --- a/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json +++ b/SOL002/VNFPerformanceManagement-API/jsons/CreateThresholdRequest.json @@ -1,12 +1,13 @@ -{ - "objectInstanceIds" : "1f50d68b-82e8-4deb-bd40-c934d4d1ac0a", - "criteria" : { +{{ + "objectInstanceIds" : "{objectInstanceIds}", + "criteria" : {{ "performanceMetric": "cpu_util", "thresholdType": "SIMPLE", - "simpleThresholdDetails": { + "simpleThresholdDetails": {{ "thresholdValue": 10, "hysteresis": 50 - } + }} - } -} \ No newline at end of file + }}, + "callbackuri": "{callback_uri}" +}} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json b/SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json new file mode 100644 index 0000000000000000000000000000000000000000..3aeb5f91c199064546693cd63b88c434584c3d92 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/jsons/PMJobModification.json @@ -0,0 +1,3 @@ +{ + "callbackUri":"127.0.0.1" +} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json b/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..5ac84f0a452c13051b8c18fbbd8942876ee6e315 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json @@ -0,0 +1,12 @@ +{{ + "id":"", + "notificationType":"PerformanceInformationAvailableNotification", + "timeStamp":"", + "objectType":"", + "objectInstanceId":"{objectInstanceId}", + "_links":{{ + "objectInstance":"", + "pmJob":"", + "performanceReport":"" + }} +}} diff --git a/SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json b/SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..cb963a1011d257c4741ed9d2f84e136ad14ef9d4 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json @@ -0,0 +1,15 @@ +{{ + "id":"", + "notificationType":"ThresholdCrossedNotification", + "timeStamp":"", + "thresholdId":"{thresholdId}", + "crossingDirection":"UP", + "objectType":"", + "objectInstanceId":"{objectInstanceId}", + "performanceMetric":"", + "performanceValue":"", + "_links":{{ + "objectInstance":"", + "threshold":"" + }} +}} diff --git a/SOL002/VNFPerformanceManagement-API/jsons/ThresholdModification.json b/SOL002/VNFPerformanceManagement-API/jsons/ThresholdModification.json new file mode 100644 index 0000000000000000000000000000000000000000..3aeb5f91c199064546693cd63b88c434584c3d92 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/jsons/ThresholdModification.json @@ -0,0 +1,3 @@ +{ + "callbackUri":"127.0.0.1" +} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json b/SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json deleted file mode 100644 index 3fcc4e59bcbcc09b0e5355a1557d439378f1520b..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/jsons/subscriptions.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "callbackUri": "http://127.0.0.1/subscribe", - "filter": { - "notificationTypes": ["ThresholdCrossedNotification"] - } -} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PMJobModifications.json b/SOL002/VNFPerformanceManagement-API/schemas/PMJobModifications.json new file mode 100644 index 0000000000000000000000000000000000000000..7a09620564f077ebb19981dd44bb3d3df07aa67c --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/schemas/PMJobModifications.json @@ -0,0 +1,62 @@ + { + "description": "This type represents modifications to a PM job. It shall comply with the provisions defined in table 6.5.2.12-1.\n", + "type": "object", + "properties": { + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmSubscription.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmSubscription.schema.json deleted file mode 100644 index c9ad051300e0cec9e32546538ee611baba45e53e..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmSubscription.schema.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "description": "This type represents a subscription.\n", - "type": "object", - "required": [ - "id", - "callbackUri", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "filter": { - "description": "This type represents a filter that can be used to subscribe for notifications related to performance management events.\n", - "type": "object", - "properties": { - "vnfInstanceSubscriptionFilter": { - "description": "This type represents subscription filter criteria to match VNF instances.\n", - "type": "object", - "properties": { - "vnfdIds": { - "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "vnfProductsFromProviders": { - "description": "If present, match VNF instances that belong to VNF products from certain providers. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfProvider" - ], - "properties": { - "vnfProvider": { - "description": "Name of the VNF provider to match.\n", - "type": "string" - }, - "vnfProducts": { - "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfProductName" - ], - "properties": { - "vnfProductName": { - "description": "Name of the VNF product to match.\n", - "type": "string" - }, - "versions": { - "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfSoftwareVersion" - ], - "properties": { - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersions": { - "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n", - "type": "array", - "items": { - "description": "A version.\n", - "type": "string" - } - } - } - } - } - } - } - } - } - } - }, - "vnfInstanceIds": { - "description": "If present, match VNF instances with an instance identifier listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "vnfInstanceNames": { - "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "notificationTypes": { - "description": "Match particular notification types. Permitted values: * ThresholdCrossedNotification * PerformanceInformationAvailableNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n", - "type": "string", - "enum": [ - "ThresholdCrossedNotification", - "PerformanceInformationAvailableNotification" - ] - } - } - }, - "callbackUri": { - "description": "The URI of the endpoint to send the notification to.\n", - "type": "string", - "format": "url" - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "URI of the referenced resource.\n", - "type": "string", - "format": "url" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmSubscriptions.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmSubscriptions.schema.json deleted file mode 100644 index fefb142da9f905120ff32246f73e6b88062978d5..0000000000000000000000000000000000000000 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmSubscriptions.schema.json +++ /dev/null @@ -1 +0,0 @@ -{ "type": "array", "items": { "description": "This type represents a subscription.\n", "type": "object", "required": [ "id", "callbackUri", "_links" ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "filter": { "description": "This type represents a filter that can be used to subscribe for notifications related to performance management events.\n", "type": "object", "properties": { "vnfInstanceSubscriptionFilter": { "description": "This type represents subscription filter criteria to match VNF instances.\n", "type": "object", "properties": { "vnfdIds": { "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" } }, "vnfProductsFromProviders": { "description": "If present, match VNF instances that belong to VNF products from certain providers. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", "type": "array", "items": { "type": "object", "required": [ "vnfProvider" ], "properties": { "vnfProvider": { "description": "Name of the VNF provider to match.\n", "type": "string" }, "vnfProducts": { "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n", "type": "array", "items": { "type": "object", "required": [ "vnfProductName" ], "properties": { "vnfProductName": { "description": "Name of the VNF product to match.\n", "type": "string" }, "versions": { "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n", "type": "array", "items": { "type": "object", "required": [ "vnfSoftwareVersion" ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", "type": "string" }, "vnfdVersions": { "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n", "type": "array", "items": { "description": "A version.\n", "type": "string" } } } } } } } } } } }, "vnfInstanceIds": { "description": "If present, match VNF instances with an instance identifier listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" } }, "vnfInstanceNames": { "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", "type": "array", "items": { "type": "string" } } } }, "notificationTypes": { "description": "Match particular notification types. Permitted values: * ThresholdCrossedNotification * PerformanceInformationAvailableNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n", "type": "string", "enum": [ "ThresholdCrossedNotification", "PerformanceInformationAvailableNotification" ] } } }, "callbackUri": { "description": "The URI of the endpoint to send the notification to.\n", "type": "string", "format": "url" }, "_links": { "description": "Links to resources related to this resource.\n", "type": "object", "required": [ "self" ], "properties": { "self": { "description": "This type represents a link to a resource.\n", "type": "object", "required": [ "href" ], "properties": { "href": { "description": "URI of the referenced resource.\n", "type": "string", "format": "url" } } } } } } }} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/schemas/ThresholdModifications.json b/SOL002/VNFPerformanceManagement-API/schemas/ThresholdModifications.json new file mode 100644 index 0000000000000000000000000000000000000000..995cee3517b75439118025ed7746ffd7027989e3 --- /dev/null +++ b/SOL002/VNFPerformanceManagement-API/schemas/ThresholdModifications.json @@ -0,0 +1,62 @@ + { + "description": "This type represents modifications to a threshold. It shall comply with the provisions defined in table 6.5.2.11-1.\n", + "type": "object", + "properties": { + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "authentication": { + "type": "object", + "required": [ + "authType" + ], + "properties": { + "authType": { + "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "BASIC", + "OAUTH2_CLIENT_CREDENTIALS", + "TLS_CERT" + ] + } + }, + "paramsBasic": { + "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "userName": { + "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + }, + "password": { + "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n", + "type": "string" + } + } + }, + "paramsOauth2ClientCredentials": { + "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n", + "type": "object", + "properties": { + "clientId": { + "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "clientPassword": { + "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n", + "type": "string" + }, + "tokenEndpoint": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + } + } + } \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot b/SOL002/VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot index bc0e9702f21dbfde91c05a83e9a2f7592634b0a5..58a7d9039124a3cbf90069d244a6b298197481eb 100644 --- a/SOL002/VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot +++ b/SOL002/VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot @@ -17,7 +17,7 @@ VNF Performance Information Availability Notification ... Test title: VNF Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of VNF Performance Information Availability Notification when new VNF performance information is available in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ VNF Threshold Crossed Notification ... Test title: VNF Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of VNF Threshold Crossed Notification when a previously set VNF performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a threshold subscription is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.6.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/indexes/sol_002_index.csv b/indexes/sol_002_index.csv index 52042c494468d5cc6352be51bdad9745b6a01fb8..746258166d173d6805ff139e0f3bd912d2effba3 100644 --- a/indexes/sol_002_index.csv +++ b/indexes/sol_002_index.csv @@ -1,51 +1,49 @@ -6, Ve-Vnfm Reference Point, SOL002 -6.3.1, VNF Configuration Interface , VNFConfiguration-API -6.3.1.1, Configuration Resource Endpoint , Configuration.robot +"6, Ve-Vnfm Reference Point, SOL002 " +"6.3.1, VNF Configuration Interface , VNFConfiguration-API " +"6.3.1.1, Configuration Resource Endpoint , Configuration.robot" 6.3.1.2,API Version Resource Endpoint, ApiVersion.robot -6.3.2, VNF Indicator Interface , VNFIndicator-API -6.3.2.1, VNF Indicators Resource Endpoint , VNFIndicators.robot -6.3.2.2, VNF Indicators related to a VNF Instance Resource Endpoint , VnfIndicatorsInVnfInstanceId.robot -6.3.2.3, Individual VNF Indicator Resource Endpoit,IndividualVNFindicator.robot -6.3.2.4, Subscriptions Resource Endpoint , Subscriptions.robot -6.3.2.5, Individual Subscription Resource Endpoint , IndividualSubscription.robot -6.3.2.6, Notification Endpoint , ../VNFIndicatorNotification-API/VnfIndicatorNotification.robot +"6.3.2, VNF Indicator Interface , VNFIndicator-API" +"6.3.2.1, VNF Indicators Resource Endpoint , VNFIndicators.robot" +"6.3.2.2, VNF Indicators related to a VNF Instance Resource Endpoint , VnfIndicatorsInVnfInstanceId.robot " +"6.3.2.3, Individual VNF Indicator Resource Endpoit,IndividualVNFindicator.robot" +"6.3.2.4, Subscriptions Resource Endpoint , Subscriptions.robot" +"6.3.2.5, Individual Subscription Resource Endpoint , IndividualSubscription.robot" +"6.3.2.6, Notification Endpoint , ../VNFIndicatorNotification-API/VnfIndicatorNotification.robot" 6.3.2.7,API Version Resource Endpoint, ApiVersion.robot -6.3.3, VNF Performance Management Interface , VNFPerformanceManagement-API -6.3.3.1, PM Jobs Resource Endpoint , PMJobs.robot -6.3.3.2, Individual PM Job Resource Endpoint , IndividualPmJob.robot -6.3.3.3, Individual Performance Report Resource Endpoint , IndividualReport.robot -6.3.3.4, Thresholds Resource Endpoint , Thresholds.robot -6.3.3.5, Individual Threshold Resource Endpoint , IndividualThreshold.robot -6.3.3.6, Subscriptions Resource Endpoint , Subscriptions.robot -6.3.3.7, Individual Subscription Resource Endpoint , IndividualSubscription.robot -6.3.3.8, Notification Endpoint , ../VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot +"6.3.3, VNF Performance Management Interface , VNFPerformanceManagement-API" +"6.3.3.1, PM Jobs Resource Endpoint , PMJobs.robot " +"6.3.3.2, Individual PM Job Resource Endpoint , IndividualPmJob.robot " +"6.3.3.3, Individual Performance Report Resource Endpoint , IndividualReport.robot" +"6.3.3.4, Thresholds Resource Endpoint , Thresholds.robot" +"6.3.3.5, Individual Threshold Resource Endpoint , IndividualThreshold.robot " +"6.3.3.8, Notification Endpoint , ../VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot " 6.3.3.9,API Version Resource Endpoint, ApiVersion.robot -6.3.4, VNF Fault Management interface , VNFFaultManagement-API -6.3.4.1, Alarms , Alarms.robot -6.3.4.2, Individual Alarm , IndividualAlarm.robot -6.3.4.3, Escalate the perceived severity , EscalatePerceivedSeverityTask.robot -6.3.4.4, Subscriptions , Subscriptions.robot -6.3.4.5, Individual Subscription , IndividualSubscription.robot -6.3.4.6, Notification Endpoint , NotificationEndpoint.robot +"6.3.4, VNF Fault Management interface , VNFFaultManagement-API" +"6.3.4.1, Alarms , Alarms.robot " +"6.3.4.2, Individual Alarm , IndividualAlarm.robot" +"6.3.4.3, Escalate the perceived severity , EscalatePerceivedSeverityTask.robot" +"6.3.4.4, Subscriptions , Subscriptions.robot" +"6.3.4.5, Individual Subscription , IndividualSubscription.robot" +"6.3.4.6, Notification Endpoint , NotificationEndpoint.robot" 6.3.4.7,API Version Resource Endpoint, ApiVersion.robot -6.3.5, VNF Lifecycle Management interface , VNFLifecycleManagement-API -6.3.5.1, VNF Instances , VNFInstances.robot -6.3.5.2, Individual VNFInstance , IndividualVNFInstance.robot -6.3.5.3, Instantiate VNF Task , InstantiateVNFTask.robot -6.3.5.4, Scale VNF Task , ScaleVNFTask.robot -6.3.5.5, Scale a VNF to level Task , ScaleVNFToLevelTask.robot -6.3.5.6, Change VNF deployment flavour Task , ChangeVNFFlavourTask.robot -6.3.5.7, Terminate VNF Task , TerminateVNFTask.robot -6.3.5.8, Heal VNF Task , HealVNFTask.robot -6.3.5.9, Operate VNF Task , OperateVNFTask.robot -6.3.5.10, Change external VNF connectivity , ChangeExternalVNFConnectivityTask.robot -6.3.5.11, VNF LCM OP occurrences , VnfLcmOperationOccurences.robot -6.3.5.12, Individual VNF LCM OP occurrence , IndividualVnfLcmOperationOccurence.robot -6.3.5.13, Retry operation task , RetryOperationTask.robot -6.3.5.14, Rollback operation task , RollbackOperationTask.robot -6.3.5.15, Fail operation task , FailOperationTask.robot -6.3.5.16, Cancel operation task , CancelOperationTask.robot -6.3.5.17, Subscriptions , Subscriptions.robot -6.3.5.18, Individual Subscription , IndividualSubscription.robot -6.3.5.19, Notification Endpoint , NotificationEndpoint.robot +"6.3.5, VNF Lifecycle Management interface , VNFLifecycleManagement-API" +"6.3.5.1, VNF Instances , VNFInstances.robot" +"6.3.5.2, Individual VNFInstance , IndividualVNFInstance.robot " +"6.3.5.3, Instantiate VNF Task , InstantiateVNFTask.robot" +"6.3.5.4, Scale VNF Task , ScaleVNFTask.robot " +"6.3.5.5, Scale a VNF to level Task , ScaleVNFToLevelTask.robot " +"6.3.5.6, Change VNF deployment flavour Task , ChangeVNFFlavourTask.robot " +"6.3.5.7, Terminate VNF Task , TerminateVNFTask.robot" +"6.3.5.8, Heal VNF Task , HealVNFTask.robot " +"6.3.5.9, Operate VNF Task , OperateVNFTask.robot" +"6.3.5.10, Change external VNF connectivity , ChangeExternalVNFConnectivityTask.robot " +"6.3.5.11, VNF LCM OP occurrences , VnfLcmOperationOccurences.robot" +"6.3.5.12, Individual VNF LCM OP occurrence , IndividualVnfLcmOperationOccurence.robot " +"6.3.5.13, Retry operation task , RetryOperationTask.robot" +"6.3.5.14, Rollback operation task , RollbackOperationTask.robot " +"6.3.5.15, Fail operation task , FailOperationTask.robot " +"6.3.5.16, Cancel operation task , CancelOperationTask.robot" +"6.3.5.17, Subscriptions , Subscriptions.robot" +"6.3.5.18, Individual Subscription , IndividualSubscription.robot" +"6.3.5.19, Notification Endpoint , NotificationEndpoint.robot" 6.3.5.20,API Version Resource Endpoint, ApiVersion.robot