diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..47ba44a94df30072aa20e571ac8488ec85970baf --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +log.html +output.xml +report.html +k3s_build_and_import.sh \ No newline at end of file diff --git a/MEC010p2/MEO/GRANT/Grant.robot b/MEC010p2/MEO/GRANT/Grant.robot index 3c9fc0e3eec23888bb8b437b3f266b0a538b28a0..209aa2b90797aa3a567288f9836df0acc7224967 100644 --- a/MEC010p2/MEO/GRANT/Grant.robot +++ b/MEC010p2/MEO/GRANT/Grant.robot @@ -16,10 +16,10 @@ Test Teardown Test TearDown ${GRANT_ID_PLACEHOLDER} grantRequest ${ TC_MEC_MEC010p2_MEO_GRANT_001_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_001_OK ... Check that MEO sends a synchronous grant response when a grant request is requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.5.1.3.1 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 (GrantRequest) - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest) - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 (Grant) + ... ETSI GS MEC 010-2 3.2.1, clause 7.5.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.2.2-1 (GrantRequest) + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest) + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.4.2-1 (Grant) [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Create a GRANT request grantRequest Check HTTP Response Status Code Is 201 @@ -29,8 +29,8 @@ TC_MEC_MEC010p2_MEO_GRANT_001_OK TC_MEC_MEC010p2_MEO_GRANT_001_BR [Documentation] TP_MEC_MEC010p2_MEO_GRANT_001_BR ... Check that MEO responds with an error when it receives a malformed request when a new grant request is performed - ... ETSI GS MEC 010-2 3.1.1, clause 7.6.1.3.2 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 (Grant) + ... ETSI GS MEC 010-2 3.2.1, clause 7.6.1.3.2 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.4.2-1 (Grant) [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Create a GRANT request grantBadRequest Check HTTP Response Status Code Is 400 @@ -38,9 +38,9 @@ TC_MEC_MEC010p2_MEO_GRANT_001_BR TC_MEC_MEC010p2_MEO_GRANT_002_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_002_OK ... Check that MEO sends a synchronous grant response when a grant request is requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.5.1.3.1 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 //GrantRequest - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 + ... ETSI GS MEC 010-2 3.2.1, clause 7.5.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.2.2-1 //GrantRequest + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.4.2-1 [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Create a GRANT request grantRequest2 Check HTTP Response Status Code Is 201 @@ -51,10 +51,10 @@ TC_MEC_MEC010p2_MEO_GRANT_002_OK TC_MEC_MEC010p2_MEO_GRANT_003_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_003_OK ... Check that MEO sends an asynchronous grant response when a grant request is requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.5.1.3.1 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 (GrantRequest) - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest) - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 (Grant) + ... ETSI GS MEC 010-2 3.2.1, clause 7.5.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.2.2-1 (GrantRequest) + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.2.2-1 Note 2 (GrantRequest) + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.4.2-1 (Grant) [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS ${GRANT_ID_VALUE} Get value entry from JSON file grantRequestAsynchronous id Create a GRANT request grantRequestAsynchronous @@ -65,9 +65,9 @@ TC_MEC_MEC010p2_MEO_GRANT_003_OK TC_MEC_MEC010p2_MEO_GRANT_004_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_004_OK ... Check that MEO sends an asynchronous grant response when a grant request is requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.5.1.3.1 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.2.2-1 (GrantRequest) - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 (Grant) + ... ETSI GS MEC 010-2 3.2.1, clause 7.5.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.2.2-1 (GrantRequest) + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.4.2-1 (Grant) [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS ${GRANT_ID_VALUE} Get value entry from JSON file grantRequestAsynchronous2 id Create a GRANT request grantRequestAsynchronous2 @@ -79,8 +79,8 @@ TC_MEC_MEC010p2_MEO_GRANT_005_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_005_OK ... Check that MEO sends the status of a grant request when a query on a granting ID is performed. ... The process of creating the grant is ongoing, no grant is available yet - ... ETSI GS MEC 010-2 3.1.1, clause 7.5.2.3.2 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 + ... ETSI GS MEC 010-2 3.2.1, clause 7.5.2.3.2 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.4.2-1 [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${None} grantRequestAsynchronous ${REGISTER_ACTION} ${GRANT_ID_VALUE} Get value entry from JSON file grantRequestAsynchronous id @@ -95,8 +95,8 @@ TC_MEC_MEC010p2_MEO_GRANT_006_OK [Documentation] TP_MEC_MEC010p2_MEO_GRANT_006_OK ... Check that MEO sends the status of a grant request when a query on a granting ID is performed. ... The process of creating the grant is ongoing, no grant is available yet - ... ETSI GS MEC 010-2 3.1.1, clause 7.5.2.3.2 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.4.4.2-1 + ... ETSI GS MEC 010-2 3.2.1, clause 7.5.2.3.2 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.4.4.2-1 [Tags] PIC_GRANTS_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${None} grantRequest ${REGISTER_ACTION} Get an individual grant ${setup_response['body']['id']} diff --git a/MEC010p2/MEO/PKGM/AppPkgMgt.robot b/MEC010p2/MEO/PKGM/AppPkgMgt.robot index 67ab59a1c2f0da8befe00691135e244ad7eb23a8..2aa91eca6a826c0c5c37c03da081e53ff651d3f5 100644 --- a/MEC010p2/MEO/PKGM/AppPkgMgt.robot +++ b/MEC010p2/MEO/PKGM/AppPkgMgt.robot @@ -17,9 +17,9 @@ Test Teardown Test TearDown ${APP_PKG_ID_PLACEHOLDER} AppPkgInfo ${ TC_MEC_MEC010p2_MEO_PKGM_001_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_001_OK ... Check that MEO creates a new App Package when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.1 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo) - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.3.2.2-1 (AppPkg) + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.3.3.2-1 (OnboardedAppPkgInfo) + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.3.2.2-1 (AppPkg) [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Post Request to create new App Package Resource CreateAppPackage.json Check HTTP Response Status Code Is 201 @@ -32,8 +32,8 @@ TC_MEC_MEC010p2_MEO_PKGM_001_OK TC_MEC_MEC010p2_MEO_PKGM_001_BR [Documentation] TP_MEC_MEC010p2_MEO_PKGM_001_BR ... Check that MEO creates a new App Package when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.1 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.3.2.2-1 (AppPkg) + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.3.2.2-1 (AppPkg) [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Post Request to create new App Package Resource CreateAppPackageBadRequest.json Check HTTP Response Status Code Is 400 @@ -43,8 +43,8 @@ TC_MEC_MEC010p2_MEO_PKGM_001_BR TC_MEC_MEC010p2_MEO_PKGM_002_01_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_002_01_OK ... Check that MEO returns the list of App Packages when requested - Note 3 - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.2 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.3.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.1.3.2 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.3.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${None} CreateAppPackage ${REGISTER_ACTION} GET all app Packages @@ -58,16 +58,16 @@ TC_MEC_MEC010p2_MEO_PKGM_002_01_OK TC_MEC_MEC010p2_MEO_PKGM_002_02_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_002_02_OK - ... Check that MEO returns the list of App Packages when requested - Note 3 - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.2 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.3.3.2 Note 3 + ... Check that MEO returns the list of on-boarded App Packages when requested - Note 3 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.1.3.2 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.3.3.2 Note 3 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${None} CreateAppPackage ${REGISTER_ACTION} GET all onboarded app Packages Check HTTP Response Status Code Is 200 FOR ${onBoardedAppPkgInfo} IN @{response['body']} - Validate Json AppPkgInfo.schema.json ${onBoardedAppPkgInfo} - Should Be Equal As Strings ${onBoardedAppPkgInfo['onboardingState']} ${ONBOARDING_STATE} + Validate Json OnboardedAppPkgInfo.schema.json ${onBoardedAppPkgInfo} + Should Be Equal As Strings ${onBoardedAppPkgInfo['onboardingState']} ${ONBOARDING_STATE_ONBOARDED} END [Teardown] Test TearDown ${setup_response['body']['id']} ${None} ${REMOVE_ACTION} @@ -76,7 +76,7 @@ TC_MEC_MEC010p2_MEO_PKGM_002_BR [Documentation] TP_MEC_MEO_PKGM_002_BR ... Check that MEO responds with an error when it receives ... a malformed request for retrieving the list of existing App Packages - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.1.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS GET all APP Packages with filters ${MALFORMED_FILTER_NAME} ${FILTER_VALUE} Check HTTP Response Status Code Is 400 @@ -85,8 +85,8 @@ TC_MEC_MEC010p2_MEO_PKGM_002_BR TC_MEC_MEC010p2_MEO_PKGM_003_01_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_003_01_OK ... Check that MEO returns the an App Package when requested - Note 3 - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${None} CreateAppPackage ${REGISTER_ACTION} GET an app Package identified by ${ON_BOARDED_APP_PKG_ID} @@ -100,13 +100,13 @@ TC_MEC_MEC010p2_MEO_PKGM_003_01_OK TC_MEC_MEC010p2_MEO_PKGM_003_02_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_003_02_OK ... Check that MEO returns the an onboarded App Package when requested - Note 3 - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.3.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.3.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${None} CreateAppPackage ${REGISTER_ACTION} GET an onboarded app Package identified by ${ON_BOARDED_APP_PKG_ID} Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is AppPkgInfo + Check HTTP Response Body Json Schema Is OnboardedAppPkgInfo Should Be Equal As Strings ${response['body']['id']} ${ON_BOARDED_APP_PKG_ID} [Teardown] Test TearDown ${setup_response['body']['id']} ${None} ${REMOVE_ACTION} @@ -116,8 +116,8 @@ TC_MEC_MEC010p2_MEO_PKGM_003_NF [Documentation] TP_MEC_MEC010p2_MEO_PKGM_003_NF ... Check that MEO responds with an error when it receives ... a request for retrieving a App Package referred with a wrong ID - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.3.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.3.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS GET an APP Package identified by ${NON_EXISTENT_APP_PKG_ID} Check HTTP Response Status Code Is 404 @@ -126,7 +126,7 @@ TC_MEC_MEC010p2_MEO_PKGM_003_NF TC_MEC_MEC010p2_MEO_PKGM_004_OK [Documentation] TP_MEC_MEO_PKGM_004_OK ... Check that MEO deletes an App Package when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${None} CreateAppPackage ${REGISTER_ACTION} Delete an individual APP Package identified by ${setup_response['body']['id']} @@ -139,7 +139,7 @@ TC_MEC_MEC010p2_MEO_PKGM_004_NF [Documentation] TP_MEC_MEO_PKGM_004_NF ... Check that MEO responds with an error when it receives ... a request for deleting an App Package referred with a wrong ID - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${NON_EXISTENT_APP_PKG_ID} ${None} ${REMOVE_ACTION} Delete an individual APP Package identified by ${NON_EXISTENT_APP_PKG_ID} @@ -149,8 +149,8 @@ TC_MEC_MEC010p2_MEO_PKGM_004_NF TC_MEC_MEC010p2_MEO_PKGM_005_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_005_OK ... Check that MEO updates the operational state of an individual application package resource - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.5 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.8.2" //AppPkgInfoModifications + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.5 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.8.2" //AppPkgInfoModifications [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${None} CreateAppPackage ${REGISTER_ACTION} Update Operational State for an app Package ${ON_BOARDED_APP_PKG_ID} AppPkgInfoModifications.json @@ -163,8 +163,8 @@ TC_MEC_MEC010p2_MEO_PKGM_005_OK TC_MEC_MEC010p2_MEO_PKGM_005_BR [Documentation] TP_MEC_MEC010p2_MEO_PKGM_005_BR ... Check that MEO sends an error when it receives a malformed request to modify the operational state of an application package - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.5 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.8.2" //AppPkgInfoModifications + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.5 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.8.2" //AppPkgInfoModifications [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${None} CreateAppPackage ${REGISTER_ACTION} Update Operational State for an app Package ${ON_BOARDED_APP_PKG_ID} AppPkgInfoModificationsBadRequest.json @@ -175,8 +175,8 @@ TC_MEC_MEC010p2_MEO_PKGM_005_NF [Documentation] TP_MEC_MEC010p2_MEO_PKGM_005_NF ... Check that MEO responds with an error when it receives ... a request for updating an App Package referred with a wrong ID - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.5 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.8.2" //AppPkgInfoModifications + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.5 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.8.2" //AppPkgInfoModifications [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Test Setup ${NON_EXISTENT_APP_PKG_ID} ${None} ${REMOVE_ACTION} Update Operational State for an app Package ${NON_EXISTENT_APP_PKG_ID} AppPkgInfoModificationsBadRequest.json @@ -186,9 +186,9 @@ TC_MEC_MEC010p2_MEO_PKGM_005_NF TC_MEC_MEC010p2_MEO_PKGM_006_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_006_OK ... Check that MEO service returns an application package subscription when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.1 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.7 ##Type: AppPkgSubscription - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4 ##Type: AppPkgSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.3.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.7 ##Type: AppPkgSubscription + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.4 ##Type: AppPkgSubscriptionInfo [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete an App Package Subscription identified by ${SUBSCRIPTION_ID} Send a request for a subscription AppPkgSubscription.json @@ -202,9 +202,9 @@ TC_MEC_MEC010p2_MEO_PKGM_006_OK TC_MEC_MEC010p2_MEO_PKGM_006_BR [Documentation] TP_MEC_MEC010p2_MEO_PKGM_006_BR ... Check that MEO service sends an error when it receives a malformed request for creating a new subscription on AppPackages - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.1 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.7 ##Type: AppPkgSubscription - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4 ##Type: AppPkgSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.3.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.7 ##Type: AppPkgSubscription + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.4 ##Type: AppPkgSubscriptionInfo [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Send a request for a subscription AppPkgSubscriptionBadRequest.json Check HTTP Response Status Code Is 400 @@ -214,8 +214,8 @@ TC_MEC_MEC010p2_MEO_PKGM_007_OK_01 [Documentation] TP_MEC_MEC010p2_MEO_PKGM_007_OK_01 ... Check that MEO service returns the list of Application Package ... Subscriptions when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.2 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.5.2 ##AppPkgSubscriptionLinkList + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.3.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.5.2 ##AppPkgSubscriptionLinkList [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Send a request for a subscription AppPkgSubscription.json Get all APP Package subscriptions @@ -228,8 +228,8 @@ TC_MEC_MEC010p2_MEO_PKGM_007_OK_02 [Documentation] TP_MEC_MEC010p2_MEO_PKGM_007_OK_02 ... Check that MEO service returns the list of Application Package ... Subscriptions when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.2 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.5.2 ##AppPkgSubscriptionLinkList + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.3.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.5.2 ##AppPkgSubscriptionLinkList [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Send a request for a subscription AppPkgSubscription.json Get all APP Package subscriptions @@ -242,8 +242,8 @@ TC_MEC_MEC010p2_MEO_PKGM_007_OK_02 TC_MEC_MEC010p2_MEO_PKGM_008_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_008_OK ... Check that MEO service returns an Application Package Subscription when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.2 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4.2 ##AppPkgSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.4.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.4.2 ##AppPkgSubscriptionInfo [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Send a request for a subscription AppPkgSubscription.json Get an individual APP Package subscriptions ${SUBSCRIPTION_ID} @@ -255,8 +255,8 @@ TC_MEC_MEC010p2_MEO_PKGM_008_OK TC_MEC_MEC010p2_MEO_PKGM_008_NF [Documentation] TP_MEC_MEC010p2_MEO_PKGM_008_NF ... Check that MEO service sends an error when it receives a query for a subscription on AppPackages with a wrong identifier - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.2 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4.2 ##AppPkgSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.4.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.4.2 ##AppPkgSubscriptionInfo [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete an App Package Subscription identified by ${NON_EXISTENT_SUBSCRIPTION_ID} Get an individual APP Package subscriptions ${NON_EXISTENT_SUBSCRIPTION_ID} @@ -266,7 +266,7 @@ TC_MEC_MEC010p2_MEO_PKGM_008_NF TC_MEC_MEC010p2_MEO_PKGM_009_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_009_OK ... Check that MEO service deletes an Application Package Subscription when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.4.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Send a request for a subscription AppPkgSubscription.json Delete an App Package Subscription identified by ${SUBSCRIPTION_ID} @@ -278,7 +278,7 @@ TC_MEC_MEC010p2_MEO_PKGM_009_NF [Documentation] TP_MEC_MEC010p2_MEO_PKGM_009_NF ... Check that MEO service sends an error when it receives a deletion request for a subscription on AppPackages ... with a wrong identifier - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.4.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete an App Package Subscription identified by NON_EXISTENT_SUBSCRIPTION_ID Delete an App Package Subscription identified by ${NON_EXISTENT_SUBSCRIPTION_ID} @@ -289,8 +289,8 @@ TC_MEC_MEC010p2_MEO_PKGM_010_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_009_NF ... Check that the MEO service sends a application package notification ... if the MEO service has an associated subscription and the event is generated - ... "ETSI GS MEC 010-2 3.1.1, clause 7.3.5.3.1", - ... "ETSI GS MEC 010-2 3.1.1, clause 6.2.3.6.2" ##AppPkgNotification + ... "ETSI GS MEC 010-2 3.2.1, clause 7.3.5.3.1", + ... "ETSI GS MEC 010-2 3.2.1, clause 6.2.3.6.2" ##AppPkgNotification [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Send a request for a subscription AppPkgSubscription.json Spawn Notification Server AppPkgNotification @@ -300,8 +300,8 @@ TC_MEC_MEC010p2_MEO_PKGM_010_OK TC_MEC_MEC010p2_MEO_PKGM_011_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_011_OK ... Check that MEO reads the content of the AppD of on-boarded individual application package resources when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.2 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.1.2.2 ##AppD + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.6.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.1.2.2 ##AppD [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Post Request to create new App Package Resource CreateAppPackage.json Get an AppD from App Package identified by ${ON_BOARDED_APP_PKG_ID} @@ -313,7 +313,7 @@ TC_MEC_MEC010p2_MEO_PKGM_011_NF [Documentation] TP_MEC_MEC010p2_MEO_PKGM_011_NF ... Check that MEO responds with an error when it receives ... a request to retrieve an application descriptor referred with a wrong app package ID - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.6.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete an individual APP Package identified by ${NON_EXISTING_APPD_ID} Get an AppD from App Package identified by ${NON_EXISTING_APPD_ID} @@ -323,7 +323,7 @@ TC_MEC_MEC010p2_MEO_PKGM_011_NF TC_MEC_MEC010p2_MEO_PKGM_012_01_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_01_OK ... Check that MEO fetches the application package content identified by appPkgId when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Post Request to create new App Package Resource CreateAppPackage.json Get app Package identified by ${ON_BOARDED_APP_PKG_ID} ${ACCEPTED_CONTENT_TYPE_ZIP} @@ -334,7 +334,7 @@ TC_MEC_MEC010p2_MEO_PKGM_012_01_OK TC_MEC_MEC010p2_MEO_PKGM_012_02_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_02_OK ... Check that MEO fetches the application package content identified by appPkgId when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Post Request to create new App Package Resource CreateAppPackage.json Get onboarded app Package identified by ${ON_BOARDED_APP_PKG_ID} ${ACCEPTED_CONTENT_TYPE_ZIP} @@ -345,7 +345,7 @@ TC_MEC_MEC010p2_MEO_PKGM_012_02_OK TC_MEC_MEC010p2_MEO_PKGM_012_BR [Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_BR ... Check that MEO service sends an error when it receives a malformed request - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Get app Package identified by ${ON_BOARDED_APP_PKG_ID} ${WRONG_CONTENT_TYPE} Check HTTP Response Status Code Is 400 @@ -354,7 +354,7 @@ TC_MEC_MEC010p2_MEO_PKGM_012_BR TC_MEC_MEC010p2_MEO_PKGM_012_01_NF [Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_01_NF ... Check that MEO service sends an error when it receives a request referring a wrong appPkgId - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete an individual APP Package identified by ${NOT_EXISTING_APP_PKG_ID} Get onboarded app Package identified by ${NOT_EXISTING_APP_PKG_ID} ${ACCEPTED_CONTENT_TYPE_ZIP} @@ -364,7 +364,7 @@ TC_MEC_MEC010p2_MEO_PKGM_012_01_NF TC_MEC_MEC010p2_MEO_PKGM_012_02_NF [Documentation] TP_MEC_MEC010p2_MEO_PKGM_012_01_NF ... Check that MEO service sends an error when it receives a request referring a wrong appPkgId - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete an individual APP Package identified by ${NON_EXISTING_ON_BOARDED_APPD_ID} Get onboarded app Package identified by ${NON_EXISTING_ON_BOARDED_APPD_ID} ${ACCEPTED_CONTENT_TYPE_ZIP} @@ -374,8 +374,8 @@ TC_MEC_MEC010p2_MEO_PKGM_012_02_NF TC_MEC_MEC010p2_MEO_PKGM_013_OK [Documentation] TP_MEC_MEC010p2_MEO_PKGM_013_OK ... Check that MEO accepts application package when submitted - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.3 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.1.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.3 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.1.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete an individual APP Package identified by ${APP_PKG_ID} Submit application package ${APP_PKG_ID} @@ -386,8 +386,8 @@ TC_MEC_MEC010p2_MEO_PKGM_013_OK TC_MEC_MEC010p2_MEO_PKGM_013_NF [Documentation] TP_MEC_MEC010p2_MEO_PKGM_013_NF ... Check that MEO returns an error when an application package with wrong id is submitted - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.3 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.1.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.3 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.1.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete an individual APP Package identified by ${NOT_EXISTING_APP_PKG_ID} Submit application package ${NOT_EXISTING_APP_PKG_ID} diff --git a/MEC010p2/MEO/PKGM/environment/variables.txt b/MEC010p2/MEO/PKGM/environment/variables.txt index e377698fe18f3e95655c57a747fd54aab3cac5a0..4917dbd2a54bf86bf73069b401d15050585a71bb 100644 --- a/MEC010p2/MEO/PKGM/environment/variables.txt +++ b/MEC010p2/MEO/PKGM/environment/variables.txt @@ -23,6 +23,7 @@ ${APP_NAME} appName ${CHECKSUM} SHA-256 ${OPERATIONAL_STATE} ENABLED ${ONBOARDING_STATE} CREATED +${ONBOARDING_STATE_ONBOARDED} ONBOARDED ${USAGE_STATE} NOT_IN_USE ${APP_PKG_ID} 01234782-2c70-4e47-9a4e-0ee3a1a00123 ${ON_BOARDED_APP_PKG_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f diff --git a/MEC010p2/MEO/PKGM/schemas/AppD.schema.json b/MEC010p2/MEO/PKGM/schemas/AppD.schema.json index c3224523964fde1199ab69f8a05e3c5a42dd3407..fc7a9c8c858e2abe47baa604eed2c5c2f6179895 100644 --- a/MEC010p2/MEO/PKGM/schemas/AppD.schema.json +++ b/MEC010p2/MEO/PKGM/schemas/AppD.schema.json @@ -554,9 +554,6 @@ "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "String" }, - "tunnelSpecificData": { - "type": "string" - }, "tunnelSrcAddress": { "description": "Source address of the tunnel.", "type": "string", @@ -612,6 +609,14 @@ "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "Int" }, + "direction": { + "description": "Identifies the direction of the data flow when the value of 'filterType' is 'per FLOW'. See note. Permitted values: 00= Downlink (towards the UE), 01 = Uplink (away from the UE)", + "type": "string", + "enum": [ + "00", + "01" + ] + }, "dstAddress": { "description": "A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.", "items": { @@ -748,7 +753,8 @@ "action" ], "type": "object", - "x-etsi-ref": "6.2.1.9" + "x-etsi-ref": "6.2.1.9", + "x-etsi-notes": "NOTE:\tWhen direction, srcAddress, dstAddress, srcPort, dstPort and protocol are combined to describe a IP flow traffic filter which is transferred to 5G core network by MEC system, this group of attributes follows the rules specified in the clause 5.3.8 of ETSI TS 129 214 [22]." }, "minItems": 0, "type": "array", diff --git a/MEC010p2/MEO/PKGM/schemas/AppPkgInfo.schema.json b/MEC010p2/MEO/PKGM/schemas/AppPkgInfo.schema.json index 06783a72a2489c5dcc4126c4d10d20600d15106c..ca194e5217ce8f41690bfdef5b93962c71b82899 100644 --- a/MEC010p2/MEO/PKGM/schemas/AppPkgInfo.schema.json +++ b/MEC010p2/MEO/PKGM/schemas/AppPkgInfo.schema.json @@ -3,12 +3,7 @@ "type": "object", "required": [ "id", - "appDId", - "appName", - "appSoftwareVersion", - "appDVersion", "checksum", - "softwareImages", "onboardingState", "operationalState", "usageState", @@ -19,26 +14,6 @@ "description": "Identifier of the onboarded application package.", "type": "string" }, - "appDId": { - "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.", - "type": "string" - }, - "appProvider": { - "description": "Provider of the application and of the AppD.", - "type": "string" - }, - "appName": { - "description": "Name to identify the MEC application.", - "type": "string" - }, - "appSoftwareVersion": { - "description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package.", - "type": "string" - }, - "appDVersion": { - "description": "Identifies the version of the application descriptor.", - "type": "string" - }, "checksum": { "description": "", "properties": { @@ -57,12 +32,6 @@ ], "type": "object" }, - "softwareImages": { - "description": "Information of application software image in application package. Type is TBD" - }, - "additionalArtifacts": { - "description": "Additional information of application package artifacts that are not application software images. Type is TBD" - }, "onboardingState": { "description": "Onboarding state of application package", "type": "string", diff --git a/MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfo.schema.json b/MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfo.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..3a9a46964209c95aae5f142f113468d28c3e32e6 --- /dev/null +++ b/MEC010p2/MEO/PKGM/schemas/OnboardedAppPkgInfo.schema.json @@ -0,0 +1,169 @@ +{ + "description": "'The data type AppPkgInfo represents the parameters for an application package resource'", + "type": "object", + "required": [ + "id", + "appDId", + "appName", + "appSoftwareVersion", + "appDVersion", + "checksum", + "softwareImages", + "onboardingState", + "operationalState", + "usageState", + "mecInfo", + "_links" + ], + "properties": { + "id": { + "description": "Identifier of the onboarded application package.", + "type": "string" + }, + "appDId": { + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.", + "type": "string" + }, + "appProvider": { + "description": "Provider of the application and of the AppD.", + "type": "string" + }, + "appName": { + "description": "Name to identify the MEC application.", + "type": "string" + }, + "appSoftwareVersion": { + "description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package.", + "type": "string" + }, + "appDVersion": { + "description": "Identifies the version of the application descriptor.", + "type": "string" + }, + "checksum": { + "description": "", + "properties": { + "algorithm": { + "description": " Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.", + "type": "string" + }, + "hash": { + "description": "'String 1 The hexadecimal value of the checksum'", + "type": "string" + } + }, + "required": [ + "algorithm", + "hash" + ], + "type": "object" + }, + "softwareImages": { + "description": "Information of application software image in application package. Type is TBD" + }, + "additionalArtifacts": { + "description": "Additional information of application package artifacts that are not application software images. Type is TBD" + }, + "onboardingState": { + "description": "Onboarding state of application package", + "type": "string", + "format": "enum", + "enum": [ + "CREATED", + "UPLOADING", + "PROCESSING", + "ONBOARDED" + ] + }, + "operationalState": { + "description": "Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] + }, + "usageState": { + "description": "Usage state of the onboarded instance of the application package", + "type": "string", + "format": "enum", + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] + }, + "mecInfo": { + "description": "", + "type": "array", + "items": { + "type": "string" + } + }, + + + "userDefinedData": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self", + "appD", + "appPkgContent" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appD": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appPkgContent": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + } + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEPM/LCM/PlatformConfiguration.robot b/MEC010p2/MEPM/LCM/PlatformConfiguration.robot index 1606af0bcc9b2ade1243c540137a6b86b0e879a3..d9dbf77e2e050c367a153b94552d6a4846bead0e 100644 --- a/MEC010p2/MEPM/LCM/PlatformConfiguration.robot +++ b/MEC010p2/MEPM/LCM/PlatformConfiguration.robot @@ -13,8 +13,8 @@ Library OperatingSystem TC_MEC_MEC010p2_MEPM_LCM_001_OK [Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_OK ... Check that MEC API provider has created the configuration information in AppD to the MEPM-V - ... ETSI GS MEC 010-2 3.1.1, clause 7.7.6.3.1 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.2.21.2 #ConfigPlatformForAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.7.6.3.1 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.2.21.2 #ConfigPlatformForAppRequest [Setup] Create new App Instance CreateAppInstanceRequest ${APPD_ID_SET} Get value entry from JSON file CreateAppInstanceRequest appDId Request to configure Platform ${APP_INSTANCE_ID} ConfigPlatformForAppRequest @@ -26,8 +26,8 @@ TC_MEC_MEC010p2_MEPM_LCM_001_OK TC_MEC_MEC010p2_MEPM_LCM_001_BR [Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_BR ... Check that MEC API provider sends an error when it receives a malformed request for the configuration information in AppD to the MEPM-V - ... ETSI GS MEC 010-2 3.1.1, clause 7.7.6.3.1 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.2.21.2 #ConfigPlatformForAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.7.6.3.1 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.2.21.2 #ConfigPlatformForAppRequest Request to configure Platform ${APP_INSTANCE_ID} ConfigPlatformForAppRequestBadRequest Check HTTP Response Status Code Is 400 @@ -38,8 +38,8 @@ TC_MEC_MEC010p2_MEPM_LCM_001_NF [Documentation] TP_MEC_MEC010p2_MEPM_LCM_001_BR ... "Check that MEC API provider sends an error when it receives a request ... for the configuration information in AppD to the MEPM-V with not valid app instance ID - ... ETSI GS MEC 010-2 3.1.1, clause 7.7.6.3.1 - ... ETS3.1.1MEC 010-2 3.1.1, Table 6.2.2.21.2-1 #ConfigPlatformForAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.7.6.3.1 + ... ETS3.2.1MEC 010-2 3.2.1, Table 6.2.2.21.2-1 #ConfigPlatformForAppRequest Request to configure Platform ${NOT_EXISTING_APP_INSTANCE_ID} ConfigPlatformForAppRequest Check HTTP Response Status Code Is 404 diff --git a/MEC010p2/MEPM/PKGM/AppPkgMgt.robot b/MEC010p2/MEPM/PKGM/AppPkgMgt.robot index 711a7e5605178c7b2d55176b0f244093319dac47..65b4988449a412a833042e22bbd551c58588a4b4 100644 --- a/MEC010p2/MEPM/PKGM/AppPkgMgt.robot +++ b/MEC010p2/MEPM/PKGM/AppPkgMgt.robot @@ -14,8 +14,8 @@ Library libraries/Server.py TC_MEC_MEC010p2_MEPM_PKGM_001_01_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_001_01_OK ... Check that MEO creates a new App Package when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.1 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.2.2 ##AppPkgInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.2.2 ##AppPkgInfo [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Create new App Package CreateAppPackage.json Set Suite Variable ${APP_PKG_ID} ${response['body']['id']} @@ -31,21 +31,21 @@ TC_MEC_MEC010p2_MEPM_PKGM_001_01_OK TC_MEC_MEC010p2_MEPM_PKGM_001_02_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_002_01_OK ... Check that MEPM returns the list of on-boarded App Packages when requested - Note 3 - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.1 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.2.2 ##AppPkgInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.2.2 ##AppPkgInfo [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Create new App Package CreateAppPackage.json Set Suite Variable ${APP_PKG_ID} ${response['body']['id']} Set Suite Variable ${APPD_ID} ${response['body']['appDId']} - GET all app Packages + GET all onboarded app Packages Check HTTP Response Status Code Is 200 FOR ${onBoardedAppPkgInfo} IN @{response['body']} - Validate Json AppPkgInfo.schema.json ${onBoardedAppPkgInfo} + Validate Json OnboardedAppPkgInfo.schema.json ${onBoardedAppPkgInfo} Should Contain ${onBoardedAppPkgInfo['_links']['self']['href']} ${APP_PKG_ID} Should Contain ${onBoardedAppPkgInfo['_links']['appD']['href']} ${APPD_ID} Should Contain ${onBoardedAppPkgInfo['_links']['appPkgContent']['href']} ${APPD_ID} - Should Be Equal As Strings ${onBoardedAppPkgInfo['onboardingState']} ${ONBOARDING_STATE} + Should Be Equal As Strings ${onBoardedAppPkgInfo['onboardingState']} ${ONBOARDING_STATE_ONBOARDED} END [Teardown] Delete an individual APP Package identified by ID ${APP_PKG_ID} @@ -53,7 +53,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_001_BR [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_001_BR ... Check that MEPM responds with an error when it receives ... a malformed request for requesting the list of existing App Packages - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.1.3.1 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Create new App Package CreateAppPackage.json Set Suite Variable ${APP_PKG_ID} ${response['body']['id']} @@ -67,8 +67,8 @@ TC_MEC_MEC010p2_MEPM_PKGM_001_BR TC_MEC_MEC010p2_MEPM_PKGM_002_01_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_002_01_OK ... Check that MEPM returns the an App Package when requested - Note 3 - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.3.2 ##AppPkgInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.3.2 ##AppPkgInfo [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Create new App Package CreateAppPackage.json Set Suite Variable ${APP_PKG_ID} ${response['body']['id']} @@ -86,20 +86,20 @@ TC_MEC_MEC010p2_MEPM_PKGM_002_01_OK TC_MEC_MEC010p2_MEPM_PKGM_002_02_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_002_02_OK - ... Check that MEPM returns the an App Package when requested - Note 3 - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.3.2 ##AppPkgInfo + ... Check that MEPM returns the an on-boarded App Package when requested - Note 3 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.3.2 ##AppPkgInfo [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Create new App Package CreateAppPackage.json Set Suite Variable ${APP_PKG_ID} ${response['body']['id']} Set Suite Variable ${APPD_ID} ${response['body']['appDId']} - Get an individual APP Package identified by ID ${APPD_ID} + Get an individual onboarded APP Package identified by ID ${APPD_ID} Check HTTP Response Status Code Is 200 - Validate Json AppPkgInfo.schema.json ${response['body']} + Validate Json OnboardedAppPkgInfo.schema.json ${response['body']} Should Contain ${response['body']['_links']['self']['href']} ${APP_PKG_ID} Should Contain ${response['body']['_links']['appD']['href']} ${APPD_ID} Should Contain ${response['body']['_links']['appPkgContent']['href']} ${APPD_ID} - Should Be Equal As Strings ${response['body']['onboardingState']} ${ONBOARDING_STATE} + Should Be Equal As Strings ${response['body']['onboardingState']} ${ONBOARDING_STATE_ONBOARDED} [Teardown] Delete an individual APP Package identified by ID ${APP_PKG_ID} @@ -107,7 +107,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_002_NF [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_002_NF ... Check that MEPM responds with an error when it receives ... a request for returning a App Package referred with a wrong ID - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.2.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.2.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete an individual APP Package identified by ID ${NON_EXISTENT_APP_PKG_ID} Get an individual APP Package identified by ID ${NON_EXISTENT_APP_PKG_ID} @@ -117,9 +117,9 @@ TC_MEC_MEC010p2_MEPM_PKGM_002_NF TC_MEC_MEC010p2_MEPM_PKGM_003_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_OK ... Check that MEPM service returns an application package subscription when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.1 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.7.2 ##AppPkgSubscription - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4.2 ##AppPkgSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.3.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.7.2 ##AppPkgSubscription + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.4.2 ##AppPkgSubscriptionInfo [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Create a subscription AppPkgSubscription.json Set Suite Variable ${SUBSCRIPTION_ID} ${response['body']['id']} @@ -132,7 +132,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_003_BR [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_003_BR ... Check that MEPM service sends an error when it receives a ... malformed request for creating a new subscription on AppPackages - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.3.3.1 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS Create a subscription AppPkgSubscriptionBadRequest.json Check HTTP Response Status Code Is 400 @@ -141,7 +141,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_004_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_004_OK ... Check that MEPM service returns the list of Application ... Package Subscriptions when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.3.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.3.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Create a subscription AppPkgSubscription.json Set Suite Variable ${SUBSCRIPTION_ID} ${response['body']['id']} @@ -155,8 +155,8 @@ TC_MEC_MEC010p2_MEPM_PKGM_004_OK TC_MEC_MEC010p2_MEPM_PKGM_005_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_005_OK ... Check that MEPM service returns an Application Package Subscription when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.2 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.4.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.4.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.4.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Create a subscription AppPkgSubscription.json Set Suite Variable ${SUBSCRIPTION_ID} ${response['body']['id']} @@ -170,7 +170,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_005_NF [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_005_NF ... C"Check that MEPM service sends an error when ... it receives a query for a subscription on AppPackages with a wrong identifier - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.4.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete a subscription ${NON_EXISTENT_SUBSCRIPTION_ID} Get an individual subscription ${NON_EXISTENT_SUBSCRIPTION_ID} @@ -180,7 +180,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_005_NF TC_MEC_MEC010p2_MEPM_PKGM_006_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_006_OK ... Check that MEPM service deletes an Application Package Subscription when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.4.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Create a subscription AppPkgSubscription.json Set Suite Variable ${SUBSCRIPTION_ID} ${response['body']['id']} @@ -192,7 +192,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_006_NF ... Check that MEPM service sends an error ... when it receives a deletion request for a subscription on AppPackages ... with a wrong identifier - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.4.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.4.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT INCLUDE_UNDEFINED_SCHEMAS [Setup] Delete a subscription ${NON_EXISTENT_SUBSCRIPTION_ID} Delete a subscription ${NON_EXISTENT_SUBSCRIPTION_ID} @@ -203,8 +203,8 @@ TC_MEC_MEC010p2_MEPM_PKGM_007_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_007_OK ... Check that the MEPM service sends a application package notification ... if the MEPM service has an associated subscription and the event is generated - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.5.3.1, - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.3.6.2 ##AppPkgNotification + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.5.3.1, + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.3.6.2 ##AppPkgNotification [Tags] PIC_APP_PACKAGE_NOTIFICATIONS [Setup] Create a subscription AppPkgSubscription.json Set Suite Variable ${SUBSCRIPTION_ID} ${response['body']['id']} @@ -219,7 +219,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_008_NA [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_008_NA ... Check that MEPM responds with an error when it receives ... a POST request referring an application descriptor AppD - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.6.3.1 [Tags] PIC_APP_PACKAGE_MANAGEMENT [Setup] Create new App Package CreateAppPackage.json @@ -236,8 +236,8 @@ TC_MEC_MEC010p2_MEPM_PKGM_008_NA TC_MEC_MEC010p2_MEPM_PKGM_009_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_009_OK ... Check that MEPM returns the Application Descriptor contained on an on-boarded Application Package when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.2 - ... ETSI GS MEC 010-2 3.1.1, clause 6.2.1.2.2 ##AppD + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.6.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 6.2.1.2.2 ##AppD [Tags] PIC_APP_PACKAGE_MANAGEMENT [Setup] Create new App Package CreateAppPackage.json Set Suite Variable ${APP_PKG_ID} ${response['body']['id']} @@ -251,7 +251,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_009_NF [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_009_NF ... Check that MEPM responds with an error when it receives ... a request for returning a App Descriptor referred with a wrong App Package ID - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.6.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT [Setup] Delete an AppD by ID ${NON_EXISTENT_APP_PKG_ID} Get an AppD identified by ${NON_EXISTENT_APP_PKG_ID} @@ -262,7 +262,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_010_FO [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_010_FO ... Check that MEPM responds with an error when it receives ... a PUT request referring an application descriptor AppD - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.3 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.6.3.3 [Tags] PIC_APP_PACKAGE_MANAGEMENT [Setup] Create new App Package CreateAppPackage.json Set Suite Variable ${APP_PKG_ID} ${response['body']['id']} @@ -276,7 +276,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_011_NA [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_011_NA ... Check that MEPM responds with an error when it receives ... a DELETE request referring an application descriptor AppD - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.6.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.6.3.4 [Tags] PIC_APP_PACKAGE_MANAGEMENT [Setup] Create new App Package CreateAppPackage.json Set Suite Variable ${APP_PKG_ID} ${response['body']['id']} @@ -289,7 +289,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_011_NA TC_MEC_MEC010p2_MEPM_PKGM_012_01_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_012_01_OK ... Check that MEPM fetches the on-boarded application package content identified by appPkgId when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT [Setup] Create new App Package CreateAppPackage.json Set Suite Variable ${APP_PKG_ID} ${response['body']['id']} @@ -300,7 +300,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_012_01_OK TC_MEC_MEC010p2_MEPM_PKGM_012_02_OK [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_012_02_OK ... heck that MEPM fetches the on-boarded application package content identified by appDId when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT [Setup] Create new App Package CreateAppPackage.json Set Suite Variable ${APP_PKG_ID} ${response['body']['id']} @@ -314,7 +314,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_012_02_OK TC_MEC_MEC010p2_MEPM_PKGM_012_01_NF [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_012_01_NF ... Check that MEPM fetches the on-boarded application package content identified by appPkgId when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT [Setup] Delete an individual APP Package identified by ID ${NON_EXISTENT_APP_PKG_ID} GET all app Packages content by appPkgId ${NON_EXISTENT_APP_PKG_ID} @@ -325,7 +325,7 @@ TC_MEC_MEC010p2_MEPM_PKGM_012_01_NF TC_MEC_MEC010p2_MEPM_PKGM_012_02_NF [Documentation] TP_MEC_MEC010p2_MEPM_PKGM_012_02_NF ... Check that MEPM service sends an error when it receives a query with an application package with a wrong identifier - ... ETSI GS MEC 010-2 3.1.1, clause 7.3.7.3.2 + ... ETSI GS MEC 010-2 3.2.1, clause 7.3.7.3.2 [Tags] PIC_APP_PACKAGE_MANAGEMENT [Setup] Delete an individual APP Package identified by ID ${NON_EXISTENT_APPD_ID} GET all app Packages content by appPkgId ${NON_EXISTENT_APPD_ID} @@ -388,6 +388,15 @@ GET all app Packages ${output}= Output response Set Suite Variable ${response} ${output} +GET all onboarded app Packages + Log Getting all App Packages + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages + ${output}= Output response + Set Suite Variable ${response} ${output} + GET all app Packages with filter [Arguments] ${key} ${value} Log Getting all App Packages using filtering parameters @@ -408,6 +417,14 @@ Get an individual APP Package identified by ID ${output}= Output response Set Suite Variable ${response} ${output} +Get an individual onboarded APP Package identified by ID + [Arguments] ${identifier} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/onboarded_app_packages/${identifier} + ${output}= Output response + Set Suite Variable ${response} ${output} GET all app Packages content by appPkgId diff --git a/MEC010p2/MEPM/PKGM/environment/variables.txt b/MEC010p2/MEPM/PKGM/environment/variables.txt index fa58be8ac3f21bfb6702554316d42d18e23337bd..3c8e44d2e43d869089da8bc07f19f8a3f466b358 100644 --- a/MEC010p2/MEPM/PKGM/environment/variables.txt +++ b/MEC010p2/MEPM/PKGM/environment/variables.txt @@ -24,6 +24,7 @@ ${NON_EXISTENT_APP_PKG_ID} NON_EXISTENT_APP_PKG_ID ${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID ${NON_EXISTENT_APPD_ID} NON_EXISTENT_APPD_ID ${ONBOARDING_STATE} CREATED +${ONBOARDING_STATE_ONBOARDED} ONBOARDED ##Notification Server variables diff --git a/MEC010p2/MEPM/PKGM/schemas/AppPkgInfo.schema.json b/MEC010p2/MEPM/PKGM/schemas/AppPkgInfo.schema.json index 3a9a46964209c95aae5f142f113468d28c3e32e6..9bd4a5b4554c16b6e1ab5ede1f351dfe0ff28812 100644 --- a/MEC010p2/MEPM/PKGM/schemas/AppPkgInfo.schema.json +++ b/MEC010p2/MEPM/PKGM/schemas/AppPkgInfo.schema.json @@ -2,168 +2,127 @@ "description": "'The data type AppPkgInfo represents the parameters for an application package resource'", "type": "object", "required": [ - "id", - "appDId", - "appName", - "appSoftwareVersion", - "appDVersion", - "checksum", - "softwareImages", - "onboardingState", - "operationalState", - "usageState", - "mecInfo", - "_links" + "id", + "checksum", + "onboardingState", + "operationalState", + "usageState", + "_links" ], "properties": { - "id": { - "description": "Identifier of the onboarded application package.", + "id": { + "description": "Identifier of the onboarded application package.", + "type": "string" + }, + "checksum": { + "description": "", + "properties": { + "algorithm": { + "description": " Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.", "type": "string" - }, - "appDId": { - "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.", - "type": "string" - }, - "appProvider": { - "description": "Provider of the application and of the AppD.", - "type": "string" - }, - "appName": { - "description": "Name to identify the MEC application.", - "type": "string" - }, - "appSoftwareVersion": { - "description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package.", + }, + "hash": { + "description": "'String 1 The hexadecimal value of the checksum'", "type": "string" + } }, - "appDVersion": { - "description": "Identifies the version of the application descriptor.", - "type": "string" - }, - "checksum": { - "description": "", + "required": [ + "algorithm", + "hash" + ], + "type": "object" + }, + "onboardingState": { + "description": "Onboarding state of application package", + "type": "string", + "format": "enum", + "enum": [ + "CREATED", + "UPLOADING", + "PROCESSING", + "ONBOARDED" + ] + }, + "operationalState": { + "description": "Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] + }, + "usageState": { + "description": "Usage state of the onboarded instance of the application package", + "type": "string", + "format": "enum", + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] + }, + "userDefinedData": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self", + "appD", + "appPkgContent" + ], + "properties": { + "self": { "properties": { - "algorithm": { - "description": " Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.", - "type": "string" - }, - "hash": { - "description": "'String 1 The hexadecimal value of the checksum'", - "type": "string" - } + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } }, "required": [ - "algorithm", - "hash" + "href" ], - "type": "object" - }, - "softwareImages": { - "description": "Information of application software image in application package. Type is TBD" - }, - "additionalArtifacts": { - "description": "Additional information of application package artifacts that are not application software images. Type is TBD" - }, - "onboardingState": { - "description": "Onboarding state of application package", - "type": "string", - "format": "enum", - "enum": [ - "CREATED", - "UPLOADING", - "PROCESSING", - "ONBOARDED" - ] - }, - "operationalState": { - "description": "Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.", - "type": "string", - "enum": [ - "ENABLED", - "DISABLED" - ] - }, - "usageState": { - "description": "Usage state of the onboarded instance of the application package", - "type": "string", - "format": "enum", - "enum": [ - "IN_USE", - "NOT_IN_USE" - ] - }, - "mecInfo": { - "description": "", - "type": "array", - "items": { - "type": "string" - } - }, - - - "userDefinedData": { - "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", - "type": "object", - "additionalProperties": true - }, - "_links": { - "description": "Links to resources related to this resource.", "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appD": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, "required": [ - "self", - "appD", - "appPkgContent" + "href" ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appPkgContent": { "properties": { - "self": { - "properties": { - "href": { - "description": "URI referring to a resource", - "format": "uri", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "URI" - } - }, - "required": [ - "href" - ], - "type": "object", - "x-etsi-ref": "6.5.2" - }, - "appD": { - "properties": { - "href": { - "description": "URI referring to a resource", - "format": "uri", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "URI" - } - }, - "required": [ - "href" - ], - "type": "object", - "x-etsi-ref": "6.5.2" - }, - "appPkgContent": { - "properties": { - "href": { - "description": "URI referring to a resource", - "format": "uri", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "URI" - } - }, - "required": [ - "href" - ], - "type": "object", - "x-etsi-ref": "6.5.2" - } - } + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } } + } } -} \ No newline at end of file + } \ No newline at end of file diff --git a/MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfo.schema.json b/MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfo.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..3a9a46964209c95aae5f142f113468d28c3e32e6 --- /dev/null +++ b/MEC010p2/MEPM/PKGM/schemas/OnboardedAppPkgInfo.schema.json @@ -0,0 +1,169 @@ +{ + "description": "'The data type AppPkgInfo represents the parameters for an application package resource'", + "type": "object", + "required": [ + "id", + "appDId", + "appName", + "appSoftwareVersion", + "appDVersion", + "checksum", + "softwareImages", + "onboardingState", + "operationalState", + "usageState", + "mecInfo", + "_links" + ], + "properties": { + "id": { + "description": "Identifier of the onboarded application package.", + "type": "string" + }, + "appDId": { + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique.", + "type": "string" + }, + "appProvider": { + "description": "Provider of the application and of the AppD.", + "type": "string" + }, + "appName": { + "description": "Name to identify the MEC application.", + "type": "string" + }, + "appSoftwareVersion": { + "description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package.", + "type": "string" + }, + "appDVersion": { + "description": "Identifies the version of the application descriptor.", + "type": "string" + }, + "checksum": { + "description": "", + "properties": { + "algorithm": { + "description": " Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.", + "type": "string" + }, + "hash": { + "description": "'String 1 The hexadecimal value of the checksum'", + "type": "string" + } + }, + "required": [ + "algorithm", + "hash" + ], + "type": "object" + }, + "softwareImages": { + "description": "Information of application software image in application package. Type is TBD" + }, + "additionalArtifacts": { + "description": "Additional information of application package artifacts that are not application software images. Type is TBD" + }, + "onboardingState": { + "description": "Onboarding state of application package", + "type": "string", + "format": "enum", + "enum": [ + "CREATED", + "UPLOADING", + "PROCESSING", + "ONBOARDED" + ] + }, + "operationalState": { + "description": "Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ] + }, + "usageState": { + "description": "Usage state of the onboarded instance of the application package", + "type": "string", + "format": "enum", + "enum": [ + "IN_USE", + "NOT_IN_USE" + ] + }, + "mecInfo": { + "description": "", + "type": "array", + "items": { + "type": "string" + } + }, + + + "userDefinedData": { + "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'", + "type": "object", + "additionalProperties": true + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self", + "appD", + "appPkgContent" + ], + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appD": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "appPkgContent": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + } + } + } +} \ No newline at end of file diff --git a/MEC010p2/MEX/LCM/AppInstanceMgmt.robot b/MEC010p2/MEX/LCM/AppInstanceMgmt.robot index 302f0177ef2c9f138b11ed894b6e9887908cca6f..f5f9406286939302421aa97a19ee5b9285378d57 100644 --- a/MEC010p2/MEX/LCM/AppInstanceMgmt.robot +++ b/MEC010p2/MEX/LCM/AppInstanceMgmt.robot @@ -14,9 +14,9 @@ Library String TC_MEC_MEC010p2_MEX_LCM_001_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_001_OK ... Check that MEC API provider creates a new App Package when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.1.3.1 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.2.3.2-1 #CreateAppInstanceRequest - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.2.4.2-1 #AppInstanceInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.2.3.2-1 #CreateAppInstanceRequest + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo Create new App Instance CreateAppInstanceRequest ${APPD_ID_SET} Get value entry from JSON file CreateAppInstanceRequest appDId Check HTTP Response Status Code Is 201 @@ -30,9 +30,9 @@ TC_MEC_MEC010p2_MEX_LCM_001_OK TC_MEC_MEC010p2_MEX_LCM_001_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_001_BR ... Check that MEC API provider sends an error when it receives a malformed request for the creation of a new App Instance - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.1.3.1 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.2.3.2-1 #CreateAppInstanceRequest - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.2.4.2-1 #AppInstanceInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.1.3.1 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.2.3.2-1 #CreateAppInstanceRequest + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo Create new App Instance CreateAppInstanceRequestBadRequest Check HTTP Response Status Code Is 400 @@ -40,8 +40,8 @@ TC_MEC_MEC010p2_MEX_LCM_001_BR TC_MEC_MEC010p2_MEX_LCM_002_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_002_OK ... Check that MEC API provider retrieves the list of App instances when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.1.3.2 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.2.4.2-1 #AppInstanceInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.1.3.2 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo [Setup] Create new App Instance CreateAppInstanceRequest Set Test Variable ${NEW_APP_INSTANCE_ID} ${response['body']['id']} GET all APP Instances @@ -61,8 +61,8 @@ TC_MEC_MEC010p2_MEX_LCM_002_OK TC_MEC_MEC010p2_MEX_LCM_003_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_003_OK ... Check that MEC API provider retrieves an App Package when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.2.3.2 - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.2.4.2-1 #AppInstanceInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.2.3.2 + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo [Setup] Create new App Instance CreateAppInstanceRequest Set Test Variable ${NEW_APP_INSTANCE_ID} ${response['body']['id']} GET APP Instance ${NEW_APP_INSTANCE_ID} @@ -75,7 +75,7 @@ TC_MEC_MEC010p2_MEX_LCM_003_OK TC_MEC_MEC010p2_MEX_LCM_003_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_003_NF ... Check that MEC API provider fails on deletion of an App Instance when requested using wrong appInstanceId - ... ETSI GS MEC 010-2 3.1.1, Table 6.2.2.4.2-1 #AppInstanceInfo + ... ETSI GS MEC 010-2 3.2.1, Table 6.2.2.4.2-1 #AppInstanceInfo [Setup] Delete APP Instance ${NOT_EXISTING_APP_INSTANCE_ID} GET APP Instance ${NOT_EXISTING_APP_INSTANCE_ID} Check HTTP Response Status Code Is 404 @@ -83,7 +83,7 @@ TC_MEC_MEC010p2_MEX_LCM_003_NF TC_MEC_MEC010p2_MEX_LCM_004_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_003_OK ... Check that MEC API provider service deletes an App Instance when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.2.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.2.3.4 [Setup] Create new App Instance CreateAppInstanceRequest Set Test Variable ${NEW_APP_INSTANCE_ID} ${response['body']['id']} Delete APP Instance ${NEW_APP_INSTANCE_ID} @@ -92,7 +92,7 @@ TC_MEC_MEC010p2_MEX_LCM_004_OK TC_MEC_MEC010p2_MEX_LCM_004_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_004_NF ... Check that MEC API provider fails on deletion of an App Instance when requested using wrong appInstanceId - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.2.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.2.3.4 [Setup] Delete APP Instance ${NOT_EXISTING_APP_INSTANCE_ID} Delete APP Instance ${NOT_EXISTING_APP_INSTANCE_ID} Check HTTP Response Status Code Is 404 @@ -101,8 +101,8 @@ TC_MEC_MEC010p2_MEX_LCM_004_NF TC_MEC_MEC010p2_MEX_LCM_005_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_005_OK ... Check that MEC API provider service instantiates an App Instance when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.6.3.1 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.7.2-1 #InstantiateAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.6.3.1 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.7.2-1 #InstantiateAppRequest [Setup] Create new App Instance CreateAppInstanceRequest Set Test Variable ${NEW_APP_INSTANCE_ID} ${response['body']['id']} Instantiate App Request ${NEW_APP_INSTANCE_ID} InstantiateAppRequest @@ -114,8 +114,8 @@ TC_MEC_MEC010p2_MEX_LCM_005_OK TC_MEC_MEC010p2_MEX_LCM_005_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_005_BR ... Check that MEC API provider service fails to instantiate an App Instance when it receives a malformed request - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.6.3.1 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.7.2-1 #InstantiateAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.6.3.1 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.7.2-1 #InstantiateAppRequest Instantiate App Request ${APP_INSTANCE_ID} InstantiateAppRequestBadRequest Check HTTP Response Status Code Is 400 @@ -124,8 +124,8 @@ TC_MEC_MEC010p2_MEX_LCM_005_BR TC_MEC_MEC010p2_MEX_LCM_005_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_005_NF ... Check that MEC API provider service fails to instantiate an App Instance when it receives a request related to a not existing App Instance - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.6.3.1 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.7.2-1 #InstantiateAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.6.3.1 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.7.2-1 #InstantiateAppRequest [Setup] Delete APP Instance ${NOT_EXISTING_APP_INSTANCE_ID} Instantiate App Request ${NOT_EXISTING_APP_INSTANCE_ID} InstantiateAppRequest Check HTTP Response Status Code Is 404 @@ -135,8 +135,8 @@ TC_MEC_MEC010p2_MEX_LCM_005_NF TC_MEC_MEC010p2_MEX_LCM_006_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_006_OK ... Check that MEC API provider service terminates an App Instance when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.7.3.1 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.9.2-1 #TerminateAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.7.3.1 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.9.2-1 #TerminateAppRequest [Setup] Create and Instantiate App Instance CreateAppInstanceRequest InstantiateAppRequest Sleep 5 ##Change it according to your need Terminate App Request ${APP_ID} TerminateAppRequest @@ -148,8 +148,8 @@ TC_MEC_MEC010p2_MEX_LCM_006_OK TC_MEC_MEC010p2_MEX_LCM_006_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_006_OK ... Check that MEC API provider service fails to terminate an App Instance when it receives a malformed request - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.7.3.1 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.9.2-1 #TerminateAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.7.3.1 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.9.2-1 #TerminateAppRequest Terminate App Request ${APP_INSTANCE_ID} TerminateAppRequestBadRequest Check HTTP Response Status Code Is 400 @@ -157,8 +157,8 @@ TC_MEC_MEC010p2_MEX_LCM_006_BR TC_MEC_MEC010p2_MEX_LCM_006_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_006_NF ... Check that MEC API provider service fails to terminate an App Instance when it receives a request related to a not existing App Instance - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.7.3.1 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.9.2-1 #TerminateAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.7.3.1 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.9.2-1 #TerminateAppRequest [Setup] Delete APP Instance ${NOT_EXISTING_APP_INSTANCE_ID} Terminate App Request ${NOT_EXISTING_APP_INSTANCE_ID} TerminateAppRequest Check HTTP Response Status Code Is 404 @@ -170,8 +170,8 @@ TC_MEC_MEC010p2_MEX_LCM_007_OK ... The following combinations INITIAL_STATE - FINAL_STATE are supported: ... - STARTED/STOP ... - STOPPED/STARTCheck that MEC API provider service terminates an App Instance when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.8.3.1 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.8.2-1 #OperateAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.8.3.1 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.8.2-1 #OperateAppRequest [Setup] Create and Instantiate App Instance CreateAppInstanceRequest InstantiateAppRequest ##TODO sleep for a while because the instantiation is not immediate Operate App Request ${APP_INSTANCE_ID} OperateAppRequest @@ -183,16 +183,16 @@ TC_MEC_MEC010p2_MEX_LCM_007_OK TC_MEC_MEC010p2_MEX_LCM_007_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_007_BR ... Check that MEC API provider service fails to operate on an App Instance when it receives a malformed request - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.8.3.1 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.8.2-1 #OperateAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.8.3.1 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.8.2-1 #OperateAppRequest Operate App Request ${APP_INSTANCE_ID} OperateAppRequestBadRequest Check HTTP Response Status Code Is 400 TC_MEC_MEC010p2_MEX_LCM_007_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_007_NF ... Check that MEC API provider service fails to change the status of an App Instance when it receives a request related to a not existing App Instance - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.8.3.1 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.8.2-1 #OperateAppRequest + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.8.3.1 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.8.2-1 #OperateAppRequest Operate App Request ${NOT_EXISTING_APP_INSTANCE_ID} OperateAppRequest Check HTTP Response Status Code Is 404 @@ -201,8 +201,8 @@ TC_MEC_MEC010p2_MEX_LCM_007_NF TC_MEC_MEC010p2_MEX_LCM_008_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_008_OK ... Check that MEC API provider service retrieves info about LCM Operation Occurrence on App Instances when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.9.3.2 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.13.2-1 #AppLcmOpOcc + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.9.3.2 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.13.2-1 #AppLcmOpOcc [Setup] Create and Instantiate App Instance CreateAppInstanceRequest InstantiateAppRequest GET all App LCM op Occs Check HTTP Response Status Code Is 200 @@ -214,8 +214,8 @@ TC_MEC_MEC010p2_MEX_LCM_008_OK TC_MEC_MEC010p2_MEX_LCM_009_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_009_OK ... Check that MEC API provider service retrieves info about LCM Operation Occurrence on an App Instance when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.10.3.2 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.13.2-1 #AppLcmOpOcc + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.10.3.2 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.13.2-1 #AppLcmOpOcc [Setup] Create and Instantiate App Instance CreateAppInstanceRequest InstantiateAppRequest GET App LCM op Occ ${APP_LCM_OP_OCCS_ID} Check HTTP Response Status Code Is 200 @@ -226,8 +226,8 @@ TC_MEC_MEC010p2_MEX_LCM_009_OK TC_MEC_MEC010p2_MEX_LCM_009_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_009_NF ... Check that MEC API provider service sends an error when it receives a query for a not existing LCM Operation Occurence - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.10.3.2 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.13.2-1 #AppLcmOpOcc + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.10.3.2 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.13.2-1 #AppLcmOpOcc GET App LCM op Occ ${NOT_EXISTING_APP_LCM_OP_OCC_ID} Check HTTP Response Status Code Is 404 @@ -238,15 +238,15 @@ TC_MEC_MEC010p2_MEX_LCM_010_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_010_OK ... Check that MEC API provider service creates a LCM Subscription when requested, where the subscription request can ... have SUBSCRIPTION_TYPE AppInstanceStateChangeSubscription or AppLcmOpOccStateChangeSubscription - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.3.3.1, - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.12.2-1 #AppInstSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.14.2-1 #AppLcmOpOccSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.25.2-1 #AppInstIdCreationSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.28.2-1 #AppInstIdDeletionSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.3.3.1, + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.12.2-1 #AppInstSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.14.2-1 #AppLcmOpOccSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.25.2-1 #AppInstIdCreationSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.28.2-1 #AppInstIdDeletionSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo Send a request for a subscription AppInstSubscriptionRequest Check HTTP Response Status Code Is 201 @@ -263,15 +263,15 @@ TC_MEC_MEC010p2_MEX_LCM_010_OK TC_MEC_MEC010p2_MEX_LCM_010_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_010_BR ... Check that MEC API provider service sends an error when it receives a malformed request to create a LCM Subscription - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.3.3.1, - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.12.2-1 #AppInstSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.14.2-1 #AppLcmOpOccSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.25.2-1 #AppInstIdCreationSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.28.2-1 #AppInstIdDeletionSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.3.3.1, + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.12.2-1 #AppInstSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.14.2-1 #AppLcmOpOccSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.25.2-1 #AppInstIdCreationSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.28.2-1 #AppInstIdDeletionSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo Send a request for a subscription AppInstSubscriptionRequestBadRequest Check HTTP Response Status Code Is 400 @@ -281,15 +281,15 @@ TC_MEC_MEC010p2_MEX_LCM_010_BR TC_MEC_MEC010p2_MEX_LCM_011_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_011_OK ... Check that MEC API provider service sends the list of LCM Subscriptions when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.3.3.2, - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.12.2-1 #AppInstSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.14.2-1 #AppLcmOpOccSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.25.2-1 #AppInstIdCreationSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.28.2-1 #AppInstIdDeletionSubscriptionRequest - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.3.3.2, + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.12.2-1 #AppInstSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.14.2-1 #AppLcmOpOccSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.25.2-1 #AppInstIdCreationSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.28.2-1 #AppInstIdDeletionSubscriptionRequest + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo [Setup] Send a request for a subscription AppInstSubscriptionRequest Set Test Variable ${SUB_ID} ${response['body']['id']} @@ -302,11 +302,11 @@ TC_MEC_MEC010p2_MEX_LCM_011_OK TC_MEC_MEC010p2_MEX_LCM_012_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_012_OK ... Check that MEC API provider service sends the information about an existing LCM subscription when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.4.3.2 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.4.3.2 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo [Setup] Send a request for a subscription AppInstSubscriptionRequest Set Test Variable ${SUB_ID} ${response['body']['id']} Send a request for retrieving a subscription ${SUB_ID} @@ -318,11 +318,11 @@ TC_MEC_MEC010p2_MEX_LCM_012_OK TC_MEC_MEC010p2_MEX_LCM_012_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_012_NF ... Check that MEC API provider service sends an error when it receives a query for a not existing LCM Subscription - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.4.3.2 - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.4.3.2 + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.10.2-1 #AppInstSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.15.2-1 #AppLcmOpOccSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.26.2-1 #AppInstIdCreationSubscriptionInfo + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.29.2-1 #AppInstIdDeletionSubscriptionInfo [Setup] Send a request for deleting a subscription ${NOT_EXISTING_SUBSCRIPTION_ID} Send a request for retrieving a subscription ${NOT_EXISTING_SUBSCRIPTION_ID} Check HTTP Response Status Code Is 404 @@ -331,7 +331,7 @@ TC_MEC_MEC010p2_MEX_LCM_012_NF TC_MEC_MEC010p2_MEX_LCM_013_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_013_OK ... Check that MEC API provider service delete an existing LCM Subscription when requested - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.3.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.3.3.4 [Setup] Send a request for a subscription AppInstSubscriptionRequest Set Test Variable ${SUB_ID} ${response['body']['id']} @@ -342,7 +342,7 @@ TC_MEC_MEC010p2_MEX_LCM_013_OK TC_MEC_MEC010p2_MEX_LCM_013_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_013_NF ... Check that MEC API provider service sends an error when it receives a deletion request for a not existing LCM Subscription - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.3.3.4 + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.3.3.4 [Setup] Send a request for deleting a subscription ${NOT_EXISTING_SUBSCRIPTION_ID} Send a request for deleting a subscription ${NOT_EXISTING_SUBSCRIPTION_ID} @@ -353,8 +353,8 @@ TC_MEC_MEC010p2_MEX_LCM_013_NF TC_MEC_MEC010p2_MEX_LCM_014_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_014_OK ... Check that MEC API provider service cancels an on going LCM Operation - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.11.3.1", - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.32.2-1" #CancelMode + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.11.3.1", + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.32.2-1" #CancelMode [Setup] Create and Instantiate App Instance CreateAppInstanceRequest InstantiateAppRequest Cancel on going LCM Operation ${APP_LCM_OP_OCCS_ID} CancelMode Check HTTP Response Status Code Is 202 @@ -365,8 +365,8 @@ TC_MEC_MEC010p2_MEX_LCM_014_OK TC_MEC_MEC010p2_MEX_LCM_014_BR [Documentation] TP_MEC_MEC010p2_MEX_LCM_014_BR ... Check that MEC API provider service fails to cancel an on going LCM Operation when it receives a malformed request - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.11.3.1", - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.32.2-1" #CancelMode + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.11.3.1", + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.32.2-1" #CancelMode [Setup] Create and Instantiate App Instance CreateAppInstanceRequest InstantiateAppRequest Cancel on going LCM Operation ${APP_LCM_OP_OCCS_ID} CancelModeBadRequest Check HTTP Response Status Code Is 400 @@ -376,8 +376,8 @@ TC_MEC_MEC010p2_MEX_LCM_014_BR TC_MEC_MEC010p2_MEX_LCM_014_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_014_NF ... Check that MEC API provider service fails to cancel an on going LCM Operation when it receives a request related to a not existing application LCM Operation - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.11.3.1", - ... ETSI GS MEC 010-2 3.1.1, table 6.2.2.32.2-1" #CancelMode + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.11.3.1", + ... ETSI GS MEC 010-2 3.2.1, table 6.2.2.32.2-1" #CancelMode Cancel on going LCM Operation ${NOT_EXISTING_APP_LCM_OP_OCC_ID} CancelMode Check HTTP Response Status Code Is 404 @@ -386,7 +386,7 @@ TC_MEC_MEC010p2_MEX_LCM_014_NF TC_MEC_MEC010p2_MEX_LCM_015_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_015_OK ... Check that MEC API provider service makes failed an on going LCM Operation - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.12.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.12.3.1 [Setup] Create and Instantiate App Instance CreateAppInstanceRequest InstantiateAppRequest Fail on going LCM Operation ${APP_LCM_OP_OCCS_ID} Check HTTP Response Status Code Is 200 @@ -397,7 +397,7 @@ TC_MEC_MEC010p2_MEX_LCM_015_OK TC_MEC_MEC010p2_MEX_LCM_015_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_015_NF ... Check that MEC API provider service makes failed an on going LCM Operation - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.12.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.12.3.1 Fail on going LCM Operation ${NOT_EXISTING_APP_LCM_OP_OCC_ID} Check HTTP Response Status Code Is 404 @@ -405,7 +405,7 @@ TC_MEC_MEC010p2_MEX_LCM_015_NF TC_MEC_MEC010p2_MEX_LCM_016_OK [Documentation] TP_MEC_MEC010p2_MEX_LCM_016_OK ... Check that MEC API provider service retries an on going LCM Operation - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.13.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.13.3.1 [Setup] Create and Instantiate App Instance CreateAppInstanceRequest InstantiateAppRequest Retry on going LCM Operation ${APP_LCM_OP_OCC_ID} Check HTTP Response Status Code Is 202 @@ -415,7 +415,7 @@ TC_MEC_MEC010p2_MEX_LCM_016_OK TC_MEC_MEC010p2_MEX_LCM_016_NF [Documentation] TP_MEC_MEC010p2_MEX_LCM_016_NF ... Check that MEC API provider service fails to retry an LCM Operation when it receives a request related to a not existing application LCM Operation - ... ETSI GS MEC 010-2 3.1.1, clause 7.4.13.3.1 + ... ETSI GS MEC 010-2 3.2.1, clause 7.4.13.3.1 Retry on going LCM Operation ${NOT_EXISTING_APP_LCM_OP_OCC_ID} Check HTTP Response Status Code Is 404 diff --git a/MEC011/SRV/APPSAQ/PlatAppServices.robot b/MEC011/SRV/APPSAQ/PlatAppServices.robot index 77813400d2356413c3c765be4244f5d49a18793f..1847fe8324b7e1f344733f7eacec3088ba297ced 100644 --- a/MEC011/SRV/APPSAQ/PlatAppServices.robot +++ b/MEC011/SRV/APPSAQ/PlatAppServices.robot @@ -19,9 +19,9 @@ TC_MEC_MEC011_SRV_APPSAQ_001_OK ... Check that the IUT responds with a list of available MEC services ... for a given application instance when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.5, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.6.3.1 + ... Reference ETSI GS MEC 011 clause 5.2.5, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.6.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} Set Suite Variable ${SERVICE_ID} ${response['body']['serInstanceId']} @@ -36,9 +36,9 @@ TC_MEC_MEC011_SRV_APPSAQ_001_BR ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI G3.2.1 011 3.2.1, clause 5.2.5, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.6.3.1 + ... Reference ETSI G3.3.1 011 clause 5.2.5, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.6.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES # Wrong query parameter name should trigger an error response. Get a list of mecService of an application instance with parameters ${APP_INSTANCE_ID} ${INSTANCE_ID} ${FAKE_INSTANCE_ID_VALUE} @@ -50,9 +50,9 @@ TC_MEC_MEC011_SRV_APPSAQ_002_OK ... Check that the IUT notifies the authorised relevant (subscribed) application ... instances when a new service for a given application instance is registered ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.5, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.6.3.4 + ... Reference ETSI GS MEC 011 clause 5.2.5, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.6.3.4 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} @@ -70,9 +70,9 @@ TC_MEC_MEC011_SRV_APPSAQ_002_BR ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.5, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.6.3.4 + ... Reference ETSI GS MEC 011 clause 5.2.5, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.6.3.4 [Tags] PIC_MEC_PLAT PIC_SERVICES Create new service ServiceInfoError ${APP_INSTANCE_ID} Check HTTP Response Status Code Is 400 @@ -83,9 +83,9 @@ TC_MEC_MEC011_SRV_APPSAQ_002_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.5, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.6.3.4 + ... Reference ETSI GS MEC 011 clause 5.2.5, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.6.3.4 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Remove individual service ${NON_EXISTENT_APP_INSTANCE_ID} ${SERVICE_ID} Create new service ServiceInfo ${NON_EXISTENT_APP_INSTANCE_ID} @@ -97,9 +97,9 @@ TC_MEC_MEC011_SRV_APPSAQ_003_OK ... Check that the IUT responds with the information on a specific service ... for a given application instance when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.5, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.7.3.1 + ... Reference ETSI GS MEC 011 clause 5.2.5, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.7.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} Set Suite Variable ${SERVICE_ID} ${response['body']['serInstanceId']} @@ -115,9 +115,9 @@ TC_MEC_MEC011_SRV_APPSAQ_003_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.5, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.7.3.1 + ... Reference ETSI GS MEC 011 clause 5.2.5, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.7.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Remove individual service ${NON_EXISTENT_APP_INSTANCE_ID} ${SERVICE_ID} Get individual service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} @@ -129,9 +129,9 @@ TC_MEC_MEC011_SRV_APPSAQ_004_OK ... Check that the IUT updates a service information for a given ... application instance when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.4, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.7.3.2 + ... Reference ETSI GS MEC 011 clause 5.2.4, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.7.3.2 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} Set Suite Variable ${SERVICE_ID} ${response['body']['serInstanceId']} @@ -147,9 +147,9 @@ TC_MEC_MEC011_SRV_APPSAQ_004_BR ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.4, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.7.3.2 + ... Reference ETSI GS MEC 011 clause 5.2.4, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.7.3.2 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} Set Suite Variable ${SERVICE_ID} ${response['body']['serInstanceId']} @@ -163,9 +163,9 @@ TC_MEC_MEC011_SRV_APPSAQ_004_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.4, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.7.3.2 + ... Reference ETSI GS MEC 011 clause 5.2.4, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.7.3.2 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Remove individual service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} Update service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} ServiceInfoUpdated @@ -177,9 +177,9 @@ TC_MEC_MEC011_SRV_APPSAQ_004_PF ... Check that the IUT responds with an error when ... a request sent by a MEC Application doesn't comply with a required condition ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.4, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 8.2.7.3.2 + ... Reference ETSI GS MEC 011 clause 5.2.4, + ... ETSI GS MEC 011 clause 8.1.2.2, + ... ETSI GS MEC 011 clause 8.2.7.3.2 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} Set Suite Variable ${SERVICE_ID} ${response['body']['serInstanceId']} @@ -193,7 +193,7 @@ TC_MEC_MEC011_SRV_APPSAQ_005_OK ... Check that the IUT executes the deletion of a service ... for a given application instance when requested by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 8.2.7.3.5 + ... Reference ETSI GS MEC 011 clause 8.2.7.3.5 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} Set Suite Variable ${SERVICE_ID} ${response['body']['serInstanceId']} @@ -206,7 +206,7 @@ TC_MEC_MEC011_SRV_APPSAQ_005_NF ... Check that the IUT responds with an error when ... a request for deletion of a unknown service is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 8.2.7.3.5 + ... Reference ETSI GS MEC 011 clause 8.2.7.3.5 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Remove individual service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} Remove individual service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} diff --git a/MEC011/SRV/APPSUB/PlatAppSubscriptions.robot b/MEC011/SRV/APPSUB/PlatAppSubscriptions.robot index 80e7e909d031a9b5c0737b2a722438fa55146199..9a778972fb8167d249938c11a4e8fe27385b3417 100644 --- a/MEC011/SRV/APPSUB/PlatAppSubscriptions.robot +++ b/MEC011/SRV/APPSUB/PlatAppSubscriptions.robot @@ -18,8 +18,8 @@ TC_MEC_MEC011_SRV_APPSUB_001_OK ... Check that the IUT responds with a list of subscriptions for notifications ... on services availability when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.3.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 7.2.3.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new subscription ${APP_INSTANCE_ID} AppTerminationNotificationSubscription ${elements} = Split String ${response['body']['_links']['self']['href']} / @@ -35,8 +35,8 @@ TC_MEC_MEC011_SRV_APPSUB_001_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.3.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 7.2.3.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Remove subscription ${NON_EXISTENT_APP_INSTANCE_ID} ${SUB_ID} Get Subscriptions list ${NON_EXISTENT_APP_INSTANCE_ID} @@ -48,8 +48,8 @@ TC_MEC_MEC011_SRV_APPSUB_002_OK ... Check that the IUT acknowledges the subscription by a MEC Application ... to notifications on service availability events ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.3.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 7.2.3.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create new subscription ${APP_INSTANCE_ID} AppTerminationNotificationSubscription @@ -69,8 +69,8 @@ TC_MEC_MEC011_SRV_APPSUB_002_BR ... Check that the IUT responds with the information on a specific subscription ... when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.3.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 7.2.3.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create new subscription ${APP_INSTANCE_ID} AppTerminationNotificationSubscriptionBR Check HTTP Response Status Code Is 400 @@ -81,8 +81,8 @@ TC_MEC_MEC011_SRV_APPSUB_003_OK ... Check that the IUT responds with the information on a specific subscription ... when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.4.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 7.2.4.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new subscription ${APP_INSTANCE_ID} AppTerminationNotificationSubscription ${elements} = Split String ${response['body']['_links']['self']['href']} / @@ -98,8 +98,8 @@ TC_MEC_MEC011_SRV_APPSUB_003_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.4.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 7.2.4.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Remove subscription ${APP_INSTANCE_ID} ${NON_EXISTENT_SUBSCRIPTION_ID} Get individual subscription ${APP_INSTANCE_ID} ${NON_EXISTENT_SUBSCRIPTION_ID} @@ -111,8 +111,8 @@ TC_MEC_MEC011_SRV_APPSUB_004_OK ... Check that the IUT acknowledges the unsubscribe from service availability event notifications ... when commanded by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.4.3.5" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 7.2.4.3.5" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new subscription ${APP_INSTANCE_ID} AppTerminationNotificationSubscription ${elements} = Split String ${response['body']['_links']['self']['href']} / @@ -126,8 +126,8 @@ TC_MEC_MEC011_SRV_APPSUB_004_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.4.3.5" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 7.2.4.3.5" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Remove subscription ${NON_EXISTENT_APP_INSTANCE_ID} ${SUBSCRIPTION_ID} Remove subscription ${NON_EXISTENT_APP_INSTANCE_ID} ${SUBSCRIPTION_ID} diff --git a/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json b/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json index 29752270fb5e785e3eb16b002764590fe6c954a7..b8d9ad2c8c19cbad6a15b93b50ef02a8b48c781b 100644 --- a/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json +++ b/MEC011/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json @@ -1,10 +1,10 @@ { - "subscriptionType": "AppTerminationNotificationSubscription", + "subscriptionType": "SerAvailabilityNotificationSubscription", "callbackReference": "https://somewhere.com/mecAppSuptApi/example", "_links": { "self": { "href": "https://somewhere.com/mecAppSuptApi/example" } }, - "appInstanceId": "f1e4d448-e277-496b-bf63-98391cfd20fb" + "appInstanceId": "298b2c0c-7efa-45d3-8b47-8ab3c009b845" } \ No newline at end of file diff --git a/MEC011/SRV/CAPIF/MecProfileCapif.robot b/MEC011/SRV/CAPIF/MecProfileCapif.robot new file mode 100644 index 0000000000000000000000000000000000000000..f906cc7bef860143c749024c3e5fcaaf7d7dbaf4 --- /dev/null +++ b/MEC011/SRV/CAPIF/MecProfileCapif.robot @@ -0,0 +1,574 @@ +*** Settings *** + +Documentation +... A test suite for validating Common API Framework (CAPIF) operations. + +Resource ../../../GenericKeywords.robot +Resource environment/variables.txt +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem + +Default Tags TC_MEC_SRV_TRANS + + +*** Test Cases *** +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_001_OK_01 + [Documentation] + ... Check that the IUT responds with all service APIs when + ... queried by a MEC Application - No filter + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.1 + ... ETSI GS MEC 011 clause 9.2.3.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get all services APIs + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ServiceApiDescriptionList + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_001_OK_02 + [Documentation] + ... Check that the IUT responds with all service APIs when + ... queried by a MEC Application - Filter on apiName + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.1 + ... ETSI GS MEC 011 clause 9.2.3.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get services APIs with query params apiName=${API_NAME_QUERY_PARAM} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ServiceApiDescriptionList + FOR ${element} IN @{response['body']} + Should Be Equal As Strings ${element}[apiName] ${API_NAME_QUERY_PARAM} + END + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_001_OK_03 + [Documentation] + ... Check that the IUT responds with all service APIs when + ... queried by a MEC Application - Filter on apiId + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.1 + ... ETSI GS MEC 011 clause 9.2.3.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get services APIs with query params apiId=${API_ID_QUERY_PARAM} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ServiceApiDescriptionList + FOR ${element} IN @{response['body']} + Should Be Equal As Strings ${element}[apiId] ${API_ID_QUERY_PARAM} + END + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_001_OK_04 + [Documentation] + ... Check that the IUT responds with all service APIs when + ... queried by a MEC Application - Filter on apiId and apiName + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.1 + ... ETSI GS MEC 011 clause 9.2.3.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get services APIs with query params apiId=${API_ID_QUERY_PARAM}&apiName=${API_NAME_QUERY_PARAM} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ServiceApiDescriptionList + FOR ${element} IN @{response['body']} + Should Be Equal As Strings ${element}[apiId] ${API_ID_QUERY_PARAM} + Should Be Equal As Strings ${element}[apiName] ${API_NAME_QUERY_PARAM} + END + + + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_001_BR + [Documentation] + ... Check that the IUT responds with an error + ... when applying a malformed filter + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.1 + ... ETSI GS MEC 011 clause 9.2.3.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get services APIs with query params badQueryParam=${API_ID_QUERY_PARAM} + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_001_NF + [Documentation] + ... Check that the IUT responds with an error + ... when applying a filter on an unknown apiName + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.1 + ... ETSI GS MEC 011 clause 9.2.3.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get services APIs with query params apiName=${UNKNOWN_MEC_SRV_SER_NAME} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_002_OK + [Documentation] + ... Check that the IUT responds with all service APIs + ... for a specific apfId when queried by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.1 + ... ETSI GS MEC 011 clause 9.2.4.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get published services APIs ${MEC_SRV_INSTANCE_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ServiceApiDescriptionList + FOR ${element} IN @{response['body']} + Should Be Equal As Strings ${element}[apiId] ${MEC_SRV_INSTANCE_ID} + END + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_002_NF + [Documentation] + ... Check that the IUT responds with an error when + ... applying a filter on an unknown apfId + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.1 + ... ETSI GS MEC 011 clause 9.2.4.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get published services APIs ${NOT_EXISTING_MEC_SRV_INSTANCE_ID} + Check HTTP Response Status Code Is 404 + + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_003_OK + [Documentation] + ... Check that the IUT acknowledges the publishing of a new API when + ... queried by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.2 + ... ETSI GS MEC 011 clause 9.2.4.3.4 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Publish new APIs ${MEC_SRV_INSTANCE_ID} serviceApiDescription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is ServiceApiDescription + ${MEC_SRV_SER_NAME} Get value entry from JSON file ServiceApiDescription apiName + Check Response Contains ${response['body']} apiId ${MEC_SRV_SER_INSTANCE_ID} + Check Response Contains ${response['body']} apiName ${MEC_SRV_SER_NAME} + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_003_BR + [Documentation] + ... Check that the IUT responds with an error when incorrect parameters were sent by a MEC + ... Application - supportedFeatures shall be present + ... + ... Reference ETSI GS MEC 011 clause 9.0" + ... "ETSI GS MEC 011 clause 9.1.2.2" + ... "ETSI GS MEC 011 clause 9.2.4.3.4" + ... "ETSI TS 129 222 V18.6.0 (2024-07) Table 8.2.4.2.2-1: Definition of type ServiceAPIDescription + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Publish new APIs ${MEC_SRV_INSTANCE_ID} serviceApiDescriptionBR + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_004_OK + [Documentation] + ... Check that the IUT responds with a serviceAPIDescription + ... when queried by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.2 + ... ETSI GS MEC 011 clause 9.2.5.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get published APIs ${MEC_SRV_INSTANCE_ID} ${SERVICE_API_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ServiceApiDescription + Check Response Contains ${response['body']} apiId ${SERVICE_API_ID} + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_004_NF_01 + [Documentation] + ... Check that the IUT responds with an error when + ... applying a filter on an unknown apfId + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.2 + ... ETSI GS MEC 011 clause 9.2.5.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get published APIs ${NOT_EXISTING_MEC_SRV_INSTANCE_ID} ${SERVICE_API_ID} + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_004_NF_02 + [Documentation] + ... Check that the IUT responds with an error + ... when applying a filter on an unknown serviceApiId + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.2 + ... ETSI GS MEC 011 clause 9.2.5.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Get published APIs ${MEC_SRV_INSTANCE_ID} ${UNKNOWN_SERVICE_API_ID} + Check HTTP Response Status Code Is 404 + + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_005_OK + [Documentation] + ... Check that the IUT acknowledges the update of a CAPIF subscription request + ... when requested by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.3.1 + ... ETSI GS MEC 011 clause 9.2.6.3.2 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Replace existing CAPIF subscription ${MEC_SRV_INSTANCE_ID} ${SUBSCRIPTION_ID} eventSubscriptionUpdate + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is EventSubscription + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_005_NF + [Documentation] + ... Check that the IUT acknowledges the update of a CAPIF subscription request + ... when requested by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.3.1 + ... ETSI GS MEC 011 clause 9.2.6.3.2 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Replace existing CAPIF subscription ${MEC_SRV_INSTANCE_ID} ${UNKNOWN_SUBSCRIPTION_ID} eventSubscriptionUpdate + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_006_OK + [Documentation] + ... Check that the IUT changes the publishing of a new API + ... when queried by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.3 + ... ETSI GS MEC 011 clause 9.2.5.3.2 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Replace published APIs ${MEC_SRV_INSTANCE_ID} ${SERVICE_API_ID} serviceApiDescriptionUpdate + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ServiceApiDescription + ${MEC_SRV_SER_NAME} Get value entry from JSON file ServiceApiDescription apiName + Check Response Contains ${response['body']} apiId ${MEC_SRV_SER_INSTANCE_ID} + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_006_NF + [Documentation] + ... Check that the IUT responds with an error + ... when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.3 + ... ETSI GS MEC 011 clause 9.2.5.3.2 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Replace published APIs ${MEC_SRV_INSTANCE_ID} ${UNKNOWN_SERVICE_API_ID} serviceApiDescriptionUpdate + Check HTTP Response Status Code Is 404 + + + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_007_OK + [Documentation] + ... Check that the IUT acknowledges the removing of a published API + ... when queried by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.2 + ... ETSI GS MEC 011 clause 9.2.5.3.5 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Remove published APIs ${MEC_SRV_INSTANCE_ID} ${SERVICE_API_ID} + Check HTTP Response Status Code Is 204 + + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_007_NF + [Documentation] + ... Check that the IUT responds with an error + ... when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.2.2 + ... ETSI GS MEC 011 clause 9.2.5.3.5 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Remove published APIs ${MEC_SRV_INSTANCE_ID} ${UNKNOWN_SERVICE_API_ID} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_008_OK + [Documentation] + ... Check that the IUT acknowledges the publishing of a new API when + ... queried by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.3.1 + ... ETSI GS MEC 011 clause 9.2.6.3.4 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create CAPIF subscription ${MEC_SRV_INSTANCE_ID} eventSubscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is EventSubscription + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_008_NF + [Documentation] + ... Check that the IUT responds with an error + ... when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.3.1 + ... ETSI GS MEC 011 clause 9.2.6.3.4 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create CAPIF subscription ${UNKNOWN_MEC_SRV_INSTANCE_ID} eventSubscription + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_009_OK + [Documentation] + ... Check that the IUT acknowledges the update of a CAPIF subscription request + ... when requested by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.3.1 + ... ETSI GS MEC 011 clause 9.2.6.3.2 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Replace existing CAPIF subscription ${MEC_SRV_INSTANCE_ID} ${SUBSCRIPTION_ID} eventSubscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is EventSubscription + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_009_NF + [Documentation] + ... Check that the IUT acknowledges the changes of a CAPIF subscription request + ... when requested by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.3.1 + ... ETSI GS MEC 011 clause 9.2.6.3.2 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Replace existing CAPIF subscription ${MEC_SRV_INSTANCE_ID} ${UNKNOWN_SUBSCRIPTION_ID} eventSubscription + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_010_OK + [Documentation] + ... Check that the IUT acknowledges the changes of a CAPIF subscription request + ... when requested by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.3.1 + ... ETSI GS MEC 011 clause 9.2.6.3.2 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Update existing CAPIF subscription ${MEC_SRV_INSTANCE_ID} ${SUBSCRIPTION_ID} eventSubscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is EventSubscription + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_010_NF + [Documentation] + ... Check that the IUT responds with an error + ... when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.3.1 + ... ETSI GS MEC 011 clause 9.2.6.3.2 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Update existing CAPIF subscription ${MEC_SRV_INSTANCE_ID} ${UNKNOWN_SUBSCRIPTION_ID} eventSubscription + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_011_OK + [Documentation] + ... Check that the IUT acknowledges the cancellation of a CAPIF subscription + ... when requested by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.3.1 + ... ETSI GS MEC 011 clause 9.2.6.3.4 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Delete existing CAPIF subscription ${MEC_SRV_INSTANCE_ID} ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 204 + + +TC_MEC_MEC011_SRV_MEC_PROFILE_FOR_CAPIF_011_NF + [Documentation] + ... Check that the IUT responds with an error + ... when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... + ... Reference ETSI GS MEC 011 clause 9.0 + ... ETSI GS MEC 011 clause 9.1.3.1 + ... ETSI GS MEC 011 clause 9.2.6.3.4 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Delete existing CAPIF subscription ${MEC_SRV_INSTANCE_ID} ${UNKNOWN_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + +*** Keywords *** +Get all services APIs + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + Get ${apiRoot}/${apiName}/${apiVersion}/allServiceAPIs + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get services APIs with query params + [Arguments] ${query_params} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + Get ${apiRoot}/${apiName}/${apiVersion}/allServiceAPIs?${query_params} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +##Published APIs management Keywords +Get published services APIs + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + Get ${apiRoot}/${publApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/service-apis + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Publish new APIs + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + + Post ${apiRoot}/${publApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/service-apis ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get published APIs + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} ${SERVICE_API_ID} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + Post ${apiRoot}/${publApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/service-apis/${SERVICE_API_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Replace published APIs wrong HTTP method + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} ${SERVICE_API_ID} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + Put ${apiRoot}/${publApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/service-apis/${SERVICE_API_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Replace published APIs + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} ${SERVICE_API_ID} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + + Put ${apiRoot}/${publApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/service-apis/${SERVICE_API_ID} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Update published APIs + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} ${SERVICE_API_ID} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + + Patch ${apiRoot}/${publApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/service-apis/${SERVICE_API_ID} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Remove published APIs + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} ${SERVICE_API_ID} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + + Delete ${apiRoot}/${publApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/service-apis/${SERVICE_API_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +##CAPIF Subscription management Keywords +Create CAPIF subscription + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Post ${apiRoot}/${capifSubApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Replace existing CAPIF subscription + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} ${SUBSCRIPTION_ID} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Put ${apiRoot}/${capifSubApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/subscriptions/${SUBSCRIPTION_ID} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Update existing CAPIF subscription + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} ${SUBSCRIPTION_ID} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Patch ${apiRoot}/${capifSubApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/subscriptions/${SUBSCRIPTION_ID} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Delete existing CAPIF subscription + [Arguments] ${MEC_SRV_SER_INSTANCE_ID} ${SUBSCRIPTION_ID} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Type":"*/*"} + Delete ${apiRoot}/${capifSubApiName}/${apiVersion}/${MEC_SRV_SER_INSTANCE_ID}/subscriptions/${SUBSCRIPTION_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC011/SRV/CAPIF/environment/variables.txt b/MEC011/SRV/CAPIF/environment/variables.txt new file mode 100644 index 0000000000000000000000000000000000000000..22d2b3d9b38d825fb5f3d1b4b3a1435b93ff0431 --- /dev/null +++ b/MEC011/SRV/CAPIF/environment/variables.txt @@ -0,0 +1,24 @@ +*** Variables *** +# Generic variables +${SCHEMA} http +${HOST} 127.0.0.1 +${PORT} 8081 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} service-apis +${publApiName} published-apis +${capifSubApiName} capif-events +${apiVersion} v1 + +# Specific variables +${API_NAME_QUERY_PARAM} mec015-1 +${API_ID_QUERY_PARAM} mec015-1 +${UNKNOWN_MEC_SRV_SER_NAME} UNKNOWN_MEC_SRV_SER_NAME +${MEC_SRV_INSTANCE_ID} MEC_SRV_SER_INSTANCE_ID +${NOT_EXISTING_MEC_SRV_INSTANCE_ID} NOT_EXISTING_MEC_SRV_INSTANCE_ID +${SERVICE_API_ID} SERVICE_API_ID +${UNKNOWN_SERVICE_API_ID} UNKNOWN_SERVICE_API_ID +${UNKNOWN_MEC_SRV_INSTANCE_ID} UNKNOWN_MEC_SRV_INSTANCE_ID +${SUBSCRIPTION_ID} SUBSCRIPTION_ID +${UNKNOWN_SUBSCRIPTION_ID} UNKNOWN_SUBSCRIPTION_ID diff --git a/MEC011/SRV/CAPIF/environment/variables_sandbox.txt b/MEC011/SRV/CAPIF/environment/variables_sandbox.txt new file mode 100644 index 0000000000000000000000000000000000000000..b90d130477ddd16f67a9810c87faf99b4b6a12ba --- /dev/null +++ b/MEC011/SRV/CAPIF/environment/variables_sandbox.txt @@ -0,0 +1,30 @@ +*** Variables *** + + +####Env variable for the ETSI MEC Sandbox +${SCHEMA} https +${HOST} try-mec.etsi.org +${PORT} 443 +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} /sbxnr8fp0o/mep1 +${apiName} service-apis +${apiVersion} v1 + + + +# Generic variables +${response} {} +${capifSubApiName} capif-events +${apiVersion} v1 + +# Specific variables +${API_NAME_QUERY_PARAM} mec015-1 +${API_ID_QUERY_PARAM} mec015-1 +${UNKNOWN_MEC_SRV_SER_NAME} UNKNOWN_MEC_SRV_SER_NAME +${MEC_SRV_INSTANCE_ID} MEC_SRV_SER_INSTANCE_ID +${NOT_EXISTING_MEC_SRV_INSTANCE_ID} NOT_EXISTING_MEC_SRV_INSTANCE_ID +${SERVICE_API_ID} SERVICE_API_ID +${UNKNOWN_SERVICE_API_ID} UNKNOWN_SERVICE_API_ID +${UNKNOWN_MEC_SRV_INSTANCE_ID} UNKNOWN_MEC_SRV_INSTANCE_ID +${SUBSCRIPTION_ID} SUBSCRIPTION_ID +${UNKNOWN_SUBSCRIPTION_ID} UNKNOWN_SUBSCRIPTION_ID diff --git a/MEC011/SRV/CAPIF/jsons/eventSubscription.json b/MEC011/SRV/CAPIF/jsons/eventSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..dfb5bc80957670eea2eed47488990918ad3605d8 --- /dev/null +++ b/MEC011/SRV/CAPIF/jsons/eventSubscription.json @@ -0,0 +1,9 @@ +{ + "events": [ + "CAPIFEvent", + "CAPIFEvent", + "CAPIFEvent" + ], + "notificationDestination": "http://someurl.com/someuri", + "requestTestNotification": false +} \ No newline at end of file diff --git a/MEC011/SRV/CAPIF/jsons/eventSubscriptionUpdate.json b/MEC011/SRV/CAPIF/jsons/eventSubscriptionUpdate.json new file mode 100644 index 0000000000000000000000000000000000000000..dfb5bc80957670eea2eed47488990918ad3605d8 --- /dev/null +++ b/MEC011/SRV/CAPIF/jsons/eventSubscriptionUpdate.json @@ -0,0 +1,9 @@ +{ + "events": [ + "CAPIFEvent", + "CAPIFEvent", + "CAPIFEvent" + ], + "notificationDestination": "http://someurl.com/someuri", + "requestTestNotification": false +} \ No newline at end of file diff --git a/MEC011/SRV/CAPIF/jsons/serviceApiDescription.json b/MEC011/SRV/CAPIF/jsons/serviceApiDescription.json new file mode 100644 index 0000000000000000000000000000000000000000..24134e0000991bff2a7511d65e73595e815ea7d8 --- /dev/null +++ b/MEC011/SRV/CAPIF/jsons/serviceApiDescription.json @@ -0,0 +1,11 @@ +{ + "apiName": "apiName", + "serviceAPICategory": "serviceAPICategory", + "apiId": "apiId", + "shareableInfo": {}, + "ccfId": "ccfId", + "apiSuppFeats": "apiSuppFeats", + "pubApiPath": "pubApiPath", + "apiStatus": "apiStatus", + "vendorSpecific-urn:etsi:mec:capifext:service-info": {} +} \ No newline at end of file diff --git a/MEC011/SRV/CAPIF/jsons/serviceApiDescriptionBR.json b/MEC011/SRV/CAPIF/jsons/serviceApiDescriptionBR.json new file mode 100644 index 0000000000000000000000000000000000000000..a800f66a89afa19f67b082d5b09a9783a18b1632 --- /dev/null +++ b/MEC011/SRV/CAPIF/jsons/serviceApiDescriptionBR.json @@ -0,0 +1,8 @@ +{ + "apiId": "apiId", + "apiName": "apiName", + "serviceAPICategory": "serviceAPICategory", + "aefProfiles": { + "aefProfile": "aefProfile" + } +} \ No newline at end of file diff --git a/MEC011/SRV/CAPIF/schemas/EventSubscription.json.schema b/MEC011/SRV/CAPIF/schemas/EventSubscription.json.schema new file mode 100644 index 0000000000000000000000000000000000000000..9ac3153f68aa710b08b2337e1b3d0aea9fa34f09 --- /dev/null +++ b/MEC011/SRV/CAPIF/schemas/EventSubscription.json.schema @@ -0,0 +1,32 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EventSubscription", + "type": "object", + "properties": { + "events": { + "type": "array", + "description": "The applicable subset of values from 'CAPIFEvent' mapped to MEC event types as defined in clause 9.1.6.1.", + "items": { + "type": "string" + } + }, + "eventReq": { + "type": "object", + "description": "See note. Optional attribute." + }, + "notificationDestination": { + "type": "string", + "description": "Shall be set to the value of the 'callbackReference' attribute in the 'SerAvailabilityNotificationSubscription' structure as defined in clause 8.1.3.2.", + "format": "uri" + }, + "requestTestNotification": { + "type": "boolean", + "description": "Aligned with ETSI GS MEC 009 [5], refers to a 3GPP-related mechanism." + }, + "websocketNotifConfig": { + "type": "object", + "description": "Aligned with ETSI GS MEC 009 [5], refers to a 3GPP-related mechanism." + } + }, + "required": ["events", "notificationDestination"] +} diff --git a/MEC011/SRV/CAPIF/schemas/ServiceApiDescription.json.schema b/MEC011/SRV/CAPIF/schemas/ServiceApiDescription.json.schema new file mode 100644 index 0000000000000000000000000000000000000000..444a7f024a71412989365791943bb955f2dd4de9 --- /dev/null +++ b/MEC011/SRV/CAPIF/schemas/ServiceApiDescription.json.schema @@ -0,0 +1,44 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "ServiceInfo", + "type": "object", + "properties": { + "apiName": { + "type": "string", + "description": "Shall be set to the value of the 'serName' attribute as defined in clause 8.1.2.2." + }, + "apiId": { + "type": "string", + "description": "If present, shall be set to the value of the 'serInstanceId' attribute as defined in clause 8.1.2.2." + }, + "shareableInfo": { + "type": "object", + "description": "See note." + }, + "serviceAPICategory": { + "type": "string", + "description": "Shall be set to the same value as the attribute 'id' in 'CategoryRef'." + }, + "ccfId": { + "type": "string", + "description": "See note." + }, + "apiSuppFeats": { + "type": "string", + "description": "See note." + }, + "pubApiPath": { + "type": "string", + "description": "See note." + }, + "apiStatus": { + "type": "string", + "description": "See note." + }, + "vendorSpecific-urn:etsi:mec:capifext:service-info": { + "type": "object", + "description": "MecServiceInfoCapifExt used to carry MEC-specific extensions. Requires CAPIF feature 'VendorExt' as defined in clause 8.2.6 of ETSI TS 129 222 [21]." + } + }, + "required": ["apiName", "serviceAPICategory"] +} diff --git a/MEC011/SRV/CAPIF/schemas/ServiceApiDescriptionList.json.schema b/MEC011/SRV/CAPIF/schemas/ServiceApiDescriptionList.json.schema new file mode 100644 index 0000000000000000000000000000000000000000..85b2e2ec165c54896f69abf8281c40f4450a1893 --- /dev/null +++ b/MEC011/SRV/CAPIF/schemas/ServiceApiDescriptionList.json.schema @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "ServiceInfoList", + "type": "array", + "items": { + "type": "object", + "title": "ServiceInfo", + "properties": { + "apiName": { + "type": "string", + "description": "Shall be set to the value of the 'serName' attribute as defined in clause 8.1.2.2." + }, + "apiId": { + "type": "string", + "description": "If present, shall be set to the value of the 'serInstanceId' attribute as defined in clause 8.1.2.2." + }, + "shareableInfo": { + "type": "object", + "description": "See note. Optional attribute." + }, + "serviceAPICategory": { + "type": "string", + "description": "Shall be set to the same value as the attribute 'id' in 'CategoryRef'." + }, + "ccfId": { + "type": "string", + "description": "See note. Optional attribute." + }, + "apiSuppFeats": { + "type": "string", + "description": "See note. Optional attribute." + }, + "pubApiPath": { + "type": "string", + "description": "See note. Optional attribute." + }, + "apiStatus": { + "type": "string", + "description": "See note. Optional attribute." + }, + "vendorSpecific-urn:etsi:mec:capifext:service-info": { + "type": "object", + "description": "MecServiceInfoCapifExt used to carry MEC-specific extensions. Requires CAPIF feature 'VendorExt' as defined in clause 8.2.6 of ETSI TS 129 222 [21]." + } + }, + "required": ["apiName", "serviceAPICategory"] + } +} diff --git a/MEC011/SRV/CONFTASK/PlatConfirmation.robot b/MEC011/SRV/CONFTASK/ConfirmTasks.robot similarity index 87% rename from MEC011/SRV/CONFTASK/PlatConfirmation.robot rename to MEC011/SRV/CONFTASK/ConfirmTasks.robot index cc52e8b39916f4024aa9e39981ed3fabc1324661..b2935a93eba8af4c1bde459949a577b67495b882 100644 --- a/MEC011/SRV/CONFTASK/PlatConfirmation.robot +++ b/MEC011/SRV/CONFTASK/ConfirmTasks.robot @@ -18,9 +18,9 @@ TC_MEC_MEC011_SRV_CONFTASK_001_OK ... Check that the IUT responds that it has completed ... the application level termination ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.4.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.11.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.3", + ... "ETSI GS MEC 011 clause 7.1.4.3", + ... "ETSI GS MEC 011 clause 7.2.11.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo Request termination of MEC Application ${APP_INSTANCE_ID} AppTerminationConfirmation @@ -33,9 +33,9 @@ TC_MEC_MEC011_SRV_CONFTASK_001_NF ... Check that the IUT responds with an error ... when requested graceful termination/stop of an unknown MEC Application instance ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.4.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.11.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.3", + ... "ETSI GS MEC 011 clause 7.1.4.3", + ... "ETSI GS MEC 011 clause 7.2.11.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES [Teardown] Delete MEC application instance profile ${NON_EXISTING_APP_INSTANCE_ID} Request termination of MEC Application ${NON_EXISTING_APP_INSTANCE_ID} AppTerminationConfirmation @@ -49,9 +49,9 @@ TC_MEC_MEC011_SRV_CONFTASK_002_OK ... Check that the IUT responds with an acknowledge ... when requested readiness status for a MEC Application instance ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.4.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.11.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.3", + ... "ETSI GS MEC 011 clause 7.1.4.3", + ... "ETSI GS MEC 011 clause 7.2.11.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo Request readiness status of MEC Application ${APP_INSTANCE_ID} AppReadyConfirmation @@ -64,9 +64,9 @@ TC_MEC_MEC011_SRV_CONFTASK_002_NF ... Check that the IUT responds with an error ... when requested readiness status for an unknown MEC Application instance ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.4.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.11.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.3", + ... "ETSI GS MEC 011 clause 7.1.4.3", + ... "ETSI GS MEC 011 clause 7.2.11.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Delete MEC application instance profile ${NON_EXISTING_APP_INSTANCE_ID} Request readiness status of MEC Application ${NON_EXISTING_APP_INSTANCE_ID} AppReadyConfirmation diff --git a/MEC011/SRV/DNS/PlatDnsRules.robot b/MEC011/SRV/DNS/PlatDnsRules.robot index 6776a153ac90bc6188f2cc08fef42451f8f6b3f3..4aa092751512d6a62858460013f1c46e23372f04 100644 --- a/MEC011/SRV/DNS/PlatDnsRules.robot +++ b/MEC011/SRV/DNS/PlatDnsRules.robot @@ -18,9 +18,9 @@ TC_MEC_MEC011_SRV_DNS_001_OK ... Check that the IUT responds with a list of active DNS rules ... when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.9.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.8", + ... "ETSI GS MEC 011 clause 7.1.2.3", + ... "ETSI GS MEC 011 clause 7.2.9.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo Get list of active DNS rules ${APP_INSTANCE_ID} @@ -33,9 +33,9 @@ TC_MEC_MEC011_SRV_DNS_001_NF ... Check that the IUT responds with a list of active DNS rules ... when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.9.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.8", + ... "ETSI GS MEC 011 clause 7.1.2.3", + ... "ETSI GS MEC 011 clause 7.2.9.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Delete MEC application instance profile ${NOT_EXISTENT_APP_INSTANCE_ID} Get list of active DNS rules ${NOT_EXISTENT_APP_INSTANCE_ID} @@ -49,9 +49,9 @@ TC_MEC_MEC011_SRV_DNS_002_OK ... Check that the IUT responds with the information on a specific DNS rule ... when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.8", + ... "ETSI GS MEC 011 clause 7.1.2.3", + ... "ETSI GS MEC 011 clause 7.2.10.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo Get individual DNS rule ${APP_INSTANCE_ID} ${DNS_RULE_ID} @@ -66,9 +66,9 @@ TC_MEC_MEC011_SRV_DNS_002_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.8", + ... "ETSI GS MEC 011 clause 7.1.2.3", + ... "ETSI GS MEC 011 clause 7.2.10.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual DNS rule ${APP_INSTANCE_ID} ${NON_ESISTENT_DNS_RULE_ID} Check HTTP Response Status Code Is 404 @@ -79,9 +79,9 @@ TC_MEC_MEC011_SRV_DNS_003_OK ... Check that the IUT responds with the information on a specific DNS rule ... when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.2" + ... Reference "ETSI GS MEC 011 clause 5.2.8", + ... "ETSI GS MEC 011 clause 7.1.2.3", + ... "ETSI GS MEC 011 clause 7.2.10.3.2" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo Update a DNS Rule ${APP_INSTANCE_ID} ${DNS_RULE_ID} DnsRuleUpdate @@ -97,9 +97,9 @@ TC_MEC_MEC011_SRV_DNS_003_BR ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.2" + ... Reference "ETSI GS MEC 011 clause 5.2.8", + ... "ETSI GS MEC 011 clause 7.1.2.3", + ... "ETSI GS MEC 011 clause 7.2.10.3.2" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo @@ -113,9 +113,9 @@ TC_MEC_MEC011_SRV_DNS_003_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.2" + ... Reference "ETSI GS MEC 011 clause 5.2.8", + ... "ETSI GS MEC 011 clause 7.1.2.3", + ... "ETSI GS MEC 011 clause 7.2.10.3.2" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo @@ -130,9 +130,9 @@ TC_MEC_MEC011_SRV_DNS_003_PF ... Check that the IUT responds with an error when ... a request sent by a MEC Application doesn't comply with a required condition ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.8", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.3", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.10.3.2" + ... Reference "ETSI GS MEC 011 clause 5.2.8", + ... "ETSI GS MEC 011 clause 7.1.2.3", + ... "ETSI GS MEC 011 clause 7.2.10.3.2" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo Update a DNS Rule with invalid etag ${APP_INSTANCE_ID} ${DNS_RULE_ID} DnsRuleUpdate diff --git a/MEC011/SRV/MLS/Liveness.robot b/MEC011/SRV/MLS/Liveness.robot index 6f3906fd9b454d43fef359b608e8e66c5d9825bd..695c8e6e1f943b53933236282af9cd89586488cc 100644 --- a/MEC011/SRV/MLS/Liveness.robot +++ b/MEC011/SRV/MLS/Liveness.robot @@ -14,9 +14,9 @@ TC_MEC_MEC011_SRV_MSL_001_OK [Documentation] ... Check that the IUT responds with the liveness of a MEC service instance ... when queried by a MEC Application - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.12", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.2.4", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.12", + ... "ETSI GS MEC 011 clause 8.1.2.4", + ... "ETSI GS MEC 011 clause 8.2.10.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} Individual MEC service liveness ${LIVENESS_URI} @@ -30,9 +30,9 @@ TC_MEC_MEC011_SRV_MSL_001_NF ... Check that the IUT responds with an error when ... a request for an URI that cannot be mapped to a valid resource URI ... is sent by a MEC Application - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.12", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.2.4", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.12", + ... "ETSI GS MEC 011 clause 8.1.2.4", + ... "ETSI GS MEC 011 clause 8.2.10.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES Individual MEC service liveness ${NOT_EXISTING_URL_SERVICE_MEC_LIVENESS} Check HTTP Response Status Code Is 404 @@ -42,9 +42,9 @@ TC_MEC_MEC011_SRV_MSL_002_OK_01 [Documentation] ... Check that the IUT updates the liveness of a MEC service instance ... when requested by a MEC Application - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.12", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.2.5", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.3" + ... Reference "ETSI GS MEC 011 clause 5.2.12", + ... "ETSI GS MEC 011 clause 8.1.2.5", + ... "ETSI GS MEC 011 clause 8.2.10.3.3" [Tags] PIC_MEC_PLAT PIC_SERVICES Set Headers {"Authorization":"${TOKEN}"} ${file}= Catenate SEPARATOR= jsons/ ServiceLivenessUpdate .json @@ -61,9 +61,9 @@ TC_MEC_MEC011_SRV_MSL_002_OK_02 [Documentation] ... Check that the IUT updates the liveness of a MEC service instance ... when requested by a MEC Application - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.12", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.2.5", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.3" + ... Reference "ETSI GS MEC 011 clause 5.2.12", + ... "ETSI GS MEC 011 clause 8.1.2.5", + ... "ETSI GS MEC 011 clause 8.2.10.3.3" [Tags] PIC_MEC_PLAT PIC_SERVICES Set Headers {"Authorization":"${TOKEN}"} ${file}= Catenate SEPARATOR= jsons/ ServiceLivenessUpdate .json @@ -76,9 +76,9 @@ TC_MEC_MEC011_SRV_MSL_002_BR [Documentation] ... Check that the IUT responds with an error when ... incorrect parameters were sent by a MEC Application - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.12", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.2.5", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.3" + ... Reference "ETSI GS MEC 011 clause 5.2.12", + ... "ETSI GS MEC 011 clause 8.1.2.5", + ... "ETSI GS MEC 011 clause 8.2.10.3.3" [Tags] PIC_MEC_PLAT PIC_SERVICES Set Headers {"Authorization":"${TOKEN}"} @@ -93,9 +93,9 @@ TC_MEC_MEC011_SRV_MSL_002_NF ... Check that the IUT responds with an error when ... a request for an URI that cannot be mapped to a valid ... resource URI is sent by a MEC Application - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.12", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.2.5", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.10.3.3" + ... Reference "ETSI GS MEC 011 clause 5.2.12", + ... "ETSI GS MEC 011 clause 8.1.2.5", + ... "ETSI GS MEC 011 clause 8.2.10.3.3" [Tags] PIC_MEC_PLAT PIC_SERVICES Set Headers {"Authorization":"${TOKEN}"} ${file}= Catenate SEPARATOR= jsons/ ServiceLivenessUpdateError .json diff --git a/MEC011/SRV/REGAPPS/RegApps.robot b/MEC011/SRV/REGAPPS/RegisterAppsServices.robot similarity index 78% rename from MEC011/SRV/REGAPPS/RegApps.robot rename to MEC011/SRV/REGAPPS/RegisterAppsServices.robot index f6fcace4ee30e0faf9e6aff48313bf103c13674a..964ad1b20813e205e603a54b811ce5bf29392109 100644 --- a/MEC011/SRV/REGAPPS/RegApps.robot +++ b/MEC011/SRV/REGAPPS/RegisterAppsServices.robot @@ -18,9 +18,9 @@ TC_MEC_MEC011_SRV_REGAPPS_001_OK_01 ... Check that the IUT acknowledges the registration ... by a MEC Application to the MEC platform ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6" - ... "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6" + ... "ETSI GS MEC 011 clause 7.2.13.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new MEC application instance profile AppInfo Check HTTP Response Status Code Is 201 @@ -35,9 +35,9 @@ TC_MEC_MEC011_SRV_REGAPPS_001_OK_02 ... Check that the IUT acknowledges the registration ... by a MEC Application to the MEC platform ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6" - ... "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6" + ... "ETSI GS MEC 011 clause 7.2.13.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new MEC application instance profile AppInfo2 ${APP_INSTANCE_ID_REQ} Get value entry from JSON file AppInfo2 appInstanceId @@ -55,9 +55,9 @@ TC_MEC_MEC011_SRV_REGAPPS_001_OK_03 ... Check that the IUT acknowledges the registration ... by a MEC Application to the MEC platform ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6" - ... "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6" + ... "ETSI GS MEC 011 clause 7.2.13.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new MEC application instance profile AppInfo3 ${APP_INSTANCE_ID_REQ} Get value entry from JSON file AppInfo3 appInstanceId @@ -78,9 +78,9 @@ TC_MEC_MEC011_SRV_REGAPPS_001_BR_01 ... Check that the IUT responds with an error message when the IUT received a registration with ... missing fields from a MEC Application instantiated by the MEC platform ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6" - ... "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6" + ... "ETSI GS MEC 011 clause 7.2.13.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new MEC application instance profile AppInfoBR1 Check HTTP Response Status Code Is 400 @@ -91,9 +91,9 @@ TC_MEC_MEC011_SRV_REGAPPS_001_BR_02 ... Check that the IUT responds with an error message ... when the IUT received by a MEC Application registration with missing endpoint ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6" - ... "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6" + ... "ETSI GS MEC 011 clause 7.2.13.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new MEC application instance profile AppInfoBR2 Check HTTP Response Status Code Is 400 @@ -104,9 +104,9 @@ TC_MEC_MEC011_SRV_REGAPPS_001_BR_03 ... Check that the IUT responds with an error message when the IUT received by a ... MEC Application registration with unexpected appServiceRequired ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6" - ... "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6" + ... "ETSI GS MEC 011 clause 7.2.13.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new MEC application instance profile AppInfoBR3 Check HTTP Response Status Code Is 400 @@ -117,9 +117,9 @@ TC_MEC_MEC011_SRV_REGAPPS_001_BR_04 ... Check that the IUT responds with an error message when the IUT received by a ... MEC Application registration with unexpected appServiceRequired ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6" - ... "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6" + ... "ETSI GS MEC 011 clause 7.2.13.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new MEC application instance profile AppInfoBR4 Check HTTP Response Status Code Is 400 @@ -130,9 +130,9 @@ TC_MEC_MEC011_SRV_REGAPPS_001_BR_05 ... Check that the IUT responds with an error message when the IUT received by a ... MEC Application registration with unexpected appFeatureRequired ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6" - ... "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6" + ... "ETSI GS MEC 011 clause 7.2.13.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new MEC application instance profile AppInfoBR5 @@ -144,9 +144,9 @@ TC_MEC_MEC011_SRV_REGAPPS_001_BR_06 ... Check that the IUT responds with an error message when the IUT received by a ... MEC Application registration with unexpected appFeatureOptional ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6" - ... "ETSI GS MEC 011 3.2.1, clause 7.2.13.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6" + ... "ETSI GS MEC 011 clause 7.2.13.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new MEC application instance profile AppInfoBR6 @@ -159,9 +159,9 @@ TC_MEC_MEC011_SRV_REGAPPS_002_OK ... Check that the IUT responds with the AppInfo description ... when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.14.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6", + ... "ETSI GS MEC 011 clause 7.2.14.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo @@ -177,9 +177,9 @@ TC_MEC_MEC011_SRV_REGAPPS_002_NF ... Check that the IUT responds with an error ... when it receives a request for returning an AppInfo with a wrong ID ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.14.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6", + ... "ETSI GS MEC 011 clause 7.2.14.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Delete MEC application instance profile ${NOT_EXISTING_APP_INSTANCE_ID} @@ -193,9 +193,9 @@ TC_MEC_MEC011_SRV_REGAPPS_003_OK ... Check that the IUT responds with 204 No Content ... when queried to update MEC Application registration ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.14.3.2" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6", + ... "ETSI GS MEC 011 clause 7.2.14.3.2" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo @@ -211,7 +211,7 @@ TC_MEC_MEC011_SRV_REGAPPS_003_NF ... Check that the IUT responds with 204 No Content ... when queried to update MEC Application registration ... - ... Reference ETSI GS MEC 011 3.2.1, clause 7.2.14.3.2 + ... Reference ETSI GS MEC 011 clause 7.2.14.3.2 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Delete MEC application instance profile ${NOT_EXISTING_APP_INSTANCE_ID} @@ -225,9 +225,9 @@ TC_MEC_MEC011_SRV_REGAPPS_004_OK ... Check that the IUT responds with 204 No Content ... when queried to delete an existing MEC Application registration ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.14.3.5" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6", + ... "ETSI GS MEC 011 clause 7.2.14.3.5" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile AppInfo @@ -242,9 +242,9 @@ TC_MEC_MEC011_SRV_REGAPPS_004_NF ... Check that the IUT responds with an error when queried to ... delete an unknown MEC Application registration ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.13", - ... "ETSI GS MEC 011 3.2.1, clause 7.1.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 7.2.14.3.5" + ... Reference "ETSI GS MEC 011 clause 5.2.13", + ... "ETSI GS MEC 011 clause 7.1.2.6", + ... "ETSI GS MEC 011 clause 7.2.14.3.5" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Delete MEC application instance profile ${NOT_EXISTING_APP_INSTANCE_ID} diff --git a/MEC011/SRV/SAQ/PlatServices.robot b/MEC011/SRV/SAQ/PlatServices.robot index afe9b9fcd014a6da6ee20304e7966a25c7ea1546..57a653fff9ccf24d0a99998e18deb9857e0f609d 100644 --- a/MEC011/SRV/SAQ/PlatServices.robot +++ b/MEC011/SRV/SAQ/PlatServices.robot @@ -16,9 +16,9 @@ TC_MEC_MEC011_SRV_SAQ_001_OK ... Check that the IUT responds with a list of available MEC services ... when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.5", - ... Reference "ETSI GS MEC 011 3.2.1, clause 8.1.2.2", - ... Reference "ETSI GS MEC 011 3.2.1, clause 8.2.3.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.5", + ... Reference "ETSI GS MEC 011 clause 8.1.2.2", + ... Reference "ETSI GS MEC 011 clause 8.2.3.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} @@ -33,9 +33,9 @@ TC_MEC_MEC011_SRV_SAQ_001_BR ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.5", - ... Reference "ETSI GS MEC 011 3.2.1, clause 8.1.2.2", - ... Reference "ETSI GS MEC 011 3.2.1, clause 8.2.3.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.5", + ... Reference "ETSI GS MEC 011 clause 8.1.2.2", + ... Reference "ETSI GS MEC 011 clause 8.2.3.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} @@ -50,9 +50,9 @@ TC_MEC_MEC011_SRV_SAQ_002_OK ... Check that the IUT responds with the information on a specific service ... when queried by a MEC Application ... - ... "ETSI GS MEC 011 3.2.1, clause 5.2.5", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.2.2", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.4.3.1" + ... "ETSI GS MEC 011 clause 5.2.5", + ... "ETSI GS MEC 011 clause 8.1.2.2", + ... "ETSI GS MEC 011 clause 8.2.4.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create new service ServiceInfo ${APP_INSTANCE_ID} ${SER_NAME} Get value entry from JSON file ServiceInfo serName @@ -67,9 +67,9 @@ TC_MEC_MEC011_SRV_SAQ_002_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... "ETSI GS MEC 011 3.2.1, clause 5.2.5", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.2.2", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.4.3.1" + ... "ETSI GS MEC 011 clause 5.2.5", + ... "ETSI GS MEC 011 clause 8.1.2.2", + ... "ETSI GS MEC 011 clause 8.2.4.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [TearDown] Remove individual service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} Get specific MEC service ${NON_EXISTENT_SERVICE_ID} diff --git a/MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot b/MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot index 405a2c26c186b52a2db38ce20231b54a018f78f4..8836128e07a5916a6d6fbe50e66e4c96310cfe5e 100644 --- a/MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot +++ b/MEC011/SRV/SRVSUB/PlatSrvSubscriptions.robot @@ -17,9 +17,9 @@ TC_MEC_MEC011_SRV_SRVSUB_001_OK ... Check that the IUT responds with a list of subscriptions for notifications ... on services availability when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.3", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.8.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 8.1.3", + ... "ETSI GS MEC 011 clause 8.2.8.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile and create subscription AppInfo SerAvailabilityNotificationSubscription Get list of subscriptions ${APP_INSTANCE_ID} @@ -33,9 +33,9 @@ TC_MEC_MEC011_SRV_SRVSUB_001_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.3", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.8.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 8.1.3", + ... "ETSI GS MEC 011 clause 8.2.8.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Remove MEC application ${NON_EXISTENT_INSTANCE_ID} @@ -47,9 +47,9 @@ TC_MEC_MEC011_SRV_SRVSUB_002_OK ... Check that the IUT acknowledges the subscription by a MEC Application ... to notifications on service availability events ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.3", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.8.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 8.1.3", + ... "ETSI GS MEC 011 clause 8.2.8.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application AppInfo @@ -69,9 +69,9 @@ TC_MEC_MEC011_SRV_SRVSUB_002_BR ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.3", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.8.3.4" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 8.1.3", + ... "ETSI GS MEC 011 clause 8.2.8.3.4" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application AppInfo Create a new subscription ${APP_INSTANCE_ID} SerAvailabilityNotificationSubscriptionError @@ -84,9 +84,9 @@ TC_MEC_MEC011_SRV_SRVSUB_003_OK ... Check that the IUT responds with the information on a specific subscription ... when queried by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.3", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.9.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 8.1.3", + ... "ETSI GS MEC 011 clause 8.2.9.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile and create subscription AppInfo SerAvailabilityNotificationSubscription Get individual subscription ${APP_INSTANCE_ID} ${SUB_ID} @@ -103,9 +103,9 @@ TC_MEC_MEC011_SRV_SRVSUB_003_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.3", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.9.3.1" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 8.1.3", + ... "ETSI GS MEC 011 clause 8.2.9.3.1" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application AppInfo Get individual subscription ${APP_INSTANCE_ID} ${NON_EXISTENT_SUBSCRIPTION_ID} @@ -117,9 +117,9 @@ TC_MEC_MEC011_SRV_SRVSUB_004_OK ... Check that the IUT acknowledges the unsubscribe from service availability event notifications ... when commanded by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.3", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.9.3.5" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 8.1.3", + ... "ETSI GS MEC 011 clause 8.2.9.3.5" [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application instance profile and create subscription AppInfo SerAvailabilityNotificationSubscription Remove subscription ${APP_INSTANCE_ID} ${SUB_ID} @@ -131,9 +131,9 @@ TC_MEC_MEC011_SRV_SRVSUB_004_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference "ETSI GS MEC 011 3.2.1, clause 5.2.6", - ... "ETSI GS MEC 011 3.2.1, clause 8.1.3", - ... "ETSI GS MEC 011 3.2.1, clause 8.2.9.3.5" + ... Reference "ETSI GS MEC 011 clause 5.2.6", + ... "ETSI GS MEC 011 clause 8.1.3", + ... "ETSI GS MEC 011 clause 8.2.9.3.5" [Tags] PIC_MEC_PLAT PIC_SERVICES [TearDown] Remove MEC application ${NON_EXISTENT_INSTANCE_ID} Remove subscription ${NON_EXISTENT_INSTANCE_ID} ${SUBSCRIPTION_ID} diff --git a/MEC011/SRV/TIME/PlatTiming.robot b/MEC011/SRV/TIME/PlatTiming.robot index f18f776342e25bf11ebc294c5a0e8d664d05c107..a80dd3d4e4e59dcfb05c539954c89a86ac0416a7 100644 --- a/MEC011/SRV/TIME/PlatTiming.robot +++ b/MEC011/SRV/TIME/PlatTiming.robot @@ -19,9 +19,9 @@ TC_MEC_MEC011_SRV_TIME_001_OK [Documentation] ... Check that the IUT responds with timing capabilities ... when queried by a MEC Application - ... ETSI GS MEC 011 3.2.1, clause 5.2.10.3, - ... ETSI GS MEC 011 3.2.1, clause 7.1.2.4, - ... ETSI GS MEC 011 3.2.1, clause 7.2.5.3.1 + ... ETSI GS MEC 011 clause 5.2.10.3, + ... ETSI GS MEC 011 clause 7.1.2.4, + ... ETSI GS MEC 011 clause 7.2.5.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get time capabilities Check HTTP Response Status Code Is 200 @@ -32,9 +32,9 @@ TC_MEC_MEC011_SRV_TIME_002_OK [Documentation] ... Check that the IUT responds with current time ... when queried by a MEC Application - ... ETSI GS MEC 011 3.2.1, clause 5.2.10.2, - ... ETSI GS MEC 011 3.2.1, clause 7.1.2.5, - ... ETSI GS MEC 011 3.2.1, clause 7.2.5.3.1 + ... ETSI GS MEC 011 clause 5.2.10.2, + ... ETSI GS MEC 011 clause 7.1.2.5, + ... ETSI GS MEC 011 clause 7.2.5.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get current time diff --git a/MEC011/SRV/TRAF/PlatTrafficRules.robot b/MEC011/SRV/TRAF/PlatTrafficRules.robot index af694633d011b860b18910f9ec4967e9a977f449..5ffad06bffe8979b615440ae66b5663895351b8b 100644 --- a/MEC011/SRV/TRAF/PlatTrafficRules.robot +++ b/MEC011/SRV/TRAF/PlatTrafficRules.robot @@ -19,9 +19,9 @@ TC_MEC_MEC011_SRV_TRAF_001_OK ... when queried by a MEC Application ... ... Reference - ... ETSI GS MEC 011 3.2.1, clause 5.2.7, - ... ETSI GS MEC 011 3.2.1, clause 7.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 7.2.7.3.1 + ... ETSI GS MEC 011 clause 5.2.7, + ... ETSI GS MEC 011 clause 7.1.2.2, + ... ETSI GS MEC 011 clause 7.2.7.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application AppInfo @@ -36,9 +36,9 @@ TC_MEC_MEC011_SRV_TRAF_001_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.7, - ... ETSI GS MEC 011 3.2.1, clause 7.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 7.2.7.3.1 + ... Reference ETSI GS MEC 011 clause 5.2.7, + ... ETSI GS MEC 011 clause 7.1.2.2, + ... ETSI GS MEC 011 clause 7.2.7.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Remove MEC application ${NON_EXISTENT_APP_INSTANCE_ID} @@ -51,9 +51,9 @@ TC_MEC_MEC011_SRV_TRAF_002_OK ... Check that the IUT responds with the information on a specific traffic rule ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.7, - ... ETSI GS MEC 011 3.2.1, clause 7.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 7.2.8.3.1 + ... Reference ETSI GS MEC 011 clause 5.2.7, + ... ETSI GS MEC 011 clause 7.1.2.2, + ... ETSI GS MEC 011 clause 7.2.8.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application AppInfo Get individual traffic rule ${APP_INSTANCE_ID} ${TRAFFIC_RULE_ID} @@ -68,9 +68,9 @@ TC_MEC_MEC011_SRV_TRAF_002_NF ... Check that the IUT responds with an error when a request for an unknown traffic rule ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.7, - ... ETSI GS MEC 011 3.2.1, clause 7.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 7.2.8.3.1 + ... Reference ETSI GS MEC 011 clause 5.2.7, + ... ETSI GS MEC 011 clause 7.1.2.2, + ... ETSI GS MEC 011 clause 7.2.8.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual traffic rule ${APP_INSTANCE_ID} ${NON_EXISTENT_TRAFFIC_RULE_ID} @@ -83,9 +83,9 @@ TC_MEC_MEC011_SRV_TRAF_003_OK ... Check that the IUT updates a specific traffic rule ... when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.7, - ... ETSI GS MEC 011 3.2.1, clause 7.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 7.2.8.3.2 + ... Reference ETSI GS MEC 011 clause 5.2.7, + ... ETSI GS MEC 011 clause 7.1.2.2, + ... ETSI GS MEC 011 clause 7.2.8.3.2 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application AppInfo ${TRAFFIC_RULE_ID} Get value entry from JSON file TrafficRuleUpdate trafficRuleId @@ -101,9 +101,9 @@ TC_MEC_MEC011_SRV_TRAF_003_BR ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.7, - ... ETSI GS MEC 011 3.2.1, clause 7.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 7.2.8.3.2 + ... Reference ETSI GS MEC 011 clause 5.2.7, + ... ETSI GS MEC 011 clause 7.1.2.2, + ... ETSI GS MEC 011 clause 7.2.8.3.2 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application AppInfo Update a traffic rule ${APP_INSTANCE_ID} ${TRAFFIC_RULE_ID} TrafficRuleUpdateError @@ -116,9 +116,9 @@ TC_MEC_MEC011_SRV_TRAF_003_NF ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.7", - ... ETSI GS MEC 011 3.2.1, clause 7.1.2.2", - ... ETSI GS MEC 011 3.2.1, clause 7.2.8.3.2 + ... Reference ETSI GS MEC 011 clause 5.2.7", + ... ETSI GS MEC 011 clause 7.1.2.2", + ... ETSI GS MEC 011 clause 7.2.8.3.2 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application AppInfo Update a traffic rule ${APP_INSTANCE_ID} ${NON_EXISTENT_TRAFFIC_RULE_ID} TrafficRuleUpdate @@ -131,9 +131,9 @@ TC_MEC_MEC011_SRV_TRAF_003_PF ... Check that the IUT responds with an error when ... a request sent by a MEC Application doesn't comply with a required condition ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.7, - ... ETSI GS MEC 011 3.2.1, clause 7.1.2.2, - ... ETSI GS MEC 011 3.2.1, clause 7.2.8.3.2 + ... Reference ETSI GS MEC 011 clause 5.2.7, + ... ETSI GS MEC 011 clause 7.1.2.2, + ... ETSI GS MEC 011 clause 7.2.8.3.2 [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new MEC application AppInfo Update a traffic rule with invalid etag ${APP_INSTANCE_ID} ${TRAFFIC_RULE_ID} TrafficRuleUpdate diff --git a/MEC011/SRV/TRANS/PlatTransport.robot b/MEC011/SRV/TRANS/PlatTransport.robot index e2917b5e1ae2baa578472f3c512e52f22a199ff6..5044f7d030c7f2608569e38e5027113903835e95 100644 --- a/MEC011/SRV/TRANS/PlatTransport.robot +++ b/MEC011/SRV/TRANS/PlatTransport.robot @@ -17,9 +17,9 @@ TC_MEC_MEC011_SRV_TRANS_001_OK ... Check that the IUT responds with a list of available transports ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 3.2.1, clause 5.2.9, - ... ETSI GS MEC 011 3.2.1, clause 8.1.2.3, - ... ETSI GS MEC 011 3.2.1, clause 8.2.5.3.1 + ... Reference ETSI GS MEC 011 clause 5.2.9, + ... ETSI GS MEC 011 clause 8.1.2.3, + ... ETSI GS MEC 011 clause 8.2.5.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of available transports diff --git a/MEC012/SRV/RNIS/environment/variables.txt b/MEC012/SRV/RNIS/environment/variables.txt index e49404199e1183d923e0a7f517e15e6ed6b39acc..1dbe6c1e4a0747a0fabb760e967f9d61438d5716 100644 --- a/MEC012/SRV/RNIS/environment/variables.txt +++ b/MEC012/SRV/RNIS/environment/variables.txt @@ -1,7 +1,7 @@ *** Variables *** ${MEC-APP_SCHEMA} http -${MEC-APP_HOST} 127.0.0.1 -${MEC-APP_PORT} 8085 +${MEC-APP_HOST} %{MEC_APP_HOST=127.0.0.1} +${MEC-APP_PORT} %{MEC_APP_PORT=8085} ${apiRoot} ${apiName} rni ${apiVersion} v2 diff --git a/MEC012/SRV/RNIS/libraries/__pycache__/Server.cpython-310.pyc b/MEC012/SRV/RNIS/libraries/__pycache__/Server.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aabe5718fde3113af54f20866db0a7822446cef9 Binary files /dev/null and b/MEC012/SRV/RNIS/libraries/__pycache__/Server.cpython-310.pyc differ diff --git a/MEC012/SRV/RNIS/libraries/__pycache__/Server.cpython-36.pyc b/MEC012/SRV/RNIS/libraries/__pycache__/Server.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..beae636c6a2bf96769046b3415054aca1b27c63c Binary files /dev/null and b/MEC012/SRV/RNIS/libraries/__pycache__/Server.cpython-36.pyc differ diff --git a/MEC013/SRV/RLOCLOOK/environment/variables.txt b/MEC013/SRV/RLOCLOOK/environment/variables.txt index 58b70406b3a4892714c95f4a3cbfea992eb05c70..5f71cca05298ad03a58125f3c9bd11dc2cfb09f2 100644 --- a/MEC013/SRV/RLOCLOOK/environment/variables.txt +++ b/MEC013/SRV/RLOCLOOK/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UEAREALOOK/environment/variables.txt b/MEC013/SRV/UEAREALOOK/environment/variables.txt index 1956375a166b73927cc7afff63d7eb7e7d2c2438..d0df5ff842492e198a54d9f12df69d85031a10ec 100644 --- a/MEC013/SRV/UEAREALOOK/environment/variables.txt +++ b/MEC013/SRV/UEAREALOOK/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UEAREASUB/environment/variables.txt b/MEC013/SRV/UEAREASUB/environment/variables.txt index f9812b80c0b21a468b1f417fb258d79dea6e51b7..6ff26a6b609752ddfc744d7b98c572f813309c29 100644 --- a/MEC013/SRV/UEAREASUB/environment/variables.txt +++ b/MEC013/SRV/UEAREASUB/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UEDISTLOOK/environment/variables.txt b/MEC013/SRV/UEDISTLOOK/environment/variables.txt index 87fa46bd909160ebe688745567419e699420b282..a3c54385adbdb31c1e3b9ef644e3b1c3f689c870 100644 --- a/MEC013/SRV/UEDISTLOOK/environment/variables.txt +++ b/MEC013/SRV/UEDISTLOOK/environment/variables.txt @@ -1,10 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 - - -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UEDISTSUB/environment/variables.txt b/MEC013/SRV/UEDISTSUB/environment/variables.txt index 8e9b1912427ae523af3d053cc87a0693c7352209..a344ae839e26f318f887a972296034336358430c 100644 --- a/MEC013/SRV/UEDISTSUB/environment/variables.txt +++ b/MEC013/SRV/UEDISTSUB/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UEINFOLOOK/environment/variables.txt b/MEC013/SRV/UEINFOLOOK/environment/variables.txt index 08f06f5883183e44788e02ce7ccf7da152a1f03c..ef841f44b02d8c0093d99b83057e7e209cf45ad2 100644 --- a/MEC013/SRV/UEINFOLOOK/environment/variables.txt +++ b/MEC013/SRV/UEINFOLOOK/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UEINFOSUB/environment/variables.txt b/MEC013/SRV/UEINFOSUB/environment/variables.txt index 56b79c19706916d2368d912731af35b66bcca897..2d25c9837e856ef1235d1d3309f5566ada53f184 100644 --- a/MEC013/SRV/UEINFOSUB/environment/variables.txt +++ b/MEC013/SRV/UEINFOSUB/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 10.192.2.172 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UELOCLOOK/environment/variables.txt b/MEC013/SRV/UELOCLOOK/environment/variables.txt index 0d2e21a2e8f87a395cd13180ed1c3cfd1736d911..b493443ee273bb75a5fe9556067cc53afaba9b1e 100644 --- a/MEC013/SRV/UELOCLOOK/environment/variables.txt +++ b/MEC013/SRV/UELOCLOOK/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.2 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UELOCSUB/environment/variables.txt b/MEC013/SRV/UELOCSUB/environment/variables.txt index 9ba08ce20b37b1e5e6c4581adda8c944d299db7f..65dc73e9c7d5dcca415885160e19e45da65da682 100644 --- a/MEC013/SRV/UELOCSUB/environment/variables.txt +++ b/MEC013/SRV/UELOCSUB/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UETESTNOT/environment/variables.txt b/MEC013/SRV/UETESTNOT/environment/variables.txt index 50c62aa7d4a5cb1359c29a8d03d4c1e668ffafee..843b342b939ee0f87f65e45ff804b3ba93aecfc8 100644 --- a/MEC013/SRV/UETESTNOT/environment/variables.txt +++ b/MEC013/SRV/UETESTNOT/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UEZONELOOK/environment/variables.txt b/MEC013/SRV/UEZONELOOK/environment/variables.txt index 585984a3819f9c80c71bfa055580b9fe5d80cba4..a39ae299d4f8089deb5030001fc48b274d611ba9 100644 --- a/MEC013/SRV/UEZONELOOK/environment/variables.txt +++ b/MEC013/SRV/UEZONELOOK/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC013/SRV/UEZONESUB/environment/variables.txt b/MEC013/SRV/UEZONESUB/environment/variables.txt index ed7a7f5cf0c87504e4418d9c5d111ae80f58ac14..3a55157466610deda2dac95b18eb96936dc12ae0 100644 --- a/MEC013/SRV/UEZONESUB/environment/variables.txt +++ b/MEC013/SRV/UEZONESUB/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 -${PORT} 8081 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8081} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC014/SRV/UETAG/PlatUeIdentity.robot b/MEC014/SRV/UETAG/PlatUeIdentity.robot index d7b7f0e4cdeb33ff0e7c4befff2165c19f90c4a0..2520ae1add625437ddae5b047c92107a54cac3cd 100644 --- a/MEC014/SRV/UETAG/PlatUeIdentity.robot +++ b/MEC014/SRV/UETAG/PlatUeIdentity.robot @@ -15,8 +15,8 @@ TC_MEC_MEC014_SRV_UETAG_001_OK ... Check that the IUT responds with the information on a UE Identity tag ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 014 3.1.1, clause 6.2.2, - ... ETSI GS MEC 014 3.1.1, clause 7.3.3.1 + ... Reference ETSI GS MEC 014 3.2.1, clause 6.2.2, + ... ETSI GS MEC 014 3.2.1, clause 7.3.3.1 ... [Setup] Create new App Instance CreateAppInstanceRequest Get UE Identity Tag information ${APP_INSTANCE_ID} ${UE_IDENTITY_TAG} @@ -38,10 +38,10 @@ TC_MEC_MEC014_SRV_UETAG_001_BR ... Check that the IUT responds with an error ... when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 013 3.1.1 Clause 5.3.4, - ... ETSI GS MEC 013 3.1.1 Clause 6.3.9, - ... ETSI GS MEC 013 3.1.1 Clause 6.4.9, - ... ETSI GS MEC 013 3.1.1 Clause 7.14.3.4 + ... Reference ETSI GS MEC 013 3.2.1 Clause 5.3.4, + ... ETSI GS MEC 013 3.2.1 Clause 6.3.9, + ... ETSI GS MEC 013 3.2.1 Clause 6.4.9, + ... ETSI GS MEC 013 3.2.1 Clause 7.14.3.4 [Setup] Create new App Instance CreateAppInstanceRequest Get UE Identity Tag information using bad parameters ${APP_INSTANCE_ID} ${UE_IDENTITY_TAG} @@ -53,7 +53,7 @@ TC_MEC_MEC014_SRV_UETAG_001_BR TC_MEC_MEC014_SRV_UETAG_001_NF [Documentation] Request UE Identity Tag information using non-existent application instance ... Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application - ... Reference ETSI GS MEC 014 V3.1.1, clause 7.3.3.1 + ... Reference ETSI GS MEC 014 V3.2.1, clause 7.3.3.1 [Setup] Delete APP Instance ${NON_EXISTENT_APP_INSTANCE_ID} Get UE Identity Tag information ${NON_EXISTENT_APP_INSTANCE_ID} ${UE_IDENTITY_TAG} Check HTTP Response Status Code Is 404 @@ -63,8 +63,8 @@ TC_MEC_MEC014_SRV_UETAG_002_OK [Documentation] Register an UE Identity Tag ... Check that the IUT registers a tag (representing a UE) or a list of tags when commanded by a MEC Application - ... Reference ETSI GS MEC 014 3.1.1, clause 6.2.2 - ... ETSI GS MEC 014 V3.1.1, clause 7.3.3.2 + ... Reference ETSI GS MEC 014 3.2.1, clause 6.2.2 + ... ETSI GS MEC 014 V3.2.1, clause 7.3.3.2 [Setup] Create new App Instance and Check User Identity Tag unregistered state CreateAppInstanceRequest ${APP_INSTANCE_ID} UeIdentityTag Update an UE Identity Tag ${APP_INSTANCE_ID} IdentityTag @@ -84,8 +84,8 @@ TC_MEC_MEC014_SRV_UETAG_002_OK TC_MEC_MEC014_SRV_UETAG_002_BR [Documentation] Register an UE Identity Tag using invalid state ... Check that the IUT responds with an error when an unauthorised request is sent by a MEC Application - ... Reference ETSI GS MEC 014 3.1.1, clause 6.2.2, - ... ETSI GS MEC 014 3.1.1, clause 7.3.3.2 + ... Reference ETSI GS MEC 014 3.2.1, clause 6.2.2, + ... ETSI GS MEC 014 3.2.1, clause 7.3.3.2 [Setup] Create new App Instance CreateAppInstanceRequest Update an UE Identity Tag ${APP_INSTANCE_ID} IdentityTagBR Check HTTP Response Status Code Is 400 @@ -95,7 +95,7 @@ TC_MEC_MEC014_SRV_UETAG_002_BR TC_MEC_MEC014_SRV_UETAG_002_NF [Documentation] Register an UE Identity Tag using invalid state ... Check that the IUT responds with an error when an unauthorised request is sent by a MEC Application - ... Reference ETSI GS MEC 014 3.1.1, clause 7.3.3.2 + ... Reference ETSI GS MEC 014 3.2.1, clause 7.3.3.2 #[Setup] Delete APP Instance ${NON_EXISTENT_APP_INSTANCE_ID} Update an UE Identity Tag ${NON_EXISTENT_APP_INSTANCE_ID} IdentityTag Check HTTP Response Status Code Is 404 @@ -105,7 +105,7 @@ TC_MEC_MEC014_SRV_UETAG_002_PF [Documentation] Unregister an UE Identity Tag already in unregistered state ... Check that the IUT responds with an error when ... a request sent by a MEC Application doesn't comply with a required condition - ... Reference ETSI GS MEC 014 V3.1.1, clause 7.3.3.2 + ... Reference ETSI GS MEC 014 V3.2.1, clause 7.3.3.2 [Setup] Create new App Instance CreateAppInstanceRequest Update an UE Identity Tag ${APP_INSTANCE_ID} IdentityTagPF Check HTTP Response Status Code Is 412 diff --git a/MEC015/SRV/BW_SUB/BwEventSubscription.robot b/MEC015/SRV/BW_SUB/BwEventSubscription.robot new file mode 100644 index 0000000000000000000000000000000000000000..7510c3914ea187606e2d263b85944363eefb1fdf --- /dev/null +++ b/MEC015/SRV/BW_SUB/BwEventSubscription.robot @@ -0,0 +1,235 @@ +''[Documentation] robot --outputdir ../../../outputs ./BwEventSubscription.robot +... Test Suite to validate Bandwidth Management Event Subscription (BW) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library Collections +Library String +Library OperatingSystem +Library MockServerLibrary +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + +*** Test Cases *** +TC_MEC_MEC015_SRV_BW_SUB_NOT_001_OK + [Documentation] + ... Check that the IUT acknowledges the creation of BWM change event subscription request when commanded by a MEC Application + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6.2 + ... ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.5.3.4 + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + + Create New Subscription Info BwChgEventSubscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Location + Check HTTP Response Body Json Schema Is BwChgEventSubscription + Set Suite Variable ${Location} ${response['headers']['Location']} + + Check Response Contains ${response['body']} subscriptionType ${SUB_TYPE} + Check Response Contains ${response['body']} callbackReference ${CALLBACK_URI} + Check Response Contains ${response['body']['filterCriteria']} appInsId ${appInsId} + Should Not Be Empty ${response['body']['_links']['self']['href']} + + [TearDown] Remove Subscription Info ${Location} + +TC_MEC_MEC015_SRV_BW_SUB_NOT_001_BR_01 + [Documentation] + ... Check that the IUT acknowledges the creation of BWM change event subscription request when commanded by a MEC Application + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6.1 + ... ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.5.3.4 + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + + Create New Subscription Info with Invalid subscriptionType BwChgEventSubscription + Check HTTP Response Status Code Is 400 + +TC_MEC_MEC015_SRV_BW_SUB_NOT_001_BR_02 + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - Both callbackReference and websockNotifConfig provided + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6.1 + ... ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.5.3.4 + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + + Create New Subscription Info BwChgEventSubscription_BR + Check HTTP Response Status Code Is 400 + +TC_MEC_MEC015_SRV_BW_SUB_NOT_001_BR_03 + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - Neither callbackReference nor websockNotifConfig provided + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6.1 + ... ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.5.3.4 + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + + Create New Subscription Info BwChgEventSubscription_BR_02 + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC015_SRV_BW_SUB_NOT_002_OK + [Documentation] + ... Check that the IUT acknowledges the update of BWM change event subscription request when commanded by a MEC Application + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6.3 + ... ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.6.3.2 + + [Setup] Create New Subscription Info BwChgEventSubscription + Set Suite Variable ${Location} ${response['headers']['Location']} + ${elements} = Split String ${Location} / + ${SUBSCRIPTION_ID} = Get From List ${elements} -1 + Set Suite Variable ${SUBSCRIPTION_ID} ${SUBSCRIPTION_ID} + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + + Modify existing subscription information ${SUBSCRIPTION_ID} UpdateBwChgEventSubscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contains Location + Check HTTP Response Body Json Schema Is UpdateBwChgEventSubscription + + ${callbackReference} Get value entry from JSON file UpdateBwChgEventSubscription callbackReference + ${filterCriteria} Get value entry from JSON file UpdateBwChgEventSubscription filterCriteria + + Check Response Contains ${response['body']} subscriptionType BwChgEventSubscription + Check Response Contains ${response['body']} callbackReference ${callbackReference} + Check Response Contains ${response['body']['filterCriteria']} appInsId ${filterCriteria['appInsId']} + Should Not Be Empty ${response['body']['_links']['self']['href']} + + [TearDown] Remove Subscription Info ${Location} + +TC_MEC_MEC015_SRV_BW_SUB_NOT_002_NF + [Documentation] + ... Check that the IUT acknowledges an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6.3 + ... ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.6.3.2 + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + + Modify existing subscription information ${NON_EXISTENT_SUB_ID} UpdateBwChgEventSubscription + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC015_SRV_BW_SUB_NOT_003_OK + [Documentation] + ... Check that the IUT acknowledges the cancellation of BWM change event subscription request when commanded by a MEC Application + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6.4 + ... ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.6.3.5 + + [Setup] Create New Subscription Info ${SUB_ID} + Set Suite Variable ${Location} ${response['headers']['Location']} + ${elements} = Split String ${Location} / + ${SUBSCRIPTION_ID} = Get From List ${elements} -1 + Set Suite Variable ${SUBSCRIPTION_ID} ${SUBSCRIPTION_ID} + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Remove existing subscription information ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 204 + +TC_MEC_MEC015_SRV_BW_SUB_NOT_003_NF + [Documentation] + ... Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6.4 + ... ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.6.3.5 + + Remove existing subscription information ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + +TP_MEC_MEC015_SRV_BW_SUB_NOT_004_OK + [Documentation] Post Bandwidth Change Event Notification + ... Check that the BWM service sends a notification about a bandwidth utility or the data volume + ... if the BWM service has an associated subscription and the event is generated" + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6.2 + ... ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.7.3.4 + + ${json}= Get File schemas/BwChgEventNotification.schema.json + # Log Creating mock request and response to handle Bandwidth Change Event Notification + # &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} + # &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + # Create Mock Expectation ${req} ${rsp} + # Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} + # Log Verifying results + # Verify Mock Expectation ${req} + # Log Cleaning the endpoint + # Clear Requests ${callback_endpoint} + +*** Keywords *** +Create New Subscription Info + [Arguments] ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Modify existing subscription information + [Arguments] ${SUB_ID} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + ${json_data}= Evaluate json.loads('''${body}''') json + ${new_href}= Set Variable ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT}/${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} + Set To Dictionary ${json_data["_links"]["self"]} href=${new_href} + ${modified_json_string}= Evaluate json.dumps(${json_data}) + + Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} ${modified_json_string} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Create New Subscription Info with Invalid subscriptionType + [Arguments] ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + + # Modify JSON: Change subscriptionType to an invalid value + ${body}= Evaluate json.loads('''${body}''') json + Set To Dictionary ${body} subscriptionType InvalidType + ${modified_json_string}= Evaluate json.dumps(${body}) + + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${modified_json_string} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Remove existing subscription information + [Arguments] ${SUB_ID} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Remove Subscription Info + [Arguments] ${delete_url} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + DELETE ${delete_url} \ No newline at end of file diff --git a/MEC015/SRV/BW_SUB/environment/variables.txt b/MEC015/SRV/BW_SUB/environment/variables.txt new file mode 100644 index 0000000000000000000000000000000000000000..205dc37abe692996dfffa5ab3b68a928947e86a3 --- /dev/null +++ b/MEC015/SRV/BW_SUB/environment/variables.txt @@ -0,0 +1,35 @@ +*** Variables *** +####Env variable for the ETSI MEC Sandbox +${apiRoot} +${apiName} bwm +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} mockoon +${MEC-APP_PORT} 3001 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + + +# Specific variables +${appInsId} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f +${NON_EXISTENT_APP_INSTANCE_ID} NON_ESISTENT_APP_INSTANCE_ID + +${SUB_TYPE} BwChgEventSubscription + +${SUB_FILTER} bw_chg +${INVALID_SUB_FILTER} bw_chg_invalid + +${SUB_ID} 123 +${NON_EXISTENT_SUB_ID} + +${HREF} /bwm/v1/subscriptions/1 +${CALLBACK_URI} http://callback.uri/1 + + +${callback_port} 9091 +${callback_uri} http://172.22.1.7:${callback_port} +${callback_endpoint} /bwm/v1/subscriptions +${callback_endpoint_error} /subs_404 +${total_polling_time} 2 min +${polling_interval} 10 sec \ No newline at end of file diff --git a/MEC015/SRV/BW_SUB/jsons/BwChgEventSubscription.json b/MEC015/SRV/BW_SUB/jsons/BwChgEventSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..f59f7c7ecaea073c7dc2926592d7c61ff4ef58a2 --- /dev/null +++ b/MEC015/SRV/BW_SUB/jsons/BwChgEventSubscription.json @@ -0,0 +1,9 @@ +{ + "subscriptionType": "BwChgEventSubscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": [ + { + "appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f" + } + ] +} diff --git a/MEC015/SRV/BW_SUB/jsons/BwChgEventSubscription_BR.json b/MEC015/SRV/BW_SUB/jsons/BwChgEventSubscription_BR.json new file mode 100644 index 0000000000000000000000000000000000000000..b5d8b7349c29da9286f992e1505ac48fc805bd32 --- /dev/null +++ b/MEC015/SRV/BW_SUB/jsons/BwChgEventSubscription_BR.json @@ -0,0 +1,9 @@ +{ + "subscriptionType": "BwChgEventSubscription", + "filterCriteria": [ + { + "appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f" + } + ] + } + \ No newline at end of file diff --git a/MEC015/SRV/BW_SUB/jsons/BwChgEventSubscription_BR_02.json b/MEC015/SRV/BW_SUB/jsons/BwChgEventSubscription_BR_02.json new file mode 100644 index 0000000000000000000000000000000000000000..9ae57154cafcd3af89db88db3b4fd20346adbddc --- /dev/null +++ b/MEC015/SRV/BW_SUB/jsons/BwChgEventSubscription_BR_02.json @@ -0,0 +1,13 @@ +{ + "subscriptionType": "BwChgEventSubscription", + "callbackReference": "http://callback.uri/1", + "websockNotifConfig": { + "websocketUri ": "someuri", + "requestWebsocketUri": true + }, + "filterCriteria": [ + { + "appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f" + } + ] +} \ No newline at end of file diff --git a/MEC015/SRV/BW_SUB/jsons/UpdateBwChgEventSubscription.json b/MEC015/SRV/BW_SUB/jsons/UpdateBwChgEventSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..a7a63eda91ad22cba9f39e33abe46c78a582217b --- /dev/null +++ b/MEC015/SRV/BW_SUB/jsons/UpdateBwChgEventSubscription.json @@ -0,0 +1,14 @@ +{ + "subscriptionType": "BwChgEventSubscription", + "callbackReference": "http://callback.uri/1", + "_links": { + "self": { + "href": "https://example.com/bwchgeventsubscription/12" + } + }, + "filterCriteria": [ + { + "appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f" + } + ] +} \ No newline at end of file diff --git a/MEC015/SRV/BW_SUB/schemas/BwChgEventNotification.schema.json b/MEC015/SRV/BW_SUB/schemas/BwChgEventNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..2fafe7ab049b0d398f0ef9d63021c4d34c9e16a2 --- /dev/null +++ b/MEC015/SRV/BW_SUB/schemas/BwChgEventNotification.schema.json @@ -0,0 +1,92 @@ +{ + "properties": { + "notificationType": { + "description": "Shall be set to 'BwChgEventNotification'.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "timeStamp": { + "description": "Time stamp to indicate when the corresponding information elements are sent.", + "properties": { + "seconds": { + "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "nanoSeconds": { + "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + } + }, + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "dataVolDispersion": { + "items": { + "properties": { + "dataVol": { + "description": "Sum of data volume (UL/DL) exchanged per UE per applications, ETSI TS 123 288 [i.4].", + "format": "uint32", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint32" + }, + "appInsId": { + "description": "Application instance identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ueIp": { + "description": "Source address identity of session.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "dataVol", + "appInsId" + ], + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "_links": { + "description": "Link to resource related to this notification.", + "properties": { + "subscription": { + "properties": { + "href": { + "description": "A link to related subscription.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "LinkType" + } + }, + "required": [ + "href" + ], + "type": "object" + } + }, + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "notificationType", + "dataVolDispersion" + ], + "type": "object" +} \ No newline at end of file diff --git a/MEC015/SRV/BW_SUB/schemas/BwChgEventSubscription.schema.json b/MEC015/SRV/BW_SUB/schemas/BwChgEventSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..e512296b100ff54ce099b5eedd31ecc02eb248da --- /dev/null +++ b/MEC015/SRV/BW_SUB/schemas/BwChgEventSubscription.schema.json @@ -0,0 +1,90 @@ +{ + "properties": { + "subscriptionType": { + "description": "Shall be set to 'BwChgEventSubscription'.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "callbackReference": { + "description": "URI exposed by the client on which to receive notifications via HTTP.", + "type": "string", + "format": "uri", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + }, + "websockNotifConfig": { + "properties": { + "requestWebsocketUri": { + "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.", + "type": "boolean", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Boolean" + }, + "websocketUri": { + "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uri" + } + }, + "type": "object", + "x-etsi-ref": "7.5.3" + }, + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "type": "object", + "properties": { + "self": { + "description": "Self-referring URI. The URI shall be unique within the BWM API as it acts as an ID for the subscription.", + "type": "object", + "properties": { + "href": { + "type": "string", + "format": "uri", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "x-etsi-ref": "7.5.2" + } + }, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "filterCriteria": { + "description": "List of filtering criteria for the BW change event subscription.", + "type": "array", + "items": { + "type": "object", + "properties": { + "appInsId": { + "description": "Application instance identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ueIp": { + "description": "Source address identity of session.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "appInsId" + ] + }, + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "subscriptionType", + "filterCriteria" + ] +} \ No newline at end of file diff --git a/MEC015/SRV/BW_SUB/schemas/SubscriptionLinkList.schema.json b/MEC015/SRV/BW_SUB/schemas/SubscriptionLinkList.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..0e9229a65b0c5f9a1e5c321ef4dddce0a013b464 --- /dev/null +++ b/MEC015/SRV/BW_SUB/schemas/SubscriptionLinkList.schema.json @@ -0,0 +1,57 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "type": "object", + "properties": { + "self": { + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "x-etsi-ref": "7.5.2" + }, + "subscriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "subscriptionType": { + "description": "Type of the subscription. The string shall be set according to the 'subscriptionType' attribute of the associated subscription data type event defined in clause 7.3.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href", + "subscriptionType" + ] + }, + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "_links" + ], + "type": "object" +} \ No newline at end of file diff --git a/MEC015/SRV/BW_SUB_LOOKUP/BwEventSubscriptionLookup.robot b/MEC015/SRV/BW_SUB_LOOKUP/BwEventSubscriptionLookup.robot new file mode 100644 index 0000000000000000000000000000000000000000..9787e2b8f3d1028a04ad3a9c76c427f928debb82 --- /dev/null +++ b/MEC015/SRV/BW_SUB_LOOKUP/BwEventSubscriptionLookup.robot @@ -0,0 +1,179 @@ +''[Documentation] robot --outputdir ../../../outputs ./BwEventSubscription.robot +... Test Suite to validate Bandwidth Management Event Subscription (BW) operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library Collections +Library String +Library OperatingSystem +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + +*** Test Cases *** +TC_MEC_MEC015_SRV_BWSUBLOOKUP_001_OK + [Documentation] + ... Check that the IUT responds with a list of BWM change event susbsciption when queried by a MEC Application + ... Reference ETSI GS MEC 015 3.1.1, clause 7.3.3 + ... ETSI GS MEC 015 3.1.1, clause 8.5.3.1 + + [Setup] Create New Subscription Info BwChgEventSubscription + Set Suite Variable ${Location} ${response['headers']['Location']} + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Retrieve the list of subscription information + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + + [TearDown] Remove Subscription Info ${Location} + +TC_MEC_MEC015_SRV_BWSUBLOOKUP_001_BR + [Documentation] + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... Reference ETSI GS MEC 015 3.1.1, clause 7.3.3 + ... ETSI GS MEC 015 3.1.1, clause 8.5.3.1 + + [Setup] Create New Subscription Info BwChgEventSubscription + Set Suite Variable ${Location} ${response['headers']['Location']} + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Get list of subscriptions using query parameters ${INVALID_SUB_FILTER} + Check HTTP Response Status Code Is 400 + + [TearDown] Remove Subscription Info ${Location} + +TC_MEC_MEC015_SRV_BWSUBLOOKUP_001_NF + [Documentation] + ... Check that the IUT responds with an error when no subscription are created + ... Reference ETSI GS MEC 015 3.1.1, clause 7.3.3 + ... ETSI GS MEC 015 3.1.1, clause 8.5.3.1 + + Retrieve the list of subscription information + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC015_SRV_BWSUBLOOKUP_002_OK + [Documentation] + ... Check that the IUT responds with a list of subscriptions for notifications on services availability when queried by a MEC Application - Filter on subscription_type + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6 + ... ETSI GS MEC 015 3.1.1, clause 7.3.3 + ... ETSI GS MEC 015 3.1.1, clause 8.5.3.1 + + [Setup] Create New Subscription Info BwChgEventSubscription + Set Suite Variable ${Location} ${response['headers']['Location']} + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Get list of subscriptions using query parameters ${SUB_FILTER} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + + [TearDown] Remove Subscription Info ${Location} + +TC_MEC_MEC015_SRV_BWSUBLOOKUP_002_NF + [Documentation] + ... Check that the IUT responds with with an error when no subscription matches with the filter - Filter on subscription_type + ... Reference ETSI GS MEC 015 3.1.1, clause 6.2.6 + ... ETSI GS MEC 015 3.1.1, clause 7.3.3 + ... ETSI GS MEC 015 3.1.1, clause 8.5.3.1 + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Get list of subscriptions using query parameters ${SUB_FILTER} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC015_SRV_BWSUBLOOKUP_003_OK + [Documentation] + ... Check that the IUT responds with a BWM change event susbsciption when queried by a MEC Application + ... Reference ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.6.3.1 + + [Setup] Create New Subscription Info BwChgEventSubscription + + Set Suite Variable ${Location} ${response['body']['_links']['self']['href']} + ${elements} = Split String ${Location} / + ${SUBSCRIPTION_ID} = Get From List ${elements} -1 + Set Suite Variable ${SUBSCRIPTION_ID} ${SUBSCRIPTION_ID} + + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + + Retrieve existing subscription information ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is BwChgEventSubscription + + ${subscription_type} Get value entry from JSON file BwChgEventSubscription subscriptionType + ${callbackReference} Get value entry from JSON file BwChgEventSubscription callbackReference + ${filterCriteria} Get value entry from JSON file BwChgEventSubscription filterCriteria + + Should Be Equal As Strings ${response['body']['subscriptionType']} ${subscription_type} + Should Be Equal As Strings ${response['body']['callbackReference']} ${callbackReference} + Should Be Equal As Strings ${response['body']['filterCriteria']['appInsId']} ${filterCriteria['appInsId']} + + [TearDown] Remove Subscription Info ${Location} + +TC_MEC_MEC015_SRV_BWSUBLOOKUP_003_NF + [Documentation] + ... Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... Reference ETSI GS MEC 015 3.1.1, clause 7.3.2 + ... ETSI GS MEC 015 3.1.1, clause 8.6.3.1 + + Retrieve existing subscription information ${SUB_ID} + Check HTTP Response Status Code Is 404 + + +*** Keywords *** +Retrieve the list of subscription information + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve existing subscription information + [Arguments] ${SUB_ID} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUB_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Get list of subscriptions using query parameters + [Arguments] ${subscription_type} + Should Be True ${PIC_MEC_SYSTEM} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=${subscription_type} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Create New Subscription Info + [Arguments] ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Remove Subscription Info + [Arguments] ${delete_url} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + DELETE ${delete_url} \ No newline at end of file diff --git a/MEC015/SRV/BW_SUB_LOOKUP/environment/variables.txt b/MEC015/SRV/BW_SUB_LOOKUP/environment/variables.txt new file mode 100644 index 0000000000000000000000000000000000000000..48f3045c605c40788c7d0cae87199bc6b8a1086c --- /dev/null +++ b/MEC015/SRV/BW_SUB_LOOKUP/environment/variables.txt @@ -0,0 +1,25 @@ +*** Variables *** +####Env variable for the ETSI MEC Sandbox +${apiRoot} +${apiName} bwm +${apiVersion} v1 + +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} mockoon +${MEC-APP_PORT} 3001 + +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + + +# Specific variables +${appInsId} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f +${NON_EXISTENT_APP_INSTANCE_ID} NON_ESISTENT_APP_INSTANCE_ID + +${SUB_TYPE} BwChgEventSubscription + +${SUB_FILTER} bw_chg +${INVALID_SUB_FILTER} bw_chg_invalid + +${SUB_ID} 123 +${HREF} /bwm/v1/subscriptions/1 +${CALLBACK_URI} http://callback.uri/1 diff --git a/MEC015/SRV/BW_SUB_LOOKUP/jsons/BwChgEventSubscription.json b/MEC015/SRV/BW_SUB_LOOKUP/jsons/BwChgEventSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..f59f7c7ecaea073c7dc2926592d7c61ff4ef58a2 --- /dev/null +++ b/MEC015/SRV/BW_SUB_LOOKUP/jsons/BwChgEventSubscription.json @@ -0,0 +1,9 @@ +{ + "subscriptionType": "BwChgEventSubscription", + "callbackReference": "http://callback.uri/1", + "filterCriteria": [ + { + "appInsId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f" + } + ] +} diff --git a/MEC015/SRV/BW_SUB_LOOKUP/schemas/BwChgEventSubscription.schema.json b/MEC015/SRV/BW_SUB_LOOKUP/schemas/BwChgEventSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..e512296b100ff54ce099b5eedd31ecc02eb248da --- /dev/null +++ b/MEC015/SRV/BW_SUB_LOOKUP/schemas/BwChgEventSubscription.schema.json @@ -0,0 +1,90 @@ +{ + "properties": { + "subscriptionType": { + "description": "Shall be set to 'BwChgEventSubscription'.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "callbackReference": { + "description": "URI exposed by the client on which to receive notifications via HTTP.", + "type": "string", + "format": "uri", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "URI" + }, + "websockNotifConfig": { + "properties": { + "requestWebsocketUri": { + "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.", + "type": "boolean", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Boolean" + }, + "websocketUri": { + "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uri" + } + }, + "type": "object", + "x-etsi-ref": "7.5.3" + }, + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "type": "object", + "properties": { + "self": { + "description": "Self-referring URI. The URI shall be unique within the BWM API as it acts as an ID for the subscription.", + "type": "object", + "properties": { + "href": { + "type": "string", + "format": "uri", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "x-etsi-ref": "7.5.2" + } + }, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "filterCriteria": { + "description": "List of filtering criteria for the BW change event subscription.", + "type": "array", + "items": { + "type": "object", + "properties": { + "appInsId": { + "description": "Application instance identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "ueIp": { + "description": "Source address identity of session.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "appInsId" + ] + }, + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "subscriptionType", + "filterCriteria" + ] +} \ No newline at end of file diff --git a/MEC015/SRV/BW_SUB_LOOKUP/schemas/SubscriptionLinkList.schema.json b/MEC015/SRV/BW_SUB_LOOKUP/schemas/SubscriptionLinkList.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..0e9229a65b0c5f9a1e5c321ef4dddce0a013b464 --- /dev/null +++ b/MEC015/SRV/BW_SUB_LOOKUP/schemas/SubscriptionLinkList.schema.json @@ -0,0 +1,57 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "type": "object", + "properties": { + "self": { + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href" + ], + "x-etsi-ref": "7.5.2" + }, + "subscriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "subscriptionType": { + "description": "Type of the subscription. The string shall be set according to the 'subscriptionType' attribute of the associated subscription data type event defined in clause 7.3.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "href", + "subscriptionType" + ] + }, + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "_links" + ], + "type": "object" +} \ No newline at end of file diff --git a/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot b/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot index 46bf70e4322b494a4d6bcbec1d63d02b078af59b..99ccac7dd2e7175f5487751915b749cd28c158aa 100644 --- a/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot +++ b/MEC015/SRV/MTS/MultiAccessTrafficSteering.robot @@ -8,6 +8,7 @@ Resource ../../../GenericKeywords.robot Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem Library String +Library Collections *** Test Cases *** TC_MEC_MEC015_SRV_MTS_001_OK @@ -15,9 +16,9 @@ TC_MEC_MEC015_SRV_MTS_001_OK ... Check that the IUT responds with the Multi-access Traffic Steering information ... when queried by a MEC Application ... - ... ETSI GS MEC 015 V2.2.1, clause 6.2.6, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.4, - ... ETSI GS MEC 015 V2.2.1, clause 9.3.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.6, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.4, + ... ETSI GS MEC 015 v3.1.1, clause 9.3.3.1 Retrieve MTS capability information Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsCapabilityInfo @@ -28,12 +29,12 @@ TC_MEC_MEC015_SRV_MTS_002_OK_01 ... Check that the IUT responds with the list of configured Multi-access Traffic Steering ... when queried by a MEC Application - none ... - ... ETSI GS MEC 015 V2.2.1, clause 6.2.6, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 9.3.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.6, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 9.3.3.1 [Setup] Create new App Instance and Register MTS session CreateAppInstanceRequest MtsSessionInfoApplicationSpecific ${elements} = Split String ${response['headers']['Location']} / - Set Suite Variable ${SESSION_ID} ${elements}[3] + Set Suite Variable ${SESSION_ID} ${elements}[-1] Retrieve MTS session list information Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsSessionInfo @@ -45,13 +46,13 @@ TC_MEC_MEC015_SRV_MTS_002_OK_02 ... Check that the IUT responds with the list of configured Multi-access Traffic Steering ... when queried by a MEC Application - app_instance_id ... - ... ETSI GS MEC 015 V2.2.1, clause 6.2.6, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 9.5.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.6, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 9.5.3.1 [Setup] Create new App Instance and Register MTS session CreateAppInstanceRequest MtsSessionInfoApplicationSpecific ${elements} = Split String ${response['headers']['Location']} / - Set Suite Variable ${SESSION_ID} ${elements}[3] - Retrieve MTS session list information using filter ${APP_NAME_FILTER} ${APP_INSTANCE_ID} + Set Suite Variable ${SESSION_ID} ${elements}[-1] + Retrieve MTS session list information using filter ${CORRECT_FILTER} ${APP_INSTANCE_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsSessionInfo FOR ${mstSessionInfo} IN @{response['body']} @@ -66,11 +67,12 @@ TC_MEC_MEC015_SRV_MTS_002_OK_03 ... Check that the IUT responds with the list of configured Multi-access Traffic Steering ... when queried by a MEC Application - app_name ... - ... ETSI GS MEC 015 V2.2.1, clause 6.2.6, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 9.5.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.6, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 9.5.3.1 [Setup] Create new App Instance and Register MTS session CreateAppInstanceRequest MtsSessionInfoApplicationSpecific - + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${SESSION_ID} ${elements}[-1] Retrieve MTS session list information using filter ${APP_NAME_FILTER} ${APP_NAME} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsSessionInfo @@ -81,10 +83,12 @@ TC_MEC_MEC015_SRV_MTS_002_OK_03 ... Check that the IUT responds with the list of configured Multi-access Traffic Steering ... when queried by a MEC Application - session_id ... - ... ETSI GS MEC 015 V2.2.1, clause 6.2.6, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 9.5.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.6, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 9.5.3.1 [Setup] Create new App Instance and Register MTS session CreateAppInstanceRequest MtsSessionInfoApplicationSpecific + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${SESSION_ID} ${elements}[-1] Retrieve MTS session list information using filter ${SESSION_ID_FILTER} ${SESSION_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsSessionInfo @@ -97,12 +101,12 @@ TC_MEC_MEC015_SRV_MTS_002_BR ... Check that the IUT responds with an error ... when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.6, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 9.5.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.6, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 9.5.3.1 [Setup] Create new App Instance and Register MTS session CreateAppInstanceRequest MtsSessionInfoApplicationSpecific ${elements} = Split String ${response['headers']['Location']} / - Set Suite Variable ${SESSION_ID} ${elements}[3] + Set Suite Variable ${SESSION_ID} ${elements}[-1] Retrieve MTS session list information using filter ${BAD_FILTER} ${APP_INSTANCE_ID} Check HTTP Response Status Code Is 400 @@ -113,7 +117,7 @@ TC_MEC_MEC015_SRV_MTS_002_NF [Documentation] ... Check that the IUT responds with an error ... when a request with an unknown resource URI is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 9.5.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 9.5.3.1 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml [Setup] Delete APP Instance ${NOT_EXISTING_APP_INSTANCE_ID} Retrieve MTS session list information using filter ${CORRECT_FILTER} ${NOT_EXISTING_APP_INSTANCE_ID} @@ -125,9 +129,9 @@ TC_MEC_MEC015_SRV_MTS_003_OK_01 [Documentation] ... Check that the IUT creates a MTS session when queried by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.6, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 9.5.3.2 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.6, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 9.5.3.2 [Setup] Create new App Instance CreateAppInstanceRequest Register MTS session MtsSessionInfoApplicationSpecific @@ -150,11 +154,13 @@ TC_MEC_MEC015_SRV_MTS_003_OK_02 [Documentation] ... Check that the IUT creates a MTS session when queried by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.7 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 9.5.3.2 - #[Setup] Create new App Instance CreateAppInstanceRequest + ... ETSI GS MEC 015 v3.1.1, clause 6.2.7 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 9.5.3.2 + [Setup] Create new App Instance CreateAppInstanceRequest Register MTS session MtsSessionInfoSessionSpecific + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${SESSION_ID} ${elements}[-1] Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is MtsSessionInfo ${appInsId} Get value entry from JSON file MtsSessionInfoSessionSpecific appInsId @@ -166,21 +172,23 @@ TC_MEC_MEC015_SRV_MTS_003_OK_02 Should Be Equal As Strings ${response['body']['appInsId']} ${appInsId} Should Be Equal As Strings ${response['body']['requestType']} ${requestType} - Should Be Equal As Strings ${response['body']['flowFilter']} ${flowFilter} + Dictionaries Should Be Equal ${response['body']['flowFilter'][0]} ${flowFilter}[0] Should Be Equal As Strings ${response['body']['qosD']} ${qosD} Should Be Equal As Strings ${response['body']['mtsMode']} ${mtsMode} Should Be Equal As Strings ${response['body']['trafficDirection']} ${trafficDirection} - [TearDown] Delete APP Instance ${APP_INSTANCE_ID} + [TearDown] Unregister from the MTS Service ${SESSION_ID} + Delete APP Instance ${APP_INSTANCE_ID} + TC_MEC_MEC015_SRV_MTS_003_BR [Documentation] ... Check that the IUT responds with an error ... when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.7 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 9.5.3.2 - [Setup] Create new App Instance CreateAppInstanceRequest + ... ETSI GS MEC 015 v3.1.1, clause 6.2.7 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 9.5.3.2 + [Setup] Create new App Instance CreateAppInstanceRequest Register MTS session MtsSessionInfoApplicationSpecific_BR Check HTTP Response Status Code Is 400 [TearDown] Delete APP Instance ${APP_INSTANCE_ID} @@ -190,12 +198,12 @@ TC_MEC_MEC015_SRV_MTS_004_OK ... Check that the IUT responds with a configured Multi-access Traffic Steering session ... when queried by a MEC Application ... - ... ETSI GS MEC 015 V2.2.1, clause 6.2.10 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 9.4.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.10 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 9.4.3.1 [Setup] Create new App Instance and Register MTS session CreateAppInstanceRequest MtsSessionInfoApplicationSpecific ${elements} = Split String ${response['headers']['Location']} / - Set Suite Variable ${SESSION_ID} ${elements}[3] + Set Suite Variable ${SESSION_ID} ${elements}[-1] Retrieve single MTS session ${SESSION_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsSessionInfo @@ -215,9 +223,9 @@ TC_MEC_MEC015_SRV_MTS_004_BR ... Check that the IUT responds with an error ... when a request with incorrect parameters is sent by a MEC Application ... - ... ETSI GS MEC 015 V2.2.1, clause 6.2.10 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 9.4.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.10 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 9.4.3.1 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml Retrieve single MTS session ${WRONG_SESSION_ID} Check HTTP Response Status Code Is 404 @@ -226,7 +234,7 @@ TC_MEC_MEC015_SRV_MTS_004_NF [Documentation] ... Check that the IUT responds with an error ... when a request with an unknown resource URI is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 9.4.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 9.4.3.1 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml [Setup] Unregister from the MTS Service ${NOT_EXISTING_SESSION_ID} Retrieve single MTS session ${NOT_EXISTING_SESSION_ID} @@ -237,12 +245,12 @@ TC_MEC_MEC015_SRV_MTS_005_OK [Documentation] ... Check that the IUT updates the information about an individual MTS session ... when commanded by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.9 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 9.4.3.2 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.9 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 9.4.3.2 [Setup] Create new App Instance and Register MTS session CreateAppInstanceRequest MtsSessionInfoApplicationSpecific ${elements} = Split String ${response['headers']['Location']} / - Set Suite Variable ${SESSION_ID} ${elements}[3] + Set Suite Variable ${SESSION_ID} ${elements}[-1] Update requested requirements on the MTS Service ${SESSION_ID} MtsSessionInfoApplicationSpecificUpdate Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is MtsSessionInfo @@ -260,13 +268,13 @@ TC_MEC_MEC015_SRV_MTS_005_OK TC_MEC_MEC015_SRV_MTS_005_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.9 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 9.4.3.2 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.9 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 9.4.3.2 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml [Setup] Create new App Instance and Register MTS session CreateAppInstanceRequest MtsSessionInfoApplicationSpecific ${elements} = Split String ${response['headers']['Location']} / - Set Suite Variable ${SESSION_ID} ${elements}[3] + Set Suite Variable ${SESSION_ID} ${elements}[-1] Update requested requirements on the MTS Service ${SESSION_ID} MtsSessionInfoApplicationSpecificUpdate_BR Check HTTP Response Status Code Is 400 [TearDown] Unregister from the MTS Service And Delete APP Instance ${SESSION_ID} ${APP_INSTANCE_ID} @@ -275,11 +283,11 @@ TC_MEC_MEC015_SRV_MTS_005_BR TC_MEC_MEC015_SRV_MTS_005_NF [Documentation] ... Check that the IUT responds with an error when a request with an unknown resource URI is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.9 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 9.4.3.2 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.9 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 9.4.3.2 ... https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.yaml - #[Setup] Unregister from the MTS Service ${NOT_EXISTING_SESSION_ID} + [Setup] Unregister from the MTS Service ${NOT_EXISTING_SESSION_ID} Update requested requirements on the MTS Service ${NOT_EXISTING_SESSION_ID} MtsSessionInfoApplicationSpecificUpdate Check HTTP Response Status Code Is 404 @@ -289,12 +297,12 @@ TC_MEC_MEC015_SRV_MTS_006_OK ... Check that the IUT deregisters a MTS session ... when commanded by a MEC Application ... - ... ETSI GS MEC 015 V2.2.1, clause 6.2.8 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 9.4.3.3 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.8 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 9.4.3.3 [Setup] Create new App Instance and Register MTS session CreateAppInstanceRequest MtsSessionInfoApplicationSpecific ${elements} = Split String ${response['headers']['Location']} / - Set Suite Variable ${SESSION_ID} ${elements}[3] + Set Suite Variable ${SESSION_ID} ${elements}[-1] Unregister from the MTS Service ${SESSION_ID} Check HTTP Response Status Code Is 204 @@ -303,9 +311,9 @@ TC_MEC_MEC015_SRV_MTS_006_NF ... Check that the IUT deregisters a MTS session ... when commanded by a MEC Application ... - ... ETSI GS MEC 015 V2.2.1, clause 6.2.8 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 9.4.3.3 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.8 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 9.4.3.3 [Setup] Unregister from the MTS Service ${NOT_EXISTING_SESSION_ID} Unregister from the MTS Service ${NOT_EXISTING_SESSION_ID} Check HTTP Response Status Code Is 404 diff --git a/MEC015/SRV/MTS/environment/variables_sandbox.txt b/MEC015/SRV/MTS/environment/variables_sandbox.txt index 3901782f4e93dfdfda6cff09e3a869baf240dc2a..8ff761b8981ab2ddaee932a73ba8ceae08172a84 100644 --- a/MEC015/SRV/MTS/environment/variables_sandbox.txt +++ b/MEC015/SRV/MTS/environment/variables_sandbox.txt @@ -1,23 +1,23 @@ *** Variables *** # Generic variables ${SCHEMA} https -${HOST} try-mec.etsi.org +${HOST} 192.168.40.50 ${PORT} 443 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l -${apiRoot} //mep1 +${apiRoot} sbxme1qzq4/mep1 ${apiName} mts ${apiVersion} v1 # Specific variables -${APP_INSTANCE_ID} 81c51643-8c6f-4781-ad45-f8a457ca549b +${APP_INSTANCE_ID} f1e4d448-e277-496b-bf63-98391cfd20fb ${NOT_EXISTING_APP_INSTANCE_ID} NOT_EXISTING_APP_INS_ID ${CORRECT_FILTER} app_instance_id ${APP_NAME_FILTER} app_name ${SESSION_ID_FILTER} session_id ${BAD_FILTER} appInsId -${APP_NAME} app_name +${APP_NAME} appName ${SESSION_ID} 5 ${WRONG_SESSION_ID} WRONG_SESSION_ID @@ -29,9 +29,9 @@ ${TRAFFIC_DIRECTION_DL} 00 ##Variables for App Instances management -${APP_INST_SCHEMA} https -${APP_INST_HOST} try-mec.etsi.org -${APP_INST_PORT} 443 +${APP_INST_SCHEMA} http +${APP_INST_HOST} 192.168.40.50 +${APP_INST_PORT} 80 ${apiRoot_APP_INST} ${apiName_APP_INST} app_lcm ${apiVersion_APP_INST} v1 diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json index 93cbbb05b5ee774b87a3f45fc0f473e695d85f56..3afd369b6f738903dc47b483c1a2eb9c80a4c57c 100644 --- a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json +++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecific.json @@ -1,6 +1,7 @@ { - "appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b", + "appInsId": "f1e4d448-e277-496b-bf63-98391cfd20fb", "requestType": 0, + "appName": "appName", "qosD": { "minTpt": 10 }, diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json index c1134009bac06d405e718b6f3cfcd8f511bdcef9..f94afa3c0926afac9896738927b2542b9015270b 100644 --- a/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json +++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoApplicationSpecificUpdate.json @@ -1,5 +1,5 @@ { - "appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b", + "appInsId": "f1e4d448-e277-496b-bf63-98391cfd20fb", "requestType": 0, "mtsMode": 0, "trafficDirection": "00" diff --git a/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json b/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json index 9308f2d378063de56572b23dacac60fac29267ea..2514a926d929dc14500941c4a46ea02889e76fcb 100644 --- a/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json +++ b/MEC015/SRV/MTS/jsons/MtsSessionInfoSessionSpecific.json @@ -1,6 +1,6 @@ { - "appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b", - "requestType": 1, + "appInsId": "f1e4d448-e277-496b-bf63-98391cfd20fb", + "requestType": 0, "mtsMode":4, "trafficDirection":"00", "qosD": { diff --git a/MEC015/SRV/TM/TrafficManagement.robot b/MEC015/SRV/TM/TrafficManagement.robot index 18d908a2fa3247f0e782a1e3ba703122e30cb7e1..ffefc22f8013cf68c628e33952a856a29a8cb166 100644 --- a/MEC015/SRV/TM/TrafficManagement.robot +++ b/MEC015/SRV/TM/TrafficManagement.robot @@ -8,6 +8,7 @@ Resource ../../../GenericKeywords.robot Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem Library String +Library Collections *** Test Cases *** @@ -15,9 +16,9 @@ TC_MEC_MEC015_SRV_TM_001_OK_01 [Documentation] ... Check that the IUT responds with the list of configured bandwidth allocations ... when queried by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2, - ... ETSI GS MEC 015 V2.2.1, clause 8.4.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2, + ... ETSI GS MEC 015 v3.1.1, clause 8.4.3.1 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Retrieve the list of configured bandwidth allocations Check HTTP Response Status Code Is 200 @@ -29,9 +30,9 @@ TC_MEC_MEC015_SRV_TM_001_OK_02 [Documentation] ... Check that the IUT responds with the list of configured bandwidth allocations ... when queried by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2, - ... ETSI GS MEC 015 V2.2.1, clause 8.4.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2, + ... ETSI GS MEC 015 v3.1.1, clause 8.4.3.1 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Retrieve the list of configured bandwidth using filter ${CORRECT_FILTER} ${APP_INSTANCE_ID} Check HTTP Response Status Code Is 200 @@ -48,9 +49,9 @@ TC_MEC_MEC015_SRV_TM_001_OK_03 [Documentation] ... Check that the IUT responds with a configured bandwidth allocation ... when queried by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2, - ... ETSI GS MEC 015 V2.2.1, clause 8.4.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2, + ... ETSI GS MEC 015 v3.1.1, clause 8.4.3.1 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Retrieve the list of configured bandwidth using filter ${APP_NAME_FILTER} ${APP_NAME} Check HTTP Response Status Code Is 200 @@ -61,9 +62,9 @@ TC_MEC_MEC015_SRV_TM_001_OK_04 [Documentation] ... Check that the IUT responds with a configured bandwidth allocation ... when queried by a MEC Application - session_id - ... ETSI GS MEC 015 V2.2.1, clause 6.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2, - ... ETSI GS MEC 015 V2.2.1, clause 8.4.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2, + ... ETSI GS MEC 015 v3.1.1, clause 8.4.3.1 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Retrieve the list of configured bandwidth using filter ${SESSION_ID_FILTER} ${SESSION_ID} Check HTTP Response Status Code Is 200 @@ -76,7 +77,7 @@ TC_MEC_MEC015_SRV_TM_001_BR [Documentation] ... Check that the IUT responds with an error ... when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 015 V2.2.1, clause 8.4.3.1 + ... Reference ETSI GS MEC 015 v3.1.1, clause 8.4.3.1 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Retrieve the list of configured bandwidth using filter ${BAD_FILTER} ${APP_INSTANCE_ID} @@ -88,9 +89,9 @@ TC_MEC_MEC015_SRV_TM_001_NF_01 [Documentation] ... Check that the IUT responds with an error when ... a request with an unknown resource URI is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2, - ... ETSI GS MEC 015 V2.2.1, clause 8.4.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2, + ... ETSI GS MEC 015 v3.1.1, clause 8.4.3.1 Retrieve the list of configured bandwidth using filter ${CORRECT_FILTER} ${NON_EXISTENT_APP_INSTANCE_ID} Check HTTP Response Status Code Is 404 @@ -98,9 +99,9 @@ TC_MEC_MEC015_SRV_TM_001_NF_02 [Documentation] ... Check that the IUT responds with an error ... when a request with an unknown resource URI is sent by a MEC Application - app_name - ... ETSI GS MEC 015 V2.2.1, clause 6.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2, - ... ETSI GS MEC 015 V2.2.1, clause 8.4.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2, + ... ETSI GS MEC 015 v3.1.1, clause 8.4.3.1 Retrieve the list of configured bandwidth using filter ${APP_NAME_FILTER} ${NON_EXISTENT_APP_NAME} Check HTTP Response Status Code Is 404 @@ -108,9 +109,9 @@ TC_MEC_MEC015_SRV_TM_001_NF_03 [Documentation] ... Check that the IUT responds with an error ... when a request with an unknown resource URI is sent by a MEC Application - session_id - ... ETSI GS MEC 015 V2.2.1, clause 6.2.5, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2, - ... ETSI GS MEC 015 V2.2.1, clause 8.4.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.5, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2, + ... ETSI GS MEC 015 v3.1.1, clause 8.4.3.1 Retrieve the list of configured bandwidth using filter ${SESSION_ID_FILTER} ${NON_EXISTENT_SESSION_ID} Check HTTP Response Status Code Is 404 @@ -118,11 +119,13 @@ TC_MEC_MEC015_SRV_TM_001_NF_03 TC_MEC_MEC015_SRV_TM_002_OK [Documentation] ... Check that the IUT acknowledges a creation of a bandwidthAllocation resource - ... ETSI GS MEC 015 V2.2.1, clause 6.2.2, - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2, - ... ETSI GS MEC 015 V2.2.1, clause 8.4.3.4 - [Setup] Create new App Instance CreateAppInstanceRequest + ... ETSI GS MEC 015 v3.1.1, clause 6.2.2, + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2, + ... ETSI GS MEC 015 v3.1.1, clause 8.4.3.4 + [Setup] Create new App Instance CreateAppInstanceRequest Registration for bandwidth services ${APP_INSTANCE_ID} BwInfoApplicationSpecific + ${elements} = Split String ${response['headers']['Location']} / + Set Suite Variable ${ALLOCATION_ID} ${elements}[-1] Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is BwInfo ${appInsId} Get value entry from JSON file BwInfoApplicationSpecific appInsId @@ -133,25 +136,25 @@ TC_MEC_MEC015_SRV_TM_002_OK Should Be Equal As Strings ${response['body']['requestType']} ${requestType} Should Be Equal As Strings ${response['body']['fixedAllocation']} ${fixedAllocation} Should Be Equal As Strings ${response['body']['allocationDirection']} ${allocationDirection} - [TearDown] Delete App Instance ${APP_INSTANCE_ID} + [TearDown] Unregister bw Service And Delete APP Instance ${ALLOCATION_ID} ${APP_INSTANCE_ID} TC_MEC_MEC015_SRV_TM_002_BR_01 [Documentation] ... Check that the IUT responds with an error ... when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 8.4.3.4 + ... ETSI GS MEC 015 v3.1.1, clause 8.4.3.4 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json [Setup] Create new App Instance CreateAppInstanceRequest Registration for bandwidth services ${APP_INSTANCE_ID} BwInfo_BR Check HTTP Response Status Code Is 400 - [TearDown] Delete App Instance ${APP_INSTANCE_ID} + [TearDown] Delete App Instance ${APP_INSTANCE_ID} TC_MEC_MEC015_SRV_TM_002_BR_02 [Documentation] ... Check that the IUT responds with an error ... when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 8.4.3.4 + ... ETSI GS MEC 015 v3.1.1, clause 8.4.3.4 ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json [Setup] Create new App Instance CreateAppInstanceRequest Registration for bandwidth services ${APP_INSTANCE_ID} BwInfo_BR2 @@ -164,9 +167,9 @@ TC_MEC_MEC015_SRV_TM_003_OK [Documentation] ... Check that the IUT responds with the configured bandwidth allocation ... when queried by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.1 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Get a bandwidth allocation ${ALLOCATION_ID} Check HTTP Response Status Code Is 200 @@ -179,9 +182,9 @@ TC_MEC_MEC015_SRV_TM_003_NF [Documentation] ... Check that the IUT responds with an error ... when a request for an unknown URI is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.5 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.1 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.5 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.1 [Setup] Unregister Bandwidth Management Service ${NON_EXISTENT_ALLOCATION_ID} Get a bandwidth allocation ${NON_EXISTENT_ALLOCATION_ID} Check HTTP Response Status Code Is 404 @@ -192,10 +195,10 @@ TC_MEC_MEC015_SRV_TM_004_OK [Documentation] ... Check that the IUT updates the requested bandwidth requirements ... when commanded by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.4 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.2 - #[Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific + ... ETSI GS MEC 015 v3.1.1, clause 6.2.4 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.2 + [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Update a bandwidth allocation ${ALLOCATION_ID} BwInfoUpdate ${appInsId} Get value entry from JSON file BwInfoUpdate appInsId ${fixedAllocation} Get value entry from JSON file BwInfoUpdate fixedAllocation @@ -205,15 +208,15 @@ TC_MEC_MEC015_SRV_TM_004_OK Should Be Equal As Strings ${response['body']['appInsId']} ${appInsId} Should Be Equal As Strings ${response['body']['fixedAllocation']} ${fixedAllocation} Should Be Equal As Strings ${response['body']['allocationDirection']} ${allocationDirection} - #[TearDown] Unregister bw Service And Delete APP Instance ${ALLOCATION_ID} ${APP_INSTANCE_ID} + [TearDown] Unregister bw Service And Delete APP Instance ${ALLOCATION_ID} ${APP_INSTANCE_ID} TC_MEC_MEC015_SRV_TM_004_BR_01 [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.4 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.2 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.4 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.2 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Update a bandwidth allocation ${ALLOCATION_ID} BwInfoUpdate_BR Check HTTP Response Status Code Is 400 @@ -223,9 +226,9 @@ TC_MEC_MEC015_SRV_TM_004_BR_01 TC_MEC_MEC015_SRV_TM_004_BR_02 [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.4 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.2 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.4 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.2 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Update a bandwidth allocation ${ALLOCATION_ID} BwInfoUpdate_BR2 Check HTTP Response Status Code Is 400 @@ -235,9 +238,9 @@ TC_MEC_MEC015_SRV_TM_004_BR_02 TC_MEC_MEC015_SRV_TM_004_NF [Documentation] ... Check that the IUT responds with an error when a request sent by a MEC Application doesn't comply with a required condition - ... ETSI GS MEC 015 V2.2.1, clause 6.2.4 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.2 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.4 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.2 #[Setup] Delete APP Instance ${NON_EXISTENT_ALLOCATION_ID} Update a bandwidth allocation ${NON_EXISTENT_ALLOCATION_ID} BwInfoUpdate @@ -248,9 +251,9 @@ TC_MEC_MEC015_SRV_TM_005_OK [Documentation] ... Check that the IUT when provided with just the changes (deltas) ... updates the requested bandwidth requirements when commanded by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.4 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.3 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.4 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.3 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Request a deltas changes ${ALLOCATION_ID} BwInfoDeltas @@ -268,9 +271,9 @@ TC_MEC_MEC015_SRV_TM_005_BR_01 [Documentation] ... Check that the IUT responds with an error ... when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.4 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.3 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.4 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.3 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Request a deltas changes ${ALLOCATION_ID} BwInfoDeltas_BR Check HTTP Response Status Code Is 400 @@ -279,9 +282,9 @@ TC_MEC_MEC015_SRV_TM_005_BR_02 [Documentation] ... Check that the IUT responds with an error ... when a request with incorrect parameters is sent by a MEC Application - sessionFilter shall be present - ... ETSI GS MEC 015 V2.2.1, clause 6.2.4 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.3 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.4 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.3 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Request a deltas changes ${ALLOCATION_ID} BwInfoDeltas_BR2 Check HTTP Response Status Code Is 400 @@ -290,9 +293,9 @@ TC_MEC_MEC015_SRV_TM_005_BR_02 TC_MEC_MEC015_SRV_TM_005_NF [Documentation] ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.4 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.3 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.4 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.3 [Setup] Delete APP Instance ${NON_EXISTENT_ALLOCATION_ID} Request a deltas changes ${NON_EXISTENT_ALLOCATION_ID} BwInfoDeltas Check HTTP Response Status Code Is 404 @@ -301,9 +304,9 @@ TC_MEC_MEC015_SRV_TM_005_NF TC_MEC_MEC015_SRV_TM_006_OK [Documentation] ... Check that the IUT unregisters from the Bandwidth Management Service when commanded by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.3 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.5 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.3 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.5 [Setup] Create new App Instance and Register for bw service CreateAppInstanceRequest BwInfoApplicationSpecific Unregister Bandwidth Management Service ${ALLOCATION_ID} Check HTTP Response Status Code Is 204 @@ -312,9 +315,9 @@ TC_MEC_MEC015_SRV_TM_006_OK TC_MEC_MEC015_SRV_TM_006_NF [Documentation] ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... ETSI GS MEC 015 V2.2.1, clause 6.2.3 - ... ETSI GS MEC 015 V2.2.1, clause 7.2.2 - ... ETSI GS MEC 015 V2.2.1, clause 8.3.3.5 + ... ETSI GS MEC 015 v3.1.1, clause 6.2.3 + ... ETSI GS MEC 015 v3.1.1, clause 7.2.2 + ... ETSI GS MEC 015 v3.1.1, clause 8.3.3.5 [Setup] Unregister Bandwidth Management Service ${NON_EXISTENT_ALLOCATION_ID} Unregister Bandwidth Management Service ${NON_EXISTENT_ALLOCATION_ID} Check HTTP Response Status Code Is 404 @@ -326,7 +329,7 @@ Create new App Instance and Register for bw service Create new App Instance ${appInstancePayload} Registration for bandwidth services ${APP_INSTANCE_ID} ${bwServicePayload} ${elements} = Split String ${response['headers']['Location']} / - Set Suite Variable ${ALLOCATION_ID} ${elements}[3] + Set Suite Variable ${ALLOCATION_ID} ${elements}[-1] @@ -446,7 +449,10 @@ Request a deltas changes Set Headers {"Authorization":"${TOKEN}"} ${path} Catenate SEPARATOR= jsons/ ${content}.json ${body} Get File ${path} - ${json_object}= Evaluate json.loads('''${body}''') json + ${json_object}= Evaluate json.loads('''${body}''') json + # Inject allocation_id into the JSON object + Set To Dictionary ${json_object} allocationId=${allocation_id} + ${body}= Evaluate json.dumps(${json_object}) json Patch ${apiRoot}/${apiName}/${apiVersion}/bw_allocations/${allocation_id} ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/MEC015/SRV/TM/environment/variables_sandbox.txt b/MEC015/SRV/TM/environment/variables_sandbox.txt index 6e72164d75ff2d537e7139d4f20e27f03d997b4e..f3856ea22e439031d622eab3140a7c633ee36902 100644 --- a/MEC015/SRV/TM/environment/variables_sandbox.txt +++ b/MEC015/SRV/TM/environment/variables_sandbox.txt @@ -6,7 +6,7 @@ ${HOST} try-mec.etsi.org ${PORT} 443 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l -${apiRoot} //mep1 +${apiRoot} sbxme1qzq4/mep1 ${apiName} bwm ${apiVersion} v1 @@ -17,7 +17,7 @@ ${apiVersion} v1 ${CORRECT_FILTER} app_instance_id ${BAD_FILTER} appInsId -${APP_INSTANCE_ID} 81c51643-8c6f-4781-ad45-f8a457ca549b +${APP_INSTANCE_ID} f1e4d448-e277-496b-bf63-98391cfd20fb ${NON_EXISTENT_APP_INSTANCE_ID} NON_EXISTENT_INSTANCE_ID ${SESSION_ID} 5 ${APP_NAME_FILTER} app_name diff --git a/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json b/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json index a0688f891dd5d97f06a5efbda055314ef97b692a..5041a812e9aab69743c9fbe1d8be5f92cf52f696 100644 --- a/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json +++ b/MEC015/SRV/TM/jsons/BwInfoApplicationSpecific.json @@ -1,6 +1,7 @@ { - "appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b", + "appInsId": "f1e4d448-e277-496b-bf63-98391cfd20fb", "requestType": 0, "fixedAllocation": "32", - "allocationDirection": "00" + "allocationDirection": "00", + "appName": "appName" } \ No newline at end of file diff --git a/MEC015/SRV/TM/jsons/BwInfoDeltas.json b/MEC015/SRV/TM/jsons/BwInfoDeltas.json index d2d8d10069c9ed5ff909882247c872ad2a6242fc..b061288a35f14d1ca9219c8fc334fafe3c2d1727 100644 --- a/MEC015/SRV/TM/jsons/BwInfoDeltas.json +++ b/MEC015/SRV/TM/jsons/BwInfoDeltas.json @@ -1,5 +1,5 @@ { -"appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b", +"appInsId": "f1e4d448-e277-496b-bf63-98391cfd20fb", "requestType": 0, "fixedAllocation": "32", "allocationDirection": "01" diff --git a/MEC015/SRV/TM/jsons/BwInfoUpdate.json b/MEC015/SRV/TM/jsons/BwInfoUpdate.json index d2d8d10069c9ed5ff909882247c872ad2a6242fc..b061288a35f14d1ca9219c8fc334fafe3c2d1727 100644 --- a/MEC015/SRV/TM/jsons/BwInfoUpdate.json +++ b/MEC015/SRV/TM/jsons/BwInfoUpdate.json @@ -1,5 +1,5 @@ { -"appInsId": "81c51643-8c6f-4781-ad45-f8a457ca549b", +"appInsId": "f1e4d448-e277-496b-bf63-98391cfd20fb", "requestType": 0, "fixedAllocation": "32", "allocationDirection": "01" diff --git a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot index 5766d4be5e82e8da9b1021b4e5d47ad3964e6989..9db53e526cfafdaa21dda9e6320e19168bdaf82e 100644 --- a/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot +++ b/MEC016/MEO/UEAPPCTX/SysUeAppsContext.robot @@ -14,7 +14,7 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v TC_MEC_MEC016_MEO_UEAPPCTX_001_OK [Documentation] ... Check that the IUT acknowledges the creation of the application context when requested by an UE Application - ... Reference ETSI GS MEC 016 v2.2.1, clause 7.4.3.4 + ... Reference ETSI GS MEC 016 v3.1.1, clause 7.4.3.4 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -31,7 +31,7 @@ TC_MEC_MEC016_MEO_UEAPPCTX_001_OK TC_MEC_MEC016_MEO_UEAPPCTX_001_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 016 v2.2.1, clause 7.4.3.4 + ... Reference ETSI GS MEC 016 v3.1.1, clause 7.4.3.4 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -42,7 +42,7 @@ TC_MEC_MEC016_MEO_UEAPPCTX_001_BR TC_MEC_MEC016_MEO_UEAPPCTX_001_NF [Documentation] ... Check that the IUT responds with an error when a request with incorrect URL is sent by a MEC Application - ... Reference ETSI GS MEC 016 v2.2.1, clause 7.4.3.4 + ... Reference ETSI GS MEC 016 v3.1.1, clause 7.4.3.4 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -53,7 +53,7 @@ TC_MEC_MEC016_MEO_UEAPPCTX_001_NF TC_MEC_MEC016_MEO_UEAPPCTX_002_OK [Documentation] ... Check that the IUT updates the application callback reference when commanded by an UE Application - ... Reference ETSI GS MEC 016 v2.2.1, clause 7.5.3.2 + ... Reference ETSI GS MEC 016 v3.1.1, clause 7.5.3.2 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -71,7 +71,7 @@ TC_MEC_MEC016_MEO_UEAPPCTX_002_OK TC_MEC_MEC016_MEO_UEAPPCTX_002_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 016 v2.2.1, clause 7.5.3.2 + ... Reference ETSI GS MEC 016 v3.1.1, clause 7.5.3.2 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -88,7 +88,7 @@ TC_MEC_MEC016_MEO_UEAPPCTX_002_BR TC_MEC_MEC016_MEO_UEAPPCTX_002_NF [Documentation] ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... Reference ETSI GS MEC 016 2.2.1, clause 7.5.3.2 + ... Reference ETSI GS MEC 016 3.1.1, clause 7.5.3.2 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml # Preamble Should Be True ${PIC_MEC_SYSTEM} == 1 @@ -101,7 +101,7 @@ TC_MEC_MEC016_MEO_UEAPPCTX_002_NF TC_MEC_MEC016_MEO_UEAPPCTX_003_OK [Documentation] ... Check that the IUT deletes the application context when commanded by an UE Application - ... Reference ETSI GS MEC 016 2.2.1, clause 7.5.3.5 + ... Reference ETSI GS MEC 016 3.1.1, clause 7.5.3.5 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext # Preamble Should Be True ${PIC_MEC_SYSTEM} == 1 @@ -117,7 +117,7 @@ TC_MEC_MEC016_MEO_UEAPPCTX_003_OK TC_MEC_MEC016_MEO_UEAPPCTX_003_NF [Documentation] ... Check that the IUT deletes the application context when commanded by an UE Application - ... Reference ETSI GS MEC 016 2.2.1, clause 7.5.3.5 + ... Reference ETSI GS MEC 016 3.1.1, clause 7.5.3.5 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/AppContext # Preamble Should Be True ${PIC_MEC_SYSTEM} == 1 @@ -155,12 +155,12 @@ Update application context Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} ${path} Catenate SEPARATOR= jsons/ ${content} - ${body} Get File ${path} + ${body_template} Get File ${path} + ${body} Replace String ${body_template} __CONTEXT_ID__ ${context_id} Put ${apiRoot}/${apiName}/${apiVersion}/app_contexts/${context_id} ${body} ${output}= Output response Set Suite Variable ${response} ${output} - Update application context using wrong endpoint [Arguments] ${context_id} ${content} Set Headers {"Content-Type":"application/json"} diff --git a/MEC016/MEO/UEAPPCTX/environment/variables.txt b/MEC016/MEO/UEAPPCTX/environment/variables.txt index 2d2e4564d957b5e56a211fff0c8993e4d39bef03..230fa067cf636a31c8b85eaeb430ffc01ccbd12f 100644 --- a/MEC016/MEO/UEAPPCTX/environment/variables.txt +++ b/MEC016/MEO/UEAPPCTX/environment/variables.txt @@ -1,11 +1,10 @@ *** Variables *** -${apiRoot} +${apiRoot} sbxme1qzq4/mep1 ${apiName} dev_app ${apiVersion} v1 - -${MEC-APP_SCHEMA} http -${MEC-APP_HOST} mockoon -${MEC-APP_PORT} 3003 +${MEC-APP_SCHEMA} https +${MEC-APP_HOST} 192.168.40.50 +${MEC-APP_PORT} 443 ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/MEC016/MEO/UEAPPCTX/jsons/AppContext.json b/MEC016/MEO/UEAPPCTX/jsons/AppContext.json index 38f47416133770526b009ac21b7cd4aade0a0f0b..97d468c53efb2106d826b406989c5ec13a98ec01 100644 --- a/MEC016/MEO/UEAPPCTX/jsons/AppContext.json +++ b/MEC016/MEO/UEAPPCTX/jsons/AppContext.json @@ -1,13 +1,55 @@ { - "associateDevAppId":"MyNewWornderfulDevAppId", - "appInfo":{ - "appName":"MyNewWornderfulApp", - "appProvider":"TTF012", - "appDVersion":"v0.0.1", - "userAppInstanceInfo":[ - { - } - ] - } -} - + "associateDevAppId": "MyNewId", + "callbackReference": "http://www.umair.com", + "appInfo": { + "appDId": "onboarded-demo4", + "appName": "MyNewWornderfulApp", + "appProvider": "demo", + "appSoftVersion": "v0.1.0", + "appDVersion": "v0.1.0", + "appDescription": "Basic HTTP Ping Pong", + "userAppInstanceInfo": [ + { + "appInstanceId": "c5f834ae-db0c-4eec-bdfe-3dfc55f91b4a", + "appLocation": { + "area": { + "coordinates": [ + [ + [ + 2.302136, + 2.302136 + ], + [ + 2.302136, + 2.302136 + ] + ], + [ + [ + 2.302136, + 2.302136 + ], + [ + 2.302136, + 2.302136 + ] + ] + ] + }, + "countryCode": "US", + "civicAddressElement": [ + { + "caType": 7, + "caValue": "caValue" + }, + { + "caType": 7, + "caValue": "caValue" + } + ] + }, + "referenceURI": "http://example.com/aeiou" + } + ] + } +} \ No newline at end of file diff --git a/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json b/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json index 6186f6a279683f79e6383553bf87f19723af530d..a5e7fc9f7139a71d5cb265dd8f615c2d4bd6b7c1 100644 --- a/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json +++ b/MEC016/MEO/UEAPPCTX/jsons/AppContext_BR.json @@ -1,13 +1,55 @@ { - "associateDevAppId":"MyNewWornderfulDevAppId", - "appInfo":{ - "app":"MyNewWornderfulApp", - "appProvider":"TTF012", - "appDVersion":"v0.0.1", - "userAppInstanceInfo":[ - { - } - ] - } -} - + "associateDevAppId": "MyNewId", + "callbackReference": "http://www.umair.com", + "appInfo": { + "appDId": "onboarded-demo4", + "app": "MyNewWornderfulApp", + "appProvider": "demo", + "appSoftVersion": "v0.1.0", + "appDVersion": "v0.1.0", + "appDescription": "Basic HTTP Ping Pong", + "userAppInstanceInfo": [ + { + "appInstanceId": "c5f834ae-db0c-4eec-bdfe-3dfc55f91b4a", + "appLocation": { + "area": { + "coordinates": [ + [ + [ + 2.302136, + 2.302136 + ], + [ + 2.302136, + 2.302136 + ] + ], + [ + [ + 2.302136, + 2.302136 + ], + [ + 2.302136, + 2.302136 + ] + ] + ] + }, + "countryCode": "US", + "civicAddressElement": [ + { + "caType": 7, + "caValue": "caValue" + }, + { + "caType": 7, + "caValue": "caValue" + } + ] + }, + "referenceURI": "http://example.com/aeiou" + } + ] + } +} \ No newline at end of file diff --git a/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json index cd0f9ef53d3cf74baf0141c3183b05fd25552e17..5857a006c6fa150760c1d3f53ece5c4d31f91fe6 100644 --- a/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json +++ b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext.json @@ -1,15 +1,56 @@ { - "associateDevAppId":"MyNewWornderfulDevAppId", - "contextId": "1", - "callbackReference": "http://127.0.0.1/callbackuri", - "appInfo":{ - "appName":"MyNewWornderfulApp", - "appProvider":"TTF012", - "appDVersion":"v0.0.1", - "userAppInstanceInfo":[ - { - } - ] - } -} - + "contextId": "__CONTEXT_ID__", + "associateDevAppId": "MyNewId", + "callbackReference": "http://www.updated-callback.com", + "appInfo": { + "appDId": "onboarded-demo4", + "appName": "MyNewWornderfulApp", + "appProvider": "demo", + "appSoftVersion": "v0.1.0", + "appDVersion": "v0.1.0", + "appDescription": "Basic HTTP Ping Pong", + "userAppInstanceInfo": [ + { + "appInstanceId": "c5f834ae-db0c-4eec-bdfe-3dfc55f91b4a", + "appLocation": { + "area": { + "coordinates": [ + [ + [ + 2.302136, + 2.302136 + ], + [ + 2.302136, + 2.302136 + ] + ], + [ + [ + 2.302136, + 2.302136 + ], + [ + 2.302136, + 2.302136 + ] + ] + ] + }, + "countryCode": "US", + "civicAddressElement": [ + { + "caType": 7, + "caValue": "caValue" + }, + { + "caType": 7, + "caValue": "caValue" + } + ] + }, + "referenceURI": "http://example.com/aeiou" + } + ] + } +} \ No newline at end of file diff --git a/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json index dcdd441bf3afe0baed552e74cbb09dcf92ef2331..40fa57b1ffb9c205876918f01343dbf49fc3c8e7 100644 --- a/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json +++ b/MEC016/MEO/UEAPPCTX/jsons/UpdateAppContext_BR.json @@ -1,15 +1,57 @@ { - "associateUeAppId":"MyNewWornderfulDevAppId", - "contextId": "1", - "callbackReference": "http://127.0.0.1/callbackuri", - "appInfo":{ - "appName":"MyNewWornderfulApp", - "appProvider":"TTF012", - "appDVersion":"v0.0.1", - "userAppInstanceInfo":[ - { - } - ] - } -} - + "contextId": "__CONTEXT_ID__", + "associateDevAppId": "MyNewId", + "associateUeAppId": "some_value", + "callbackReference": "http://www.updated-callback.com", + "appInfo": { + "appDId": "onboarded-demo4", + "appName": "MyNewWornderfulApp", + "appProvider": "demo", + "appSoftVersion": "v0.1.0", + "appDVersion": "v0.1.0", + "appDescription": "Basic HTTP Ping Pong", + "userAppInstanceInfo": [ + { + "appInstanceId": "c5f834ae-db0c-4eec-bdfe-3dfc55f91b4a", + "appLocation": { + "area": { + "coordinates": [ + [ + [ + 2.302136, + 2.302136 + ], + [ + 2.302136, + 2.302136 + ] + ], + [ + [ + 2.302136, + 2.302136 + ], + [ + 2.302136, + 2.302136 + ] + ] + ] + }, + "countryCode": "US", + "civicAddressElement": [ + { + "caType": 7, + "caValue": "caValue" + }, + { + "caType": 7, + "caValue": "caValue" + } + ] + }, + "referenceURI": "http://example.com/aeiou" + } + ] + } +} \ No newline at end of file diff --git a/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot b/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot index 34a03d6871aacbf7c33d7325780faaba64355cd3..f8626b50dfdb2e501a2acf1adaf23fc3267e6a7e 100644 --- a/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot +++ b/MEC016/MEO/UEAPPLOC/SysUeApplicationsLocation.robot @@ -13,20 +13,20 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v TP_MEC_MEC016_MEO_UEAPPLOC_001_OK [Documentation] ... Check that the IUT sends the locations available for instantiation of a specific user application when requested by an UE Application - ... Reference ETSI GS MEC 016 2.2.1, clause 7.6.3.4 + ... Reference ETSI GS MEC 016 3.1.1, clause 7.6.3.4 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 Obtain Application Location Availability Task AppLocationAvailability.json Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ApplicationLocationAvailability - Should Be Equal As Strings ${response['body']['appInfo']['appName']} MyNewWornderfulApp + Should Be Equal As Strings ${response['body']['appInfo']['appName']} onboarded-demo4 TP_MEC_MEC016_MEO_UEAPPLOC_001_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... Reference ETSI GS MEC 016 2.2.1, clause 7.6.3.4 + ... Reference ETSI GS MEC 016 3.1.1, clause 7.6.3.4 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -37,7 +37,7 @@ TP_MEC_MEC016_MEO_UEAPPLOC_001_BR TP_MEC_MEC016_MEO_UEAPPCTX_001_NF [Documentation] ... Check that the IUT responds with an error when a request with incorrect URL is sent by a MEC Application - ... Reference ETSI GS MEC 016 2.2.1, clause 7.6.3.4 + ... Reference ETSI GS MEC 016 3.1.1, clause 7.6.3.4 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 diff --git a/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability.json b/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability.json index fdf8d3a32cc0336cedcf7ec29b789556789ee99e..db0cf53e3a91b4bcf18fcdeebefecbd8c3c1cc8d 100644 --- a/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability.json +++ b/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability.json @@ -1,8 +1,34 @@ { - "associateDevAppId":"MyNewWornderfulDevAppId", + "associateDevAppId":"onboarded-demo4", "appInfo":{ - "appName":"MyNewWornderfulApp", - "appProvider":"TF012", - "appDVersion":"v0.0.1" - } + "appName": "onboarded-demo4", + "appProvider": "ETSI", + "appSoftVersion": "v0.1.0", + "appDVersion": "v0.1.0", + "appDescription": "Basic HTTP Ping Pong", + "availableLocations": [ + { + "appLocation": { + "countryCode": "492", + "civicAddressElement": [ + { "caType": 1, "caValue": "A1" }, + { "caType": 2, "caValue": "A2" } + ], + "area": { + "coordinates": [ + [ + [2.302136, 2.302136], + [2.302136, 2.302136] + ], + [ + [2.302136, 2.302136], + [2.302136, 2.302136] + ] + ] + } + } + } + ], + "appPackageSource": "http://example.com/aeiou" +} } \ No newline at end of file diff --git a/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability_BR.json b/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability_BR.json index d907dd4c367a5faecd5d2eef65155ae025156045..c444b8f5cc81d5eafe6f40b125b922108565d860 100644 --- a/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability_BR.json +++ b/MEC016/MEO/UEAPPLOC/jsons/AppLocationAvailability_BR.json @@ -1,8 +1,34 @@ { - "associateDevAppId":"MyNewWornderfulDevAppId", + "associateDevAppId":"onboarded-demo4", "appInfo":{ - "app":"MyNewWornderfulApp", - "appProvider":"TF012", - "appDVersion":"v0.0.1" - } + "app": "onboarded-demo4", + "appProvider": "ETSI", + "appSoftVersion": "v0.1.0", + "appDVersion": "v0.1.0", + "appDescription": "Basic HTTP Ping Pong", + "availableLocations": [ + { + "appLocation": { + "countryCode": "492", + "civicAddressElement": [ + { "caType": 1, "caValue": "A1" }, + { "caType": 2, "caValue": "A2" } + ], + "area": { + "coordinates": [ + [ + [2.302136, 2.302136], + [2.302136, 2.302136] + ], + [ + [2.302136, 2.302136], + [2.302136, 2.302136] + ] + ] + } + } + } + ], + "appPackageSource": "http://example.com/aeiou" +} } \ No newline at end of file diff --git a/MEC016/MEO/UEAPPS/SysUeApplications.robot b/MEC016/MEO/UEAPPS/SysUeApplications.robot index 8b9f1e6805380a02d110d265604b9d46128f2acd..f001b080c3707a4058bc467592ed6bfc621d7c51 100644 --- a/MEC016/MEO/UEAPPS/SysUeApplications.robot +++ b/MEC016/MEO/UEAPPS/SysUeApplications.robot @@ -14,7 +14,7 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v TP_MEC_MEC016_MEO_UEAPPS_001_OK [Documentation] ... Check that the IUT responds with the list of user applications available when requested by an UE Application - ... Reference ETSI GS MEC 016 v2.2.1, clause 7.3.3.1 + ... Reference ETSI GS MEC 016 v3.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -31,7 +31,7 @@ TP_MEC_MEC016_MEO_UEAPPS_001_OK TP_MEC_MEC016_MEO_UEAPPS_001_NF [Documentation] ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application - ... Reference ETSI GS MEC 016 v2.2.1, clause 7.3.3.1 + ... Reference ETSI GS MEC 016 v3.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -42,7 +42,7 @@ TP_MEC_MEC016_MEO_UEAPPS_001_NF TP_MEC_MEC016_MEO_UEAPPS_002_OK [Documentation] ... Check that the IUT responds with the list of user applications available when requested by an UE Application - ... Reference ETSI GS MEC 016 2.2.1, clause 7.3.3.1 + ... Reference ETSI GS MEC 016 3.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -58,7 +58,7 @@ TP_MEC_MEC016_MEO_UEAPPS_002_OK TP_MEC_MEC016_MEO_UEAPPS_002_BR [Documentation] ... Check that the IUT responds with the list of user applications available when requested by an UE Application - ... Reference ETSI GS MEC 016 2.2.1, clause 7.3.3.1 + ... Reference ETSI GS MEC 016 3.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/blob/master/UEAppInterfaceApi.yaml#/definitions/ApplicationList Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 diff --git a/MEC021/SRV/AMS/AMSService.robot b/MEC021/SRV/AMS/AMSService.robot index 8f9cc705c7f8994031456a7536707503b835583c..3f39f867f06397bbb4bcefebc21bdb417f80ec7a 100644 --- a/MEC021/SRV/AMS/AMSService.robot +++ b/MEC021/SRV/AMS/AMSService.robot @@ -2,13 +2,15 @@ ... Test Suite to validate UE Identity Tag (UETAG) operations. *** Settings *** -Resource environment/variables.txt +#Resource environment/variables.txt +Resource environment/variables_sandbox.txt Resource ../../../pics.txt Resource ../../../GenericKeywords.robot Library REST ${AMS_SCHEMA}://${AMS_HOST}:${AMS_PORT} ssl_verify=false Library BuiltIn +Library libraries/Server.py Library OperatingSystem -Library MockServerLibrary +#Library MockServerLibrary Library Collections @@ -18,12 +20,11 @@ Library Collections TC_MEC_MEC021_SRV_AMS_001_OK_01 [Documentation] Request Registered AMS information ... Check that the AMS service returns information about the registered application mobility services when requested - ... ETSI GS MEC 021 3.3.1, clause 8.3.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.3.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS [Setup] Create two new application mobility service ${APP_MOBILITY_SERVICE_ID} ${APP_INS_ID} ${APP_MOBILITY_SERVICE_ID2} ${APP_INS_ID} - Get Registered AMS information Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is AppMobilityServiceInfos @@ -51,8 +52,8 @@ TC_MEC_MEC021_SRV_AMS_001_OK_01 TC_MEC_MEC021_SRV_AMS_001_OK_02 [Documentation] Request Registered AMS information ... Check that the AMS service returns information about the registered application mobility services when requested - ... ETSI GS MEC 021 3.3.1, clause 8.3.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.3.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS [Setup] Create two new application mobility service ${APP_MOBILITY_SERVICE_ID} ${APP_INS_ID} ${APP_MOBILITY_SERVICE_ID2} ${APP_INS_ID} @@ -76,8 +77,8 @@ TC_MEC_MEC021_SRV_AMS_001_OK_02 TC_MEC_MEC021_SRV_AMS_001_OK_03 [Documentation] Request Registered AMS information ... Check that the AMS service returns information about the a specific registered application mobility service when requested - filter - ... ETSI GS MEC 021 3.3.1, clause 8.3.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.3.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS [Setup] Create two new application mobility service ${APP_MOBILITY_SERVICE_ID} ${APP_INS_ID} ${APP_MOBILITY_SERVICE_ID2} ${APP_INS_ID} @@ -98,15 +99,15 @@ TC_MEC_MEC021_SRV_AMS_001_OK_03 TC_MEC_MEC021_SRV_AMS_001_OK_04 [Documentation] Request Registered AMS information ... Check that the AMS service returns information about the a specific registered application mobility service when requested - filter - ... ETSI GS MEC 021 3.3.1, clause 8.3.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.3.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS [Setup] Create two new application mobility service ${APP_MOBILITY_SERVICE_ID} ${APP_INS_ID} ${APP_MOBILITY_SERVICE_ID2} ${APP_INS_ID} Get Registered AMS information using attribute-selector filter ${APP_MOBILITY_SERVICE_FILTER_EXCLUDE_FIELDS} Check HTTP Response Status Code Is 200 - #Check HTTP Response Body Json Schema Is AppMobilityServiceInfos + Check HTTP Response Body Json Schema Is AppMobilityServiceInfos FOR ${app} IN @{response['body']} Should Be Equal As Strings ${app['appMobilityServiceId']} ${APP_MOBILITY_SERVICE_ID} @@ -115,20 +116,22 @@ TC_MEC_MEC021_SRV_AMS_001_OK_04 [TearDown] Delete two specific AMS services ${APP_MOBILITY_SERVICE_ID} ${APP_MOBILITY_SERVICE_ID2} -#TC_MEC_MEC021_SRV_AMS_001_OK_05 -# [Documentation] Request Registered AMS information -# ... Check that the AMS service returns information about the registered application mobility services when requested - No registered application mobility service -# ... ETSI GS MEC 021 3.3.1, clause 8.3.3.1 -# ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml -# [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS +TC_MEC_MEC021_SRV_AMS_001_OK_05 + [Documentation] Request Registered AMS information + ... Check that the AMS service returns information about the registered application mobility services when requested - No registered application mobility service + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.3.3.1 + Get Registered AMS information + Check HTTP Response Status Code Is 200 + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS TC_MEC_MEC021_SRV_AMS_001_BR [Documentation] Request Registered AMS information using bad parameters ... Check that the AMS service returns an error when receives a query about a registered application mobility service with wrong parameters - ... ETSI GS MEC 021 3.3.1, clause 8.3.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.3.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Get Registered AMS information using bad parameters Check HTTP Response Status Code Is 400 @@ -138,8 +141,9 @@ TC_MEC_MEC021_SRV_AMS_001_BR TC_MEC_MEC021_SRV_AMS_002_OK [Documentation] Register a new application mobility services ... Check that the AMS service creates a new application mobility services when requested - ... ETSI GS MEC 021 3.3.1, clause 8.3.3.4 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.2 + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.3.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Create a new application mobility service ${APP_MOBILITY_SERVICE_ID} ${APP_INS_ID} Check HTTP Response Status Code Is 201 @@ -148,90 +152,75 @@ TC_MEC_MEC021_SRV_AMS_002_OK Should Be Equal As Strings ${response['body']['serviceConsumerId']['appInstanceId']} ${APP_INS_ID} -# This test case is incomplete -#TC_MEC_MEC021_SRV_AMS_002_BR -# [Documentation] Request Registered AMS information using bad parameters -# ... Check that the AMS service returns an error when receives a query about a registered application mobility service with wrong parameters -# ... ETSI GS MEC 021 3.3.1, clause 8.3.3.4 -# ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml -# [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS - - - - -TC_MEC_MEC021_SRV_AMS_003_BR +TC_MEC_MEC021_SRV_AMS_002_BR [Documentation] Register an UE Identity Tag using invalid parameter ... Check that the AMS service sends an error when it receives a malformed request to create a new application mobility service - ... ETSI GS MEC 021 3.3.1, clause 8.3.3.4 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.2 + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.3.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Create a new application mobility service ${MALFORMED_APP_MOBILITY_SERVICE_ID} ${APP_INS_ID} Check HTTP Response Status Code Is 400 # Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions -TC_MEC_MEC021_SRV_AMS_004_OK +TC_MEC_MEC021_SRV_AMS_003_OK [Documentation] Request Subscriptions List for the registered AMS services ... Check that the AMS service returns information about the available subscriptions when requested. - ... Permitted SUBSCRIPTION_TYPE are: - ... - MobilityProcedureSubscription - ... - AdjacentAppInfoSubscription" - ... ETSI GS MEC 021 3.3.1, clause 8.6.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.9 + ... ETSI GS MEC 021 3.1.1, clause 7.3.4 + ... ETSI GS MEC 021 3.1.1, clause 8.6.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Get Subscriptions for registered AMS Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is SubscriptionLinkList - -TC_MEC_MEC021_SRV_AMS_004_BR +TC_MEC_MEC021_SRV_AMS_003_BR [Documentation] Request Subscription List for registered AMS Services using wrong attribute parameters ... Check that the AMS service sends an error when it receives a malformed query about the available subscriptions - ... ETSI GS MEC 021 3.3.1, clause 8.6.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.9 + ... ETSI GS MEC 021 3.1.1, clause 7.3.4 + ... ETSI GS MEC 021 3.1.1, clause 8.6.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Get Subscriptions for registered AMS with wrong attbirube parameter Check HTTP Response Status Code Is 400 # Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions -TC_MEC_MEC021_SRV_AMS_005_OK +TC_MEC_MEC021_SRV_AMS_004_OK [Documentation] Create a notification subscription ... Check that the AMS service creates a notification subscriptions when requested. - ... Permitted SUBSCRIPTION_TYPE are: - ... - MobilityProcedureSubscription - ... - AdjacentAppInfoSubscription" - ... ETSI GS MEC 021 3.3.1, clause 8.6.3.4 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.9 + ... ETSI GS MEC 021 3.1.1, clause 7.3.2 + ... ETSI GS MEC 021 3.1.1, clause 7.3.3 + ... ETSI GS MEC 021 3.1.1, clause 8.6.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Post a new notification subscription NotificationSubscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is NotificationSubscription -TC_MEC_MEC021_SRV_AMS_005_BR +TC_MEC_MEC021_SRV_AMS_004_BR [Documentation] Create a notification subscription with wrong attribute parameter ... Check that the AMS service creates a notification subscriptions when requested. - ... Permitted SUBSCRIPTION_TYPE are: - ... - MobilityProcedureSubscription - ... - AdjacentAppInfoSubscription" - ... ETSI GS MEC 021 3.3.1, clause 8.6.3.4 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.9 + ... ETSI GS MEC 021 3.1.1, clause 7.3.2 + ... ETSI GS MEC 021 3.1.1, clause 7.3.3 + ... ETSI GS MEC 021 3.1.1, clause 8.6.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Post a new notification subscription NotificationSubscriptionError Check HTTP Response Status Code Is 400 # Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${content} -TC_MEC_MEC021_SRV_AMS_006_OK +TC_MEC_MEC021_SRV_AMS_005_OK [Documentation] Request a specific subscription ... Check that the AMS service returns information about a given subscription when requested. - ... Permitted SUBSCRIPTION_TYPE are: - ... - MobilityProcedureSubscription - ... - AdjacentAppInfoSubscription" - ... ETSI GS MEC 021 3.3.1, clause 8.7.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.9 + ... ETSI GS MEC 021 3.1.1, clause 7.4.2 + ... ETSI GS MEC 021 3.1.1, clause 7.4.3 + ... ETSI GS MEC 021 3.1.1, clause 8.7.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Get individual subscription for AMS services ${SUBSCRIPTION_ID} Check HTTP Response Status Code Is 200 @@ -239,27 +228,54 @@ TC_MEC_MEC021_SRV_AMS_006_OK -TC_MEC_MEC021_SRV_AMS_006_NF +TC_MEC_MEC021_SRV_AMS_005_NF [Documentation] Request a specific subscription using wrong identifier ... Check that the AMS service returns an error when receives a query about a not existing subscription - ... ETSI GS MEC 021 3.3.1, clause 8.7.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.9 + ... ETSI GS MEC 021 3.1.1, clause 7.4.2 + ... ETSI GS MEC 021 3.1.1, clause 7.4.3 + ... ETSI GS MEC 021 3.1.1, clause 8.7.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Get individual subscription for AMS services ${NON_EXISTENT_SUBSCRIPTION_ID} Check HTTP Response Status Code Is 404 +# Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${content} +TC_MEC_MEC021_SRV_AMS_006_OK + [Documentation] Remove a specific subscription + ... Check that the AMS service deletes a given subscription when requested + ... ETSI GS MEC 021 3.1.1, clause 6.7 + ... ETSI GS MEC 021 3.1.1, clause 7.3.2 + ... ETSI GS MEC 021 3.1.1, clause 7.3.3 + ... ETSI GS MEC 021 3.1.1, clause 8.7.3.5 + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS + Delete individual subscription for AMS services ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 204 + + +TC_MEC_MEC021_SRV_AMS_006_NF + [Documentation] Remove a specific subscription using wrong identifier + ... Check that the AMS service sends an error when it receives a delete request for a not existing subscription + ... ETSI GS MEC 021 3.1.1, clause 6.7 + ... ETSI GS MEC 021 3.1.1, clause 7.3.2 + ... ETSI GS MEC 021 3.1.1, clause 7.3.3 + ... ETSI GS MEC 021 3.1.1, clause 8.7.3.5 + + + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS + Delete individual subscription for AMS services ${NON_EXISTENT_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + # Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${identifier} TC_MEC_MEC021_SRV_AMS_007_OK [Documentation] Modify a specific subscription ... Check that the AMS service modifies a given subscription when requested. - ... Permitted SUBSCRIPTION_TYPE are: - ... - MobilityProcedureSubscription - ... - AdjacentAppInfoSubscription - ... ETSI GS MEC 021 3.3.1, clause 8.7.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.3.2 + ... ETSI GS MEC 021 3.1.1, clause 7.3.3 + ... ETSI GS MEC 021 3.1.1, clause 8.7.3.2 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS - Update individual subscription for AMS services ${SUBSCRIPTION_ID} NotificationSubscription + Update individual subscription for AMS services ${SUBSCRIPTION_ID} NotificationSubscriptionUpdate Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is NotificationSubscription @@ -268,116 +284,72 @@ TC_MEC_MEC021_SRV_AMS_007_OK TC_MEC_MEC021_SRV_AMS_007_BR [Documentation] Modify a specific subscription using malformed request ... Check that the AMS service sends an error when it receives a malformed modify request for a given subscription. - ... Permitted SUBSCRIPTION_TYPE are: - ... - MobilityProcedureSubscription - ... - AdjacentAppInfoSubscription - ... ETSI GS MEC 021 3.3.1, clause 8.7.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.3.2 + ... ETSI GS MEC 021 3.1.1, clause 7.3.3 + ... ETSI GS MEC 021 3.1.1, clause 8.7.3.2 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Update individual subscription for AMS services ${SUBSCRIPTION_ID} NotificationSubscriptionError Check HTTP Response Status Code Is 400 -TP_MEC_MEC021_SRV_AMS_007_NF +TC_MEC_MEC021_SRV_AMS_007_NF [Documentation] Modify a specific subscription using wrong identifier ... Check that the AMS service sends an error when it receives a modify request for a not existing subscription. - ... ETSI GS MEC 021 3.3.1, clause 8.7.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.3.2 + ... ETSI GS MEC 021 3.1.1, clause 7.3.3 + ... ETSI GS MEC 021 3.1.1, clause 8.7.3.2 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Update individual subscription for AMS services ${NON_EXISTENT_SUBSCRIPTION_ID} NotificationSubscription Check HTTP Response Status Code Is 404 -# Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${content} -TC_MEC_MEC021_SRV_AMS_008_OK - [Documentation] Remove a specific subscription - ... Check that the AMS service deletes a given subscription when requested - ... ETSI GS MEC 021 3.3.1, clause 8.7.3.5 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml - [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS - Delete individual subscription for AMS services ${SUBSCRIPTION_ID} - Check HTTP Response Status Code Is 204 - -TC_MEC_MEC021_SRV_AMS_008_NF - [Documentation] Remove a specific subscription using wrong identifier - ... Check that the AMS service sends an error when it receives a delete request for a not existing subscription - ... ETSI GS MEC 021 3.3.1, clause 8.7.3.5 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml +TC_MEC_MEC021_SRV_AMS_008_OK + [Documentation] Post Mobility Procedure Notification + ... Check that the AMS service sends an AMS notification about a mobility procedure + ... if the AMS service has an associated subscription and the event is generated + ... ETSI GS MEC 021 3.1.1, clause 7.4.3 + ... ETSI GS MEC 021 3.1.1, clause 8.9.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS - Delete individual subscription for AMS services ${NON_EXISTENT_SUBSCRIPTION_ID} - Check HTTP Response Status Code Is 404 - + + [Setup] Post a new notification subscription NotificationSubscription + Spawn Notification Server MobilityProcedureNotification + Validate Json MobilityProcedureNotification.schema.json ${payload_notification} + [TearDown] Delete individual subscription for AMS services ${SUBSCRIPTION_ID} TC_MEC_MEC021_SRV_AMS_009_OK - [Documentation] Post Mobility Procedure Notification - ... Check that the AMS service sends an AMS notification about a mobility procedure - ... if the AMS service has an associated subscription and the event is generated - ... ETSI GS MEC 021 3.3.1, clause 7.4.2 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml - [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS - Log TBD -# ${json}= Get File schemas/MobilityProcedureNotification.schema.json -# Log Creating mock request and response to handle Mobility Procedure Notification -# &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} -# &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 -# Create Mock Expectation ${req} ${rsp} -# Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} -# Log Verifying results -# Verify Mock Expectation ${req} -# Log Cleaning the endpoint -# Clear Requests ${callback_endpoint} + [Documentation] Adjacent App Info Notification + ... Check that the AMS service sends an AMS notification about adjacent application instances if the AMS service has an associated + ... subscription and the event is generated + ... ETSI GS MEC 021 3.1.1, clause 7.4.3 + ... ETSI GS MEC 021 3.1.1, clause 8.9.3.4 + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS + [Setup] Post a new notification subscription NotificationSubscription + Spawn Notification Server AdjacentAppInfoNotification + Validate Json AdjacentAppInfoNotification.schema.json ${payload_notification} + [TearDown] Delete individual subscription for AMS services ${SUBSCRIPTION_ID} TC_MEC_MEC021_SRV_AMS_010_OK - [Documentation] Post Adjacent Application Info Notification - ... Check that the AMS service sends an AMS notification about adjacent application instances - ... if the AMS service has an associated subscription and the event is generated - ... ETSI GS MEC 021 3.3.1, clause 7.4.3 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml - [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS - Log TBD -# ${json}= Get File schemas/AdjacentAppInfoNotification.schema.json -# Log Creating mock request and response to handle Adjacent Application Info Notification -# &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} -# &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 -# Create Mock Expectation ${req} ${rsp} -# Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} -# Log Verifying results -# Verify Mock Expectation ${req} -# Log Cleaning the endpoint -# Clear Requests ${callback_endpoint} - + [Documentation] Post Expire Notification + ... Check that the AMS service sends an AMS notification on subscription expiration if the AMS service has an associated subscription and the event is generated + ... ETSI GS MEC 021 3.1.1, clause 7.4.4 + ... ETSI GS MEC 021 3.1.1, clause 8.9.3.4 + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS + + [Setup] Post a new notification subscription NotificationSubscription + Spawn Notification Server ExpiryNotification + Validate Json ExpiryNotification.schema.json ${payload_notification} +# Get ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${APP_MOBILITY_SERVICE_ID_1} TC_MEC_MEC021_SRV_AMS_011_OK - [Documentation] Post Expire Notification - ... Check that the AMS service sends an AMS notification on subscription expiration - ... if the AMS service has an associated subscription and the event is generated - ... ETSI GS MEC 021 3.3.1, clause 7.4.4 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml - [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS - Log TBD -# ${json}= Get File schemas/ExpiryNotification.schema.json -# Log Creating mock request and response to handle Expire Notification -# &{req}= Create Mock Request Matcher POST ${callback_endpoint} body_type="JSON_SCHEMA" body=${json} -# &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 -# Create Mock Expectation ${req} ${rsp} -# Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} -# Log Verifying results -# Verify Mock Expectation ${req} -# Log Cleaning the endpoint -# Clear Requests ${callback_endpoint} - - -# Get ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId} -TC_MEC_MEC021_SRV_AMS_012_OK [Documentation] Request a specific AMS service ... Check that the AMS service returns information about this individual application mobility service - ... ETSI GS MEC 021 2.0.10, clause 8.4.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.4.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Get specific AMS service ${APP_MOBILITY_SERVICE_ID} Check HTTP Response Status Code Is 200 @@ -385,118 +357,171 @@ TC_MEC_MEC021_SRV_AMS_012_OK -TC_MEC_MEC021_SRV_AMS_012_NF +TC_MEC_MEC021_SRV_AMS_011_NF [Documentation] Request a specific AMS Service using non existent identifier ... Check that the AMS service sends an error when receives a query about a not existing individual application mobility service - ... ETSI GS MEC 021 2.0.10, clause 8.4.3.1 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.4.3.1 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Get specific AMS service ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID} Check HTTP Response Status Code Is 404 # Put ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId} -TC_MEC_MEC021_SRV_AMS_013_OK +TC_MEC_MEC021_SRV_AMS_012_OK [Documentation] Modify a specific AMS service ... Check that the AMS service modifies the individual application mobility service when requested - ... ETSI GS MEC 021 2.0.10, clause 8.4.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.4 + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.4.3.2 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS - Modify a specific AMS service ${APP_MOBILITY_SERVICE_ID} RegistrationInfo + Modify a specific AMS service ${APP_MOBILITY_SERVICE_ID} RegistrationInfo Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is AppMobilityServiceInfo Should Be Equal As Strings ${response['body']['appMobilityServiceId']} ${APP_MOBILITY_SERVICE_ID} Should Be Equal As Strings ${response['body']['serviceConsumerId']['appInstanceId']} ${APP_MOBILITY_SERVICE_ID} # from req - #Check Result Contains ${response['registeredAppMobilityService']['serviceConsumerId']} appInstanceId ${APP_INS_ID} - -#ensure that { -# when { -# the IUT entity receives a vPUT containing -# uri indicating value "/amsi/v1/app_mobility_services/{APP_MOBILITY_SERVICE_ID_1}", -# body containing -# RegistrationInfo containing -# serviceConsumerId containing -# appInstanceId indicating value NEW_APP_INS_ID_NEW_1;;;; -# from the AMS_CLIENT entity -# } -# then { -# the IUT entity sends a HTTP_RESPONSE containing -# status set to "200 OK", -# body containing -# RegistrationInfo containing -# appMobilityServiceId indicating value APP_MOBILITY_SERVICE_ID_1, -# serviceConsumerId containing -# appInstanceId indicating value NEW_APP_INS_ID_NEW_1;;;; -# to the AMS_CLIENT entity -# } -#} - -TC_MEC_MEC021_SRV_AMS_013_NF +TC_MEC_MEC021_SRV_AMS_012_NF [Documentation] Modify a specific AMS Service using non existent identifier ... Check that the AMS service sends an error when receives a request to modify a not existing individual application mobility service - ... ETSI GS MEC 021 2.0.10, clause 8.4.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.4 + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.4.3.2 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Modify a specific AMS service ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID} RegistrationInfo Check HTTP Response Status Code Is 404 -TC_MEC_MEC021_SRV_AMS_013_BR +TC_MEC_MEC021_SRV_AMS_012_BR [Documentation] Modify a specific AMS Service using bad parameters ... Check that the AMS service sends an error when receives a request to modify a individual application mobility service using bad parameters - ... ETSI GS MEC 021 2.0.10, clause 8.4.3.2 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.4 + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.4.3.2 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Modify a specific AMS service ${APP_MOBILITY_SERVICE_ID} RegistrationInfoWithError Check HTTP Response Status Code Is 400 # Delete ${apiRoot}/${apiName}/${apiVersion}/app_mobility_services/${amsId} -TC_MEC_MEC021_SRV_AMS_014_OK +TC_MEC_MEC021_SRV_AMS_013_OK [Documentation] Remove a specific AMS service ... Check that the AMS service de-register the individual application mobility service and delete the resource ... that represents the individual application mobility service - ... ETSI GS MEC 021 2.0.10, clause 8.4.3.5 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.3 + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.4.3.5 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Delete specific AMS service ${APP_MOBILITY_SERVICE_ID} Check HTTP Response Status Code Is 204 -TC_MEC_MEC021_SRV_AMS_014_NF +TC_MEC_MEC021_SRV_AMS_013_NF [Documentation] Remove a specific AMS Service using non existent identifier ... Check that the AMS service sends an error when is requested to delete the resource ... that represents the individual application mobility service - ... ETSI GS MEC 021 2.0.10, clause 8.4.3.5 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 6.3 + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.4.3.5 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Delete specific AMS service ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID} Check HTTP Response Status Code Is 404 # POST ${apiRoot}/${apiName}/${apiVersion}/appMobilityServices/${amsId}/deregisterTask -TC_MEC_MEC021_SRV_AMS_015_OK +TC_MEC_MEC021_SRV_AMS_014_OK [Documentation] Request to deregister a specific AMS service ... Check that the AMS service deregister an individual application mobility service on expiry of the timer associated with the service - ... ETSI GS MEC 021 2.0.10, clause 8.5.3.4 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... that represents the individual application mobility service + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.5.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Deregister specific AMS service ${APP_MOBILITY_SERVICE_ID} Check HTTP Response Status Code Is 204 -TC_MEC_MEC021_SRV_AMS_015_NF +TC_MEC_MEC021_SRV_AMS_014_NF [Documentation] Request to deregister a specific AMS service using non existent identifier ... Check that the AMS service send an error when is requested to deregister a not existent individual application mobility service - ... ETSI GS MEC 021 2.0.10, clause 8.5.3.4 - ... Reference https://forge.etsi.org/rep/mec/gs021-amsi-api/-/blob/master/MEC021_AppMobilityService.yaml + ... ETSI GS MEC 021 3.1.1, clause 7.2.2 + ... ETSI GS MEC 021 3.1.1, clause 8.5.3.4 [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS Deregister specific AMS service ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID} Check HTTP Response Status Code Is 404 +TC_MEC_MEC021_SRV_AMS_015_OK_01 + [Documentation] + ... Check that the AMS service returns information about the registered application mobility services when requested + ... ETSI GS MEC 021 3.1.1, clause 7.2.3 + ... ETSI GS MEC 021 3.1.1, clause 8.8.3.1 + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS + Retrieve info about registered app mobility service + + Check HTTP Response Body Json Schema Is AdjacentAppInstanceInfoList + Check HTTP Response Status Code Is 200 + +TC_MEC_MEC021_SRV_AMS_015_OK_02 + [Documentation] + ... Check that the AMS service returns information about the adjacent application instances when requested - filter + ... ETSI GS MEC 021 3.1.1, clause 7.2.3 + ... ETSI GS MEC 021 3.1.1, clause 8.8.3.1 + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS + Retrieve info about registered app mobility service with filter (eq,appInstanceId,{APP_INSTANCE_ID_1}) + Check HTTP Response Body Json Schema Is AdjacentAppInstanceInfoList + Check HTTP Response Status Code Is 200 + + +TC_MEC_MEC021_SRV_AMS_015_OK_03 + [Documentation] + ... Check that the AMS service returns information about a specified adjacent application instances when requested - filter + ... ETSI GS MEC 021 3.1.1, clause 7.2.3 + ... ETSI GS MEC 021 3.1.1, clause 8.8.3.1 + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS + Retrieve info about registered app mobility service with filter (eq,appInstanceId,{APP_INSTANCE_ID_1})&filter(eq,appDId,{APP_ID_3}) + Check HTTP Response Body Json Schema Is AdjacentAppInstanceInfoList + Check HTTP Response Status Code Is 200 + + +TC_MEC_MEC021_SRV_AMS_015_OK_04 + [Documentation] + ... Check that the AMS service returns information about a specified adjacent application instances when requested - filter + ... ETSI GS MEC 021 3.1.1, clause 7.2.3 + ... ETSI GS MEC 021 3.1.1, clause 8.8.3.1 + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS + Retrieve info about registered app mobility service + Check HTTP Response Body Json Schema Is AdjacentAppInstanceInfoList + Check HTTP Response Status Code Is 200 + + +TC_MEC_MEC021_SRV_AMS_015_BR + [Documentation] + ... Check that the AMS service sends an error about a specified adjacent application instances when request is inconsistent + ... ETSI GS MEC 021 3.1.1, clause 7.2.3 + ... ETSI GS MEC 021 3.1.1, clause 8.8.3.1 + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS + Retrieve info about registered app mobility service with filter (appInstanceId,eq,{APP_INSTANCE_ID_1}) + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC021_SRV_UETESTNOT_001_OK + [Documentation] + ... Check that the IUT provides a test notification when requested by a MEC Application + ... ETSI GS MEC 021 3.1.1, clause 6.9 + ... ETSI GS MEC 021 3.1.1, clause 7.3.2 + ... ETSI GS MEC 021 3.1.1, clause 7.3.3 + ... ETSI GS MEC 021 3.1.1, clause 8.6.3.4 + [Tags] PIC_AMS INCLUDE_UNDEFINED_SCHEMAS + [Setup] Post a new notification subscription NotificationSubscriptionWithTestNotification + Spawn Notification Server MobilityProcedureNotification + Validate Json MobilityProcedureNotification.schema.json ${payload_notification} + [TearDown] Delete individual subscription for AMS services ${SUBSCRIPTION_ID} + Spawn Notification Server TestNotification + Validate Json TestNotification.schema.json ${payload_notification} + [TearDown] Delete individual subscription for AMS services ${SUBSCRIPTION_ID} + + *** Keywords *** Get Registered AMS information Set Headers {"Accept":"application/json"} @@ -571,7 +596,8 @@ Deregister specific AMS service ${output}= Output response Set Suite Variable ${response} ${output} - + + Create a new application mobility service [Arguments] ${appMobilityServiceId} ${appInstanceId} Set Headers {"Accept":"application/json"} @@ -587,6 +613,8 @@ Create a new application mobility service ${output}= Output response Set Suite Variable ${response} ${output} + + Create two new application mobility service [Arguments] ${appMobilityServiceId} ${appInstanceId} ${appMobilityServiceId2} ${appInstanceId2} Set Headers {"Accept":"application/json"} @@ -675,4 +703,28 @@ Update individual subscription for AMS services Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${identifier} ${body} ${output}= Output response Set Suite Variable ${response} ${output} - \ No newline at end of file + + +Spawn Notification Server + [Arguments] ${payload_notification} + ${output} Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} ${payload_notification} + ${length} = Get Length ${output} + Set Suite Variable ${payload_notification} ${output} + Run Keyword If ${length} == 0 Skip + + +Retrieve info about registered app mobility service + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/amsi/v1/queries/adjacent_app_instances + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Retrieve info about registered app mobility service with filter + [Arguments] ${filter} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/amsi/v1/queries/adjacent_app_instances?filter${filter} + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/MEC021/SRV/AMS/environment/variables_sandbox.txt b/MEC021/SRV/AMS/environment/variables_sandbox.txt new file mode 100644 index 0000000000000000000000000000000000000000..e0837e34a95586e369bd2b3bce6f1691f8065d35 --- /dev/null +++ b/MEC021/SRV/AMS/environment/variables_sandbox.txt @@ -0,0 +1,44 @@ +*** Variables *** +# Generic variables +#${AMS_SCHEMA} http +#${AMS_HOST} mockoon +#${AMS_PORT} 3006 +#${response} {} +#${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +#${apiRoot} +#${apiName} amsi +#${apiVersion} v1 + + +####Env variable for the ETSI MEC Sandbox +${AMS_SCHEMA} https +${AMS_HOST} try-mec.etsi.org +${AMS_PORT} 443 +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${response} {} +${apiRoot} //mep1 +${apiName} amsi +${apiVersion} v1 + +# Specific variables +${APP_MOBILITY_SERVICE_ID} -4P-3piNHphgT_GF +${APP_MOBILITY_SERVICE_ID2} APP_MOBILITY_SERVICE_ID2 +${MALFORMED_APP_MOBILITY_SERVICE_ID} MALFORMED_APP_MOBILITY_SERVICE_ID +${APP_MOBILITY_SERVICE_FILTER_APP_MOBILITY_SERVICE_ID} (eq,appMobilityServiceId,ca29c5a5-f471-4098-abcb-d55d83410087) +${APP_MOBILITY_SERVICE_FILTER_SERVICE_CONSUMER_ID} (eq,serviceConsumerId[appInstanceId],5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f) +${APP_MOBILITY_SERVICE_FILTER_EXCLUDE_FIELDS} (eq,appMobilityServiceId,APP_MOBILITY_SERVICE_ID)&exclude_fields=[serviceConsumerId] +${APP_INS_ID} ca29c5a5-f471-4098-abcb-d55d83410087 +${SUBSCRIPTION_TYPE} MobilityProcedureSubscription +${SUBSCRIPTION_ID} sub-DjA60j9KKidfITKs +${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID +${NON_EXISTENT_APP_MOBILITY_SERVICE_ID} NON_EXISTENT_APP_MOBILITY_SERVICE_ID + +# Notifications variables +${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +${callback_port} 9091 +${callback_uri} http://172.22.1.7:${callback_port} +${callback_endpoint} /amsi/subscriptions +${callback_endpoint_error} /subs_404 +${total_polling_time} 2 min +${polling_interval} 10 sec diff --git a/MEC021/SRV/AMS/json/AdjacentAppInfoNotification.json b/MEC021/SRV/AMS/json/AdjacentAppInfoNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..601777c50a934cd0053998b21dd2a6b58ab0669c --- /dev/null +++ b/MEC021/SRV/AMS/json/AdjacentAppInfoNotification.json @@ -0,0 +1,11 @@ +{ + "notificationType": "AdjacentAppInfoNotification", + "timeStamp": "sample string", + "adjacentAppInfo": [ + "sample string", + "sample string" + ], + "_links": { + "subscription": null + } +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/json/AppMobilityServiceUpdate.json b/MEC021/SRV/AMS/json/AppMobilityServiceUpdate.json new file mode 100644 index 0000000000000000000000000000000000000000..2fe7b064ee8b5f1b0b7888197d986356bcf3c1e8 --- /dev/null +++ b/MEC021/SRV/AMS/json/AppMobilityServiceUpdate.json @@ -0,0 +1,24 @@ +{ + "deviceInformation": [ + { + "associateId": { + "type": "UE_IPv4_ADDRESS", + "value": "192.168.1.100" + }, + "appMobilityServiceLevel": "APP_MOBILITY_NOT_ALLOWED", + "contextTransferState": "NOT_TRANSFERRED" + }, + { + "associateId": { + "type": "UE_IPV6_ADDRESS", + "value": "2001:0db8:85a3:0000:0000:8a2e:0370:7334" + }, + "appMobilityServiceLevel": "APP_MOBILITY_WITH_CONFIRMATION", + "contextTransferState": "USER_CONTEXT_TRANSFER_COMPLETED" + } + ], + "expiryTime": 3600, + "serviceConsumerId": { + "appInstanceId": "ca29c5a5-f471-4098-abcb-d55d83410087" + } +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/json/ExpiryNotification.json b/MEC021/SRV/AMS/json/ExpiryNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..602c49234c3d11f5b0252cab83e750c51c67f09d --- /dev/null +++ b/MEC021/SRV/AMS/json/ExpiryNotification.json @@ -0,0 +1,12 @@ +{ + "_links": null, + "expiryDeadline": { + "nanoSeconds": 11, + "seconds": 11 + }, + "timeStamp": { + "nanoSeconds": 11, + "seconds": 11 + }, + "notificationType": "ExpiryNotification" +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/json/MobilityProcedureNotification.json b/MEC021/SRV/AMS/json/MobilityProcedureNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..0b34631c710b930c27801246c48ec1cd3a9b6a80 --- /dev/null +++ b/MEC021/SRV/AMS/json/MobilityProcedureNotification.json @@ -0,0 +1,16 @@ +{ + "notificationType": "MobilityProcedureNotification", + "timeStamp": "s", + "associateId": [ + {}, + {} + ], + "mobilityStatus": 11, + "targetAppInfo": { + "appInstanceId": "sample string", + "commInterface": null + }, + "_links": { + "subscription": null + } +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/json/NotificationSubscription.json b/MEC021/SRV/AMS/json/NotificationSubscription.json index 9c2ed02195d97b75b2a0d9e4c75f31912348447c..bbc76b3ec6964f15be903f9dcde0b75d7ae6f00b 100644 --- a/MEC021/SRV/AMS/json/NotificationSubscription.json +++ b/MEC021/SRV/AMS/json/NotificationSubscription.json @@ -1,16 +1,16 @@ { "callbackReference": "http://example.com/callback", - "requestTestNotification": true, + "requestTestNotification": false, "websockNotifConfig": { "websocketUri": "ws://example.com/websocket", "requestWebsocketUri": true }, "expiryDeadline": { - "seconds": 1644691200, + "seconds": 2077353600, "nanoSeconds": 0 }, "filterCriteria": { - "appInstanceId": "app-123" + "appInstanceId": "ca29c5a5-f471-4098-abcb-d55d83410087" }, - "subscriptionType": "AdjacentAppInfoSubscription" + "subscriptionType": "MobilityProcedureSubscription" } \ No newline at end of file diff --git a/MEC021/SRV/AMS/json/NotificationSubscription2.json b/MEC021/SRV/AMS/json/NotificationSubscription2.json new file mode 100644 index 0000000000000000000000000000000000000000..fa161b770d56c79ea0b1a99adb00687554855829 --- /dev/null +++ b/MEC021/SRV/AMS/json/NotificationSubscription2.json @@ -0,0 +1,16 @@ +{ + "callbackReference": "http://example.com/callback", + "requestTestNotification": false, + "websockNotifConfig": { + "websocketUri": "ws://example.com/websocket", + "requestWebsocketUri": true + }, + "expiryDeadline": { + "seconds": 1644691200, + "nanoSeconds": 0 + }, + "filterCriteria": { + "appInstanceId": "app-123" + }, + "subscriptionType": "AdjacentAppInfoSubscription" +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/json/NotificationSubscriptionUpdate.json b/MEC021/SRV/AMS/json/NotificationSubscriptionUpdate.json new file mode 100644 index 0000000000000000000000000000000000000000..f33e02b796ceada0dc9065407dcf3565435379c9 --- /dev/null +++ b/MEC021/SRV/AMS/json/NotificationSubscriptionUpdate.json @@ -0,0 +1,21 @@ +{ + "callbackReference": "http://example.com/callback", + "_links": { + "self": { + "href": "https://try-mec.etsi.org/sbxnr8fp0o/mep1/amsi/v1/subscriptions/sub-DjA60j9KKidfITKs" + } + }, + "requestTestNotification": false, + "websockNotifConfig": { + "websocketUri": "ws://example.com/websocket", + "requestWebsocketUri": true + }, + "expiryDeadline": { + "seconds": 2077353600, + "nanoSeconds": 0 + }, + "filterCriteria": { + "appInstanceId": "ca29c5a5-f471-4098-abcb-d55d83410087" + }, + "subscriptionType": "MobilityProcedureSubscription" +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/json/NotificationSubscriptionWithTestNotification.json b/MEC021/SRV/AMS/json/NotificationSubscriptionWithTestNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..536bcc2e50766291d04af8185c79906ae25157aa --- /dev/null +++ b/MEC021/SRV/AMS/json/NotificationSubscriptionWithTestNotification.json @@ -0,0 +1,16 @@ +{ + "callbackReference": "http://example.com/callback", + "requestTestNotification": false, + "websockNotifConfig": { + "websocketUri": "ws://example.com/websocket", + "requestWebsocketUri": true + }, + "expiryDeadline": { + "seconds": 1644691200, + "nanoSeconds": 0 + }, + "filterCriteria": { + "appInstanceId": "app-123" + }, + "subscriptionType": "MobilityProcedureSubscription" +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/json/RegistrationInfo.json b/MEC021/SRV/AMS/json/RegistrationInfo.json index ac38cbfb1997b8e5607d4a586a7cf7ce54409525..25839989d9a2c91de5723c27e57c9eb32f81eb91 100644 --- a/MEC021/SRV/AMS/json/RegistrationInfo.json +++ b/MEC021/SRV/AMS/json/RegistrationInfo.json @@ -1,7 +1,6 @@ { "serviceConsumerId": { - "appInstanceId": "exampleAppInstanceId", - "mepId": "exampleMepId" + "appInstanceId": "ca29c5a5-f471-4098-abcb-d55d83410087" }, "appMobilityServiceId": "exampleAppMobilityServiceId", "deviceInformation": [ diff --git a/MEC021/SRV/AMS/json/TestNotification.json b/MEC021/SRV/AMS/json/TestNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..75ae5984ef0d53ccd89aff5bc851d803a1881194 --- /dev/null +++ b/MEC021/SRV/AMS/json/TestNotification.json @@ -0,0 +1,8 @@ +{ + "_links": { + "self": { + "href": "https://someurl.com/subscriptions/users/subscriptionId" + } + }, + "notificationType": "TestNotification" +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/libraries/Server.py b/MEC021/SRV/AMS/libraries/Server.py new file mode 100644 index 0000000000000000000000000000000000000000..fb646702b03e99229758efb85e78ebb9114bcbc5 --- /dev/null +++ b/MEC021/SRV/AMS/libraries/Server.py @@ -0,0 +1,148 @@ +#!/usr/bin/python3 + +from http.server import BaseHTTPRequestHandler, HTTPServer +import json, os +import logging + +# Library version +__version__ = '0.0.1' + +def import_notification_json(subscription_type): + notification_type = subscription_type.split("Subscription")[0] + file_path = "./jsons/"+notification_type+".json" + logging.info(file_path) + logging.info(os.listdir()) + try: + with open(file_path, 'r') as json_file: + # Load the JSON data + data = json.load(json_file) + logging.info(data) + return data + except FileNotFoundError: + logging.error(f"Error: File not found at {file_path}") + + +class Server ( object ): + + ROBOT_LIBRARY_VERSION = '0.0.1' + + def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None): + + class GET_Server(BaseHTTPRequestHandler): + + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + + def do_GET(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + if self.path == self.endpoint: + self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8')) + else: + self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8')) + + class POST_Server(BaseHTTPRequestHandler): + + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + self.req_body = None + + + def do_POST(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + + #if self.path == self.endpoint: + # self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8')) + #else: + # self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8')) + + content_len = int(self.headers.get('Content-Length')) + post_body = self.rfile.read(content_len) + self.req_body=post_body + + def get_req_body(self): + return self.req_body + + def get_resp_body(self): + return self.resp_body + + + class PUT_Server(BaseHTTPRequestHandler): + + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + + def do_PUT(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + if self.path == self.endpoint: + self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8')) + else: + self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8')) + + class DELETE_Server(BaseHTTPRequestHandler): + + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + + def do_DELETE(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + if self.path == self.endpoint: + self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8')) + else: + self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8')) + + if method == "GET": + self.handler = GET_Server(endpoint, resp_body) + elif method == "POST": + self.handler = POST_Server(endpoint, resp_body) + elif method == "PUT": + self.handler = PUT_Server(endpoint, resp_body) + elif method == "DELETE": + self.handler = DELETE_Server(endpoint, resp_body) + else: + logging.info("Error, unknown endpoint") + exit(1) + + self.app = HTTPServer((host, int(port)), self.handler) + self.app.timeout = int(timeout) + + + self.app.handle_request() + self.app.server_close() + logging.info(self.handler.get_resp_body()) + ## If a notification is received, then is returned. Otherwise an empty dictionary. + if(self.handler.get_req_body()!=None): + return json.loads(self.handler.get_req_body().decode("windows-1252")) + + ##OLD mechanism commented: if no response is received, then read the Notification JSON file and return it. + notification_json= import_notification_json(self.handler.get_resp_body()) + #return notification_json ##Decomment if you want to use the notification read from file + return {} + diff --git a/MEC021/SRV/AMS/schemas/AdjacentAppInfoInstanceInfoList.json.schema b/MEC021/SRV/AMS/schemas/AdjacentAppInfoInstanceInfoList.json.schema new file mode 100644 index 0000000000000000000000000000000000000000..1519407ab8329f7708e8664323c4bdaf9ba4872d --- /dev/null +++ b/MEC021/SRV/AMS/schemas/AdjacentAppInfoInstanceInfoList.json.schema @@ -0,0 +1,74 @@ +{ + "$schema": "http://json-schema.org/draft/2020-12/schema#", + "title": "AdjacentAppInstanceInfoList", + "type": "array", + "description": "A list of AdjacentAppInstanceInfo objects.", + "items": { + "$ref": "#/$defs/AdjacentAppInstanceInfo" + }, + "minItems": 1, + "$defs": { + "AdjacentAppInstanceInfo": { + "title": "AdjacentAppInstanceInfo", + "type": "object", + "properties": { + "appInstanceId": { + "type": "string", + "description": "Identifier of the application instance." + }, + "appDId": { + "type": "string", + "description": "Identifier of the application descriptor." + }, + "appInstanceCommLink": { + "type": "array", + "minItems": 1, + "description": "It specifies the communication interface of application instance.", + "items": { + "$ref": "#/$defs/CommunicationInterface" + } + }, + "mecHostInformation": { + "description": "It specifies the communication interface of application instance.", + "$ref": "#/$defs/MECHostInformation" + } + }, + "required": [ + "appInstanceId", + "appDId" + ] + }, + "CommunicationInterface": { + "type": "object", + "description": "Communication interface of the application instance.", + "properties": { + "interfaceType": { + "type": "string" + }, + "endpoint": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "interfaceType", + "endpoint" + ], + "additionalProperties": true + }, + "MECHostInformation": { + "type": "object", + "properties": { + "hostName": { + "type": "string" + }, + "hostId": { + "type": "string" + } + }, + "required": [ + "hostId" + ] + } + } +} diff --git a/MEC021/SRV/AMS/schemas/AdjacentAppInfoNotification.schema.json b/MEC021/SRV/AMS/schemas/AdjacentAppInfoNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..b0d3d1b890e3f0eb49247ed4a777c486da2d45ec --- /dev/null +++ b/MEC021/SRV/AMS/schemas/AdjacentAppInfoNotification.schema.json @@ -0,0 +1,95 @@ +{ + "$schema": "http://json-schema.org/draft/2020-12/schema#", + "title": "AdjacentAppInfoNotification", + "type": "object", + "properties": { + "notificationType": { + "type": "string", + "const": "AdjacentAppInfoNotification", + "description": "Shall be set to 'MobilityProcedureNotification'." + }, + "timeStamp": { + "type": "string", + "format": "date-time", + "description": "Date and time of the generation of the notification." + }, + "adjacentAppInfo": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Identifier of the adjacent application instance" + }, + "_links": { + "type": "object", + "properties": { + "subscription": { + "$ref": "#/$defs/LinkType" + } + }, + "required": [ + "subscription" + ], + "additionalProperties": false, + "description": "Object containing hyperlinks related to the resource." + } + }, + "required": [ + "notificationType", + "_links" + ], + "$defs": { + "AdjacentAppInfo": { + "type": "object", + "properties": { + "appInstanceId": { + "type": "string", + "description": "Identifier of the adjacent application instance. " + }, + "communicationInterface": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/CommunicationInterface" + } + } + }, + "required": [ + "appInstanceId" + ] + }, + "CommunicationInterface": { + "type": "object", + "description": "Communication interface of the application instance.", + "properties": { + "interfaceType": { + "type": "string" + }, + "endpoint": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "interfaceType", + "endpoint" + ], + "additionalProperties": true + }, + "LinkType": { + "type": "object", + "description": "Represents a type of link.", + "properties": { + "href": { + "type": "string", + "format": "uri", + "description": "URI referring to a resource." + } + }, + "required": [ + "href" + ], + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/schemas/AdjacentAppInstanceInfo.json.schema b/MEC021/SRV/AMS/schemas/AdjacentAppInstanceInfo.json.schema new file mode 100644 index 0000000000000000000000000000000000000000..5a5fd0a4137d32f89124047e028cfe40c9e31857 --- /dev/null +++ b/MEC021/SRV/AMS/schemas/AdjacentAppInstanceInfo.json.schema @@ -0,0 +1,65 @@ +{ + "$schema": "http://json-schema.org/draft/2020-12/schema#", + "title": "AdjacentAppInstanceInfo", + "type": "object", + "properties": { + "appInstanceId": { + "type": "string", + "description": "Identifier of the application instance. " + }, + "appDId": { + "type": "string", + "description": "Identifier of the application descriptor. " + }, + "appInstanceCommLink": { + "type": "array", + "minItem": 1, + "description": "It specifies the communication interface of application instance.", + "items": { + "$ref": "#/$defs/CommunicationInterface" + } + }, + "mecHostInformation": { + "description": "It specifies the communication interface of application instance.", + "$ref": "#/$defs/MECHostInformation" + } + }, + "required": [ + "appInstanceId", + "appDId" + ], + "$defs": { + "CommunicationInterface": { + "type": "object", + "description": "Communication interface of the application instance.", + "properties": { + "interfaceType": { + "type": "string" + }, + "endpoint": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "interfaceType", + "endpoint" + ], + "additionalProperties": true + }, + "MECHostInformation": { + "type": "object", + "properties": { + "hostName": { + "type": "string" + }, + "hostId": { + "type": "string" + } + }, + "required": [ + "hostId" + ] + } + } +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/schemas/ExpiryNotification.schema.json b/MEC021/SRV/AMS/schemas/ExpiryNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..cce314925afe2729ccc84bd442804c832d42b86a --- /dev/null +++ b/MEC021/SRV/AMS/schemas/ExpiryNotification.schema.json @@ -0,0 +1,80 @@ +{ + "$schema": "http://json-schema.org/draft/2020-12/schema#", + "title": "ExpiryNotification", + "type": "object", + "properties": { + "_links": { + "title": "Links2", + "required": [ + "subscription" + ], + "properties": { + "subscription": { + "description": "URI identifying the subscription which has expired.", + "title": "LinkType", + "required": [ + "href" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + } + }, + "description": "List of hyperlinks related to the resource." + }, + "expiryDeadline": { + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } + }, + "timeStamp": { + "description": "Time stamp of the notification.", + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC.", + "contentEncoding": "int32" + } + } + }, + "notificationType": { + "description": "Shall be set to \"ExpiryNotification\"", + "type": "string" + } + }, + "required": [ + "_links", + "expiryDeadline", + "notificationType" + ] +} \ No newline at end of file diff --git a/MEC021/SRV/AMS/schemas/MobilityProcedureNotification.schema.json b/MEC021/SRV/AMS/schemas/MobilityProcedureNotification.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..201b5391a187fe58790322eb0c464d739c9d1274 100644 --- a/MEC021/SRV/AMS/schemas/MobilityProcedureNotification.schema.json +++ b/MEC021/SRV/AMS/schemas/MobilityProcedureNotification.schema.json @@ -0,0 +1,99 @@ +{ + "$schema": "http://json-schema.org/draft/2020-12/schema#", + "title": "MobilityProcedureNotification", + "type": "object", + "properties": { + "notificationType": { + "type": "string", + "const": "MobilityProcedureNotification", + "description": "Shall be set to 'MobilityProcedureNotification'." + }, + "timeStamp": { + "type": "string", + "format": "date-time", + "description": "Date and time of the generation of the notification." + }, + "associateId": { + "type": "array", + "items": { + "type": "object" + }, + "minItems": 1, + "description": "1 to N identifiers to associate the information for specific UE(s) and flow(s)." + }, + "mobilityStatus": { + "type": "integer", + "enum": [1, 2, 3], + "description": "Status of the UE mobility. 1 = INTERHOST_MOVEOUT_TRIGGERED, 2 = INTERHOST_MOVEOUT_COMPLETED, 3 = INTERHOST_MOVEOUT_FAILED. Other values are reserved." + }, + "targetAppInfo": { + "type": "object", + "properties": { + "appInstanceId": { + "type": "string", + "description": "Identifier of the target application instance." + }, + "commInterface": { + "$ref": "#/$defs/CommunicationInterface" + } + }, + "required": ["appInstanceId"], + "additionalProperties": false, + "description": "Identifiers to associate the information of target application instance." + }, + "_links": { + "type": "object", + "properties": { + "subscription": { + "$ref": "#/$defs/LinkType" + } + }, + "required": ["subscription"], + "additionalProperties": false, + "description": "Object containing hyperlinks related to the resource." + } + }, + "required": ["notificationType", "associateId", "mobilityStatus", "_links"], + "additionalProperties": false, + "$defs": { + "AssociateId": { + "type": "object", + "description": "Identifier for UE(s) and flow(s).", + "properties": { + "id": { + "type": "string" + } + }, + "required": ["id"], + "additionalProperties": true + }, + "CommunicationInterface": { + "type": "object", + "description": "Communication interface of the application instance.", + "properties": { + "interfaceType": { + "type": "string" + }, + "endpoint": { + "type": "string", + "format": "uri" + } + }, + "required": ["interfaceType", "endpoint"], + "additionalProperties": true + }, + "LinkType": { + "type": "object", + "description": "Represents a type of link.", + "properties": { + "href": { + "type": "string", + "format": "uri", + "description": "URI referring to a resource." + } + }, + "required": ["href"], + "additionalProperties": false + } + } +} diff --git a/MEC021/SRV/AMS/schemas/TestNotification.schema.json b/MEC021/SRV/AMS/schemas/TestNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..af01800c08deace52ef379d411abec9994efd4ae --- /dev/null +++ b/MEC021/SRV/AMS/schemas/TestNotification.schema.json @@ -0,0 +1,43 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uri" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.7.2" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "notificationType": { + "description": "Shall be set to \"TestNotification\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "notificationType", + "_links" + ], + "type": "object", + "x-etsi-ref": "6.4.3" + } \ No newline at end of file diff --git a/MEC028/WAI/AP_INFO/environment/variables.txt b/MEC028/WAI/AP_INFO/environment/variables.txt index c19b668f78e9eae4c6961493f8d16599d6325db6..c3c9659cd8f8231cd3e9714d4ae064b0a89a4bb8 100644 --- a/MEC028/WAI/AP_INFO/environment/variables.txt +++ b/MEC028/WAI/AP_INFO/environment/variables.txt @@ -4,8 +4,8 @@ ${apiName} wai ${apiVersion} v2 ${MEC-APP_SCHEMA} http -${MEC-APP_HOST} mockoon -${MEC-APP_PORT} 3001 +${MEC-APP_HOST} %{MEC_APP_HOST=127.0.0.1} +${MEC-APP_PORT} %{MEC_APP_PORT=3001} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/MEC028/WAI/EXT_SUB/environment/variables.txt b/MEC028/WAI/EXT_SUB/environment/variables.txt index 7bf7a4bbbf0552db5c80009c89f1f86f4191627f..a0cca77e37f280c88a2a90037f9074e26942d98e 100644 --- a/MEC028/WAI/EXT_SUB/environment/variables.txt +++ b/MEC028/WAI/EXT_SUB/environment/variables.txt @@ -4,8 +4,9 @@ ${apiName} wai ${apiVersion} v2 ${MEC-APP_SCHEMA} http -${MEC-APP_HOST} mockoon -${MEC-APP_PORT} 3001 +${MEC-APP_HOST} %{MEC_APP_HOST=127.0.0.1} +${MEC-APP_PORT} %{MEC_APP_PORT=3001} + ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/MEC028/WAI/MEAS/environment/variables.txt b/MEC028/WAI/MEAS/environment/variables.txt index becba2157fa10a0fb7e7f1b437123486e38333d9..f9f470d8b65372223376c9a718e71111d2d1663f 100644 --- a/MEC028/WAI/MEAS/environment/variables.txt +++ b/MEC028/WAI/MEAS/environment/variables.txt @@ -4,8 +4,9 @@ ${apiName} wai ${apiVersion} v2 ${MEC-APP_SCHEMA} http -${MEC-APP_HOST} mockoon -${MEC-APP_PORT} 3001 +${MEC-APP_HOST} %{MEC_APP_HOST=127.0.0.1} +${MEC-APP_PORT} %{MEC_APP_PORT=3001} + ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/MEC028/WAI/STA_INFO/environment/variables.txt b/MEC028/WAI/STA_INFO/environment/variables.txt index 042ce8f7ad34afda3bd7f7faba05256dbb20bb3c..93cfd0e9b0d62ed90ef280b3b6ff0c202a8c05b5 100644 --- a/MEC028/WAI/STA_INFO/environment/variables.txt +++ b/MEC028/WAI/STA_INFO/environment/variables.txt @@ -4,8 +4,9 @@ ${apiName} wai ${apiVersion} v2 ${MEC-APP_SCHEMA} http -${MEC-APP_HOST} mockoon -${MEC-APP_PORT} 3001 +${MEC-APP_HOST} %{MEC_APP_HOST=127.0.0.1} +${MEC-APP_PORT} %{MEC_APP_PORT=3001} + ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/MEC028/WAI/SUB/environment/variables.txt b/MEC028/WAI/SUB/environment/variables.txt index 963ae9f4054dbe730c9c973913599dd0dd4377e0..47db09f13573159fe744b37d9e743a99453f30f5 100644 --- a/MEC028/WAI/SUB/environment/variables.txt +++ b/MEC028/WAI/SUB/environment/variables.txt @@ -4,8 +4,9 @@ ${apiName} wai ${apiVersion} v2 ${MEC-APP_SCHEMA} http -${MEC-APP_HOST} mockoon -${MEC-APP_PORT} 3001 +${MEC-APP_HOST} %{MEC_APP_HOST=127.0.0.1} +${MEC-APP_PORT} %{MEC_APP_PORT=3001} + ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l diff --git a/MEC029/SRV/FAIS/PlatFixedAcessInfo.robot b/MEC029/SRV/FAIS/PlatFixedAcessInfo.robot index 68ff0575430fd1ae78ae8189fb7f90f91e964cf2..9f06821c2d26a7eb162687be4407fd4c1441be7f 100644 --- a/MEC029/SRV/FAIS/PlatFixedAcessInfo.robot +++ b/MEC029/SRV/FAIS/PlatFixedAcessInfo.robot @@ -9,8 +9,6 @@ Resource environment/variables.txt Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false Library OperatingSystem Library MockServerLibrary - - Default Tags TC_MEC_SRV_FAIS @@ -20,9 +18,7 @@ TC_MEC_MEC029_SRV_FAIS_001_OK [Documentation] ... Check that the IUT responds with the current status of the fixed access information ... when queried by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.3.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get fixed access information details Check HTTP Response Status Code Is 200 @@ -33,9 +29,7 @@ TC_MEC_MEC029_SRV_FAIS_001_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application - ... - ... Reference ETSI GS MEC 029 V2.2.1, clause 7.3.3.1 - + ... Reference ETSI GS MEC 029 V2.2.1, clause 7.3.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get fixed access information details using query prameters interface ${INTERFACE_ID} Check HTTP Response Status Code Is 400 @@ -45,9 +39,7 @@ TC_MEC_MEC029_SRV_FAIS_001_NF [Documentation] ... Check that the IUT responds with an error when ... a request for non-existing data is sent by a MEC Application - ... - ... Reference ETSI GS MEC 029 V2.2.1, clause 7.3.3.1 - + ... Reference ETSI GS MEC 029 V2.2.1, clause 7.3.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get fixed access information details using query prameters interfaceType ${NON_EXISTENT_INTERFACE_ID} Check HTTP Response Status Code Is 404 @@ -57,9 +49,7 @@ TC_MEC_MEC029_SRV_FAIS_002_OK [Documentation] ... Check that the IUT responds with the current status of the device information ... when queried by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.4.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get status of device information Check HTTP Response Status Code Is 200 @@ -70,9 +60,7 @@ TC_MEC_MEC029_SRV_FAIS_002_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.4.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get status of device information using query prameters device ${DEVICE_ID} Check HTTP Response Status Code Is 400 @@ -82,9 +70,7 @@ TC_MEC_MEC029_SRV_FAIS_002_NF [Documentation] ... Check that the IUT responds with an error when ... a request for non-existing data is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.4.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get status of device information using query prameters deviceId ${NON_EXISTENT_DEVICE_ID} Check HTTP Response Status Code Is 404 @@ -94,9 +80,7 @@ TC_MEC_MEC029_SRV_FAIS_003_OK [Documentation] ... Check that the IUT responds with the current status of the cable line information ... when queried by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.5.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get status of the cable line information Check HTTP Response Status Code Is 200 @@ -107,9 +91,7 @@ TC_MEC_MEC029_SRV_FAIS_003_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.5.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get status of the cable line information using query parameters cm ${CABLE_MODEM_ID} Check HTTP Response Status Code Is 400 @@ -119,9 +101,7 @@ TC_MEC_MEC029_SRV_FAIS_003_NF [Documentation] ... Check that the IUT responds with an error when ... a request for non-existing data is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.5.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get status of the cable line information using query parameters cmId ${NON_EXISTING_FAI_CM_ID} Check HTTP Response Status Code Is 404 @@ -131,9 +111,7 @@ TC_MEC_MEC029_SRV_FAIS_004_OK [Documentation] ... Check that the IUT responds with the current status of the optical network information ... when queried by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.6.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get status of the opentical network information Check HTTP Response Status Code Is 200 @@ -144,9 +122,7 @@ TC_MEC_MEC029_SRV_FAIS_004_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.6.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get status of the opentical network information using query parameters onu ${ONU_ID} Check HTTP Response Status Code Is 400 @@ -156,9 +132,7 @@ TC_MEC_MEC029_SRV_FAIS_004_NF [Documentation] ... Check that the IUT responds with an error when ... a request for non-existing data is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.6.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get status of the opentical network information using query parameters onuId ${NON_EXISTING_FAI_ONU_ID} Check HTTP Response Status Code Is 404 @@ -168,9 +142,7 @@ TC_MEC_MEC029_SRV_FAIS_005_OK [Documentation] ... Check that the IUT responds with the subscriptions for fixed access information notifications ... when queried by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.7.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new subscription OnuAlarmSubscription @@ -187,9 +159,7 @@ TC_MEC_MEC029_SRV_FAIS_005_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.7.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of subscriptions using query parameters subscription ${SUBSCRIPTION_TYPE} Check HTTP Response Status Code Is 400 @@ -199,11 +169,8 @@ TC_MEC_MEC029_SRV_FAIS_005_NF [Documentation] ... Check that the IUT responds with an error when ... a request for non-existing data is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.7.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES - Get list of subscriptions using query parameters subscriptionType ${NON_EXISTENT_SUBSCRIPTION_TYPE} Check HTTP Response Status Code Is 404 @@ -212,9 +179,7 @@ TC_MEC_MEC029_SRV_FAIS_006_OK [Documentation] ... Check that the IUT acknowledges the subscription by a MEC Application ... to notifications on Optical Network Unit alarm events - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.7.3.4 - [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new subscription OnuAlarmSubscription Check HTTP Response Status Code Is 201 @@ -226,9 +191,7 @@ TC_MEC_MEC029_SRV_FAIS_006_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.7.3.4 - [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new subscription OnuAlarmSubscriptionError Check HTTP Response Status Code Is 400 @@ -238,9 +201,7 @@ TC_MEC_MEC029_SRV_FAIS_007_OK [Documentation] ... Check that the IUT responds with the information on a given subscription ... when queried by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.8.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new subscription OnuAlarmSubscription @@ -258,9 +219,7 @@ TC_MEC_MEC029_SRV_FAIS_007_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.8.3.1 - [Tags] PIC_MEC_PLAT PIC_SERVICES Get an individual subscription ${NON_ESISTENT_SUBSCRIPTION_ID} Check HTTP Response Status Code Is 404 @@ -270,9 +229,7 @@ TC_MEC_MEC029_SRV_FAIS_008_OK [Documentation] ... Check that the IUT updates an existing subscription ... when commanded by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.8.3.2 - [Tags] PIC_MEC_PLAT PIC_SERVICES [Setup] Create a new subscription OnuAlarmSubscription @@ -290,9 +247,7 @@ TC_MEC_MEC029_SRV_FAIS_008_BR [Documentation] ... Check that the IUT responds with an error when ... a request with incorrect parameters is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.8.3.2 - [Tags] PIC_MEC_PLAT PIC_SERVICES Update subscription ${ONU_ALARM_SUBSCRIPTION_ID} OnuAlarmSubscriptionUpdateError Check HTTP Response Status Code Is 400 @@ -302,13 +257,9 @@ TC_MEC_MEC029_SRV_FAIS_008_NF [Documentation] ... Check that the IUT responds with an error when ... a request for an unknown URI is sent by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.8.3.2 - [Tags] PIC_MEC_PLAT PIC_SERVICES - [Setup] Remove subscription ${NON_ESISTENT_SUBSCRIPTION_ID} - Update subscription ${NON_ESISTENT_SUBSCRIPTION_ID} OnuAlarmSubscriptionUpdate Check HTTP Response Status Code Is 404 @@ -317,9 +268,7 @@ TC_MEC_MEC029_SRV_FAIS_008_PF [Documentation] ... Check that the IUT responds with an error when ... a request sent by a MEC Application doesn't comply with a required condition - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.8.3.2 - [Tags] PIC_MEC_PLAT PIC_SERVICES Update subscription using invalid etag ${ONU_ALARM_SUBSCRIPTION_ID} OnuAlarmSubscriptionUpdate Check HTTP Response Status Code Is 412 @@ -329,25 +278,31 @@ TC_MEC_MEC029_SRV_FAIS_009_OK [Documentation] ... Check that the IUT cancels an existing subscription ... when commanded by a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.8.3.5 - [Tags] PIC_MEC_PLAT PIC_SERVICES - [Setup] Create a new subscription OnuAlarmSubscription Set Suite Variable ${subscriptionUrl} ${response['body']['_links']['self']['href']} - Remove subscription ${ONU_ALARM_SUBSCRIPTION_ID} Check HTTP Response Status Code Is 204 +TC_MEC_MEC029_SRV_FAIS_009_NF + [Documentation] + ... Check that the IUT cancels an existing subscription + ... when commanded by a MEC Application + ... Reference ETSI GS MEC 029 V2.2.1, clause 7.8.3.5 + [Tags] PIC_MEC_PLAT PIC_SERVICES + [Setup] Create a new subscription OnuAlarmSubscription + Set Suite Variable ${subscriptionUrl} ${response['body']['_links']['self']['href']} + Remove subscription ${NOT_EXISTING_ONU_ALARM_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + TC_MEC_MEC029_SRV_FAIS_010_OK [Documentation] ... Check that the IUT sends notification on expiry of Fixed Access Information event subscription ... to a MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 7.7.3.4 - [Tags] PIC_MEC_PLAT PIC_SERVICES ${json}= Get File schemas/DevInfoSubscription.schema.json Log Creating mock request and response to handle Device Information Notifications @@ -365,7 +320,6 @@ TC_MEC_MEC029_SRV_FAIS_011_OK [Documentation] ... Check that the IUT sends notifications on Fixed Access Information events ... to a subscribed MEC Application - ... ... Reference ETSI GS MEC 029 V2.2.1, clause 5.2.7 [Tags] PIC_MEC_PLAT PIC_SERVICES diff --git a/MEC029/SRV/FAIS/environment/variables.txt b/MEC029/SRV/FAIS/environment/variables.txt index e84f497951fefe33e8e85bc5e4ef5f57f44f36e9..592e22804ca0129daaad3bf460d4b580472fbd54 100644 --- a/MEC029/SRV/FAIS/environment/variables.txt +++ b/MEC029/SRV/FAIS/environment/variables.txt @@ -21,6 +21,7 @@ ${NON_EXISTING_FAI_ONU_ID} NON_EXISTING_FAI_ONU_ID ${SUBSCRIPTION_TYPE} DEVICE_ABNORMAL_ALERT ${NON_EXISTENT_SUBSCRIPTION_TYPE} NON_EXISTENT_SUBSCRIPTION_TYPE ${ONU_ALARM_SUBSCRIPTION_ID} 6cd12d29-30c7-4c8c-bf51-846daa51bab0 +${NOT_EXISTING_ONU_ALARM_SUBSCRIPTION_ID} NOT_EXISTING_ONU_ALARM_SUBSCRIPTION_ID ${NON_ESISTENT_SUBSCRIPTION_ID} NON_ESISTENT_SUBSCRIPTION_ID ${INVALID_ETAG} INVALID_ETAG diff --git a/MEC030/SRV/V2X/V2XInformationService.robot b/MEC030/SRV/V2X/V2XInformationService.robot index c6449e1eab0dbc086dc43a68835f3c9a62572f86..ea7482f2803aba0089ae8ad1f8e7fc43138b82f8 100644 --- a/MEC030/SRV/V2X/V2XInformationService.robot +++ b/MEC030/SRV/V2X/V2XInformationService.robot @@ -13,7 +13,7 @@ Library OperatingSystem TC_MEC_MEC030_SRV_V2X_001_OK_01 [Documentation] ... Check that the IUT responds with a configured provisioning information over Uu unicast when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.3.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.3.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over Uu unicast using ecgi filter ${ECGI} Check HTTP Response Status Code Is 200 @@ -23,7 +23,7 @@ TC_MEC_MEC030_SRV_V2X_001_OK_01 TC_MEC_MEC030_SRV_V2X_001_OK_02 [Documentation] ... Check that the IUT responds with a configured provisioning information over Uu unicast when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.3.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.3.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over Uu unicast using geographical filter ${LAT_VALUE} ${LON_VALUE} Check HTTP Response Status Code Is 200 @@ -32,7 +32,7 @@ TC_MEC_MEC030_SRV_V2X_001_OK_02 TC_MEC_MEC030_SRV_V2X_001_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.3.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.3.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over Uu unicast using geographical filter wrong parameter ${LAT_VALUE} ${LON_VALUE} Check HTTP Response Status Code Is 400 @@ -42,7 +42,7 @@ TC_MEC_MEC030_SRV_V2X_001_BR TC_MEC_MEC030_SRV_V2X_001_NF [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.3.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.3.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over Uu unicast using ecgi filter ${UNKNOWN_ECGI} Check HTTP Response Status Code Is 404 @@ -53,7 +53,7 @@ TC_MEC_MEC030_SRV_V2X_001_NF TC_MEC_MEC030_SRV_V2X_002_OK_01 [Documentation] ... Check that the IUT responds with a configured provisioning information over Uu MBM when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.4.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.4.3.1 Retrieve configured provisioning information over Uu MBM using ecgi filter ${ECGI} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is UuMbmsProvisioningInfo @@ -61,7 +61,7 @@ TC_MEC_MEC030_SRV_V2X_002_OK_01 TC_MEC_MEC030_SRV_V2X_002_OK_02 [Documentation] ... Check that the IUT responds with a configured provisioning information over Uu MBMS when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.4.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.4.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over Uu MBM using geographical filter ${LAT_VALUE} ${LON_VALUE} Check HTTP Response Status Code Is 200 @@ -70,7 +70,7 @@ TC_MEC_MEC030_SRV_V2X_002_OK_02 TC_MEC_MEC030_SRV_V2X_002_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.4.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.4.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over Uu MBM using geographical filter wrong parameter ${LAT_VALUE} ${LON_VALUE} Check HTTP Response Status Code Is 400 @@ -78,7 +78,7 @@ TC_MEC_MEC030_SRV_V2X_002_BR TC_MEC_MEC030_SRV_V2X_002_NF [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.4.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.4.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over Uu MBM using geographical filter ${UNKNOWN_LAT_VALUE} ${LON_VALUE} Check HTTP Response Status Code Is 404 @@ -89,7 +89,7 @@ TC_MEC_MEC030_SRV_V2X_002_NF TC_MEC_MEC030_SRV_V2X_003_OK_01 [Documentation] ... Check that the IUT responds with a configured provisioning information over PC5 when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.5.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.5.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over PC5 using ecgi filter ${ECGI} Check HTTP Response Status Code Is 200 @@ -98,7 +98,7 @@ TC_MEC_MEC030_SRV_V2X_003_OK_01 TC_MEC_MEC030_SRV_V2X_003_OK_02 [Documentation] ... Check that the IUT responds with a configured provisioning information over Uu MBMS when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.5.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.5.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over PC5 using geographical filter ${LAT_VALUE} ${LON_VALUE} Check HTTP Response Status Code Is 200 @@ -107,7 +107,7 @@ TC_MEC_MEC030_SRV_V2X_003_OK_02 TC_MEC_MEC030_SRV_V2X_003_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.5.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.5.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over PC5 using geographical filter wrong parameter ${LAT_VALUE} ${LON_VALUE} Check HTTP Response Status Code Is 400 @@ -116,7 +116,7 @@ TC_MEC_MEC030_SRV_V2X_003_BR TC_MEC_MEC030_SRV_V2X_003_NF [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.5.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.5.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Retrieve configured provisioning information over PC5 using ecgi filter ${UNKNOWN_ECGI} Check HTTP Response Status Code Is 404 @@ -126,7 +126,7 @@ TC_MEC_MEC030_SRV_V2X_003_NF TC_MEC_MEC030_SRV_V2X_004_OK [Documentation] ... Check that the IUT processes properly a request to information of V2X Message Distribution servers - ... ETSI GS MEC 030 v3.1.1, clause 7.6.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.6.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Request v2x message distribution servers V2XDistributionServers Check HTTP Response Body Json Schema Is V2XDistributionServers @@ -135,7 +135,7 @@ TC_MEC_MEC030_SRV_V2X_004_OK TC_MEC_MEC030_SRV_V2X_004_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.6.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.6.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Request v2x message distribution servers V2XDistributionServers_BR Check HTTP Response Status Code Is 400 @@ -144,7 +144,7 @@ TC_MEC_MEC030_SRV_V2X_004_BR TC_MEC_MEC030_SRV_V2X_004_NF [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.6.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.6.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Request v2x message distribution servers V2XDistributionServers_NF Check HTTP Response Status Code Is 404 @@ -154,7 +154,7 @@ TC_MEC_MEC030_SRV_V2X_004_NF TC_MEC_MEC030_SRV_V2X_005_OK [Documentation] ... Check that the IUT sends a request about QoS information for a vehicular UE when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.6.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.6.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Request predicted QoS PredictedQoS.json Check HTTP Response Body Json Schema Is PredictedQoS @@ -164,7 +164,7 @@ TC_MEC_MEC030_SRV_V2X_005_OK TC_MEC_MEC030_SRV_V2X_005_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.6.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.6.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml ##Wrong parameter into JSON: locality instead of locationGranularity Request predicted QoS PredictedQoS_BR.json @@ -173,7 +173,7 @@ TC_MEC_MEC030_SRV_V2X_005_BR TC_MEC_MEC030_SRV_V2X_005_NF [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.6.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.6.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Request predicted QoS PredictedQoS_NF.json Check HTTP Response Status Code Is 404 @@ -184,7 +184,7 @@ TC_MEC_MEC030_SRV_V2X_005_NF TC_MEC_MEC030_SRV_V2X_006_OK [Documentation] ... Check that the IUT processes properly a request to publish a V2X message - ... ETSI GS MEC 030 v3.1.1, clause 7.7.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.7.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Publish V2X message V2xMsgPublication.json Check HTTP Response Status Code Is 204 @@ -192,7 +192,7 @@ TC_MEC_MEC030_SRV_V2X_006_OK TC_MEC_MEC030_SRV_V2X_006_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.7.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.7.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Publish V2X message V2xMsgPublication_BR.json Check HTTP Response Status Code Is 400 @@ -203,7 +203,7 @@ TC_MEC_MEC030_SRV_V2X_006_BR TC_MEC_MEC030_SRV_V2X_007_OK_01 [Documentation] ... Check that the IUT responds with the requested list of subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.8.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.8.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 @@ -220,7 +220,7 @@ TC_MEC_MEC030_SRV_V2X_007_OK_01 TC_MEC_MEC030_SRV_V2X_007_OK_02 [Documentation] ... Check that the IUT responds with the requested list of subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.8.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.8.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 @@ -237,7 +237,7 @@ TC_MEC_MEC030_SRV_V2X_007_OK_02 TC_MEC_MEC030_SRV_V2X_007_OK_03 [Documentation] ... Check that the IUT responds with the requested list of subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.8.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.8.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 @@ -254,7 +254,7 @@ TC_MEC_MEC030_SRV_V2X_007_OK_03 TC_MEC_MEC030_SRV_V2X_008_OK_04 [Documentation] ... Check that the IUT responds with the requested list of subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.8.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.8.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 @@ -272,7 +272,7 @@ TC_MEC_MEC030_SRV_V2X_008_OK_04 TC_MEC_MEC030_SRV_V2X_008_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.8.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.8.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -284,7 +284,7 @@ TC_MEC_MEC030_SRV_V2X_008_BR TC_MEC_MEC030_SRV_V2X_009_OK_01 [Documentation] ... Check that the IUT responds with the requested to create a subscription - ... ETSI GS MEC 030 v3.1.1, clause 7.8.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.8.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -302,7 +302,7 @@ TC_MEC_MEC030_SRV_V2X_009_OK_01 TC_MEC_MEC030_SRV_V2X_009_OK_02 [Documentation] ... Check that the IUT responds with the requested to create a subscription - ... ETSI GS MEC 030 v3.1.1, clause 7.8.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.8.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -321,7 +321,7 @@ TC_MEC_MEC030_SRV_V2X_009_OK_02 TC_MEC_MEC030_SRV_V2X_009_OK_03 [Documentation] ... Check that the IUT responds with the requested to create a subscription - ... ETSI GS MEC 030 v3.1.1, clause 7.8.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.8.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -339,7 +339,7 @@ TC_MEC_MEC030_SRV_V2X_009_OK_03 TC_MEC_MEC030_SRV_V2X_009_OK_04 [Documentation] ... Check that the IUT responds with the requested to create a subscription - ... ETSI GS MEC 030 v3.1.1, clause 7.8.3.4 + ... ETSI GS MEC 030 v3.3.1, clause 7.8.3.4 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 @@ -359,7 +359,7 @@ TC_MEC_MEC030_SRV_V2X_009_OK_04 TC_MEC_MEC030_SRV_V2X_009_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 V3.1.1, clause 7.10.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.10.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -371,7 +371,7 @@ TC_MEC_MEC030_SRV_V2X_009_BR TC_MEC_MEC030_SRV_V2X_010_OK_01 [Documentation] ... Check that the IUT responds with the requested of subscription information when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -386,7 +386,7 @@ TC_MEC_MEC030_SRV_V2X_010_OK_01 TC_MEC_MEC030_SRV_V2X_010_OK_02 [Documentation] ... Check that the IUT responds with the requested of subscription information when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -402,7 +402,7 @@ TC_MEC_MEC030_SRV_V2X_010_OK_02 TC_MEC_MEC030_SRV_V2X_010_OK_03 [Documentation] ... Check that the IUT responds with the requested of subscription information when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -417,7 +417,7 @@ TC_MEC_MEC030_SRV_V2X_010_OK_03 TC_MEC_MEC030_SRV_V2X_010_OK_04 [Documentation] ... Check that the IUT responds with the requested of subscription information when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -432,7 +432,7 @@ TC_MEC_MEC030_SRV_V2X_010_OK_04 TC_MEC_MEC030_SRV_V2X_010_BR [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -443,7 +443,7 @@ TC_MEC_MEC030_SRV_V2X_010_BR TC_MEC_MEC030_SRV_V2X_010_NF [Documentation] ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.1 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.1 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -456,7 +456,7 @@ TC_MEC_MEC030_SRV_V2X_010_NF TC_MEC_MEC030_SRV_V2X_011_OK_01 [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -474,7 +474,7 @@ TC_MEC_MEC030_SRV_V2X_011_OK_01 TC_MEC_MEC030_SRV_V2X_011_OK_02 [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -492,7 +492,7 @@ TC_MEC_MEC030_SRV_V2X_011_OK_02 TC_MEC_MEC030_SRV_V2X_011_OK_03 [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -510,7 +510,7 @@ TC_MEC_MEC030_SRV_V2X_011_OK_03 TC_MEC_MEC030_SRV_V2X_011_OK_04 [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -528,7 +528,7 @@ TC_MEC_MEC030_SRV_V2X_011_OK_04 TC_MEC_MEC030_SRV_V2X_011_BR [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -541,7 +541,7 @@ TC_MEC_MEC030_SRV_V2X_011_BR TC_MEC_MEC030_SRV_V2X_011_NF [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -556,7 +556,7 @@ TC_MEC_MEC030_SRV_V2X_011_NF TC_MEC_MEC030_SRV_V2X_012_OK_01 [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -566,7 +566,7 @@ TC_MEC_MEC030_SRV_V2X_012_OK_01 TC_MEC_MEC030_SRV_V2X_012_OK_02 [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -576,7 +576,7 @@ TC_MEC_MEC030_SRV_V2X_012_OK_02 TC_MEC_MEC030_SRV_V2X_012_OK_03 [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -586,7 +586,7 @@ TC_MEC_MEC030_SRV_V2X_012_OK_03 TC_MEC_MEC030_SRV_V2X_012_OK_04 [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 @@ -597,7 +597,7 @@ TC_MEC_MEC030_SRV_V2X_012_OK_04 TC_MEC_MEC030_SRV_V2X_012_NF [Documentation] ... Check that the IUT responds with the requested of updating subscription when queried by a MEC Application - ... ETSI GS MEC 030 v3.1.1, clause 7.9.3.2 + ... ETSI GS MEC 030 v3.3.1, clause 7.9.3.2 ... https://forge.etsi.org/rep/mec/gs030-vis-api/-/blob/master/MEC030_V2XInformationServices.yaml Should Be True ${PIC_MEC_SYSTEM} == 1 Should Be True ${PIC_SERVICES} == 1 diff --git a/MEC030/SRV/V2X/environment/variables.txt b/MEC030/SRV/V2X/environment/variables.txt index c4ad9e416d570953495d4c3bb3aae6af04823394..9842a6a17300b24770ec2e66082557ff3360ccf7 100644 --- a/MEC030/SRV/V2X/environment/variables.txt +++ b/MEC030/SRV/V2X/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} mockoon -${PORT} 3005 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=3005} ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC033/MEX/IOTS/IOTDEV/RegisteredDevices.robot b/MEC033/MEX/IOTS/IOTDEV/RegisteredDevices.robot index ba938d8dd0c1c022fdd7417382631990850299c3..4e52467f2940ad2728a052a9bb4393cb0d363df6 100644 --- a/MEC033/MEX/IOTS/IOTDEV/RegisteredDevices.robot +++ b/MEC033/MEX/IOTS/IOTDEV/RegisteredDevices.robot @@ -17,8 +17,8 @@ Test Teardown Test TearDown ${DEVICE_ID_PLACEHOLDER} DeviceInfo ${N TC_MEC_MEC033_IOTS_IOTDEV_001_OK_01 [Documentation] ... Check that the IUT responds with the list of registered IoT devices - ... when queried by a Service Consumer - ... ETSI GS MEC 033 V3.1.1, clause 7.3.3.1 + ... when queried by a Service Consumer - No Filter + ... ETSI GS MEC 033 clause 7.3.3.1 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} DeviceInfo ${REGISTER_ACTION} @@ -35,7 +35,7 @@ TC_MEC_MEC033_IOTS_IOTDEV_001_OK_01 TC_MEC_MEC033_IOTS_IOTDEV_001_OK_02 [Documentation] ... "Check that the IUT responds with the list of registered IoT devices when queried using a filter by a Service Consumer - ... ETSI GS MEC 033 V3.1.1, clause 7.3.3.1 + ... ETSI GS MEC 033 clause 7.3.3.1 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} DeviceInfo ${REGISTER_ACTION} ${DEVICE_ID_VALUE} Get value entry from JSON file DeviceInfo deviceId @@ -51,8 +51,8 @@ TC_MEC_MEC033_IOTS_IOTDEV_001_OK_02 TC_MEC_MEC033_IOTS_IOTDEV_001_OK_03 [Documentation] - ... "Check that the IUT responds with the list of registered IoT devices when queried by a Service Consumer filtering one field - ... ETSI GS MEC 033 V3.1.1, clause 7.3.3.1 + ... "Check that the IUT responds with the list of registered IoT devices when queried by a Service Consumer, filtering one field + ... ETSI GS MEC 033 clause 7.3.3.1 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} DeviceInfo ${REGISTER_ACTION} ${DEVICE_ID_VALUE} Get value entry from JSON file DeviceInfo deviceId @@ -63,8 +63,8 @@ TC_MEC_MEC033_IOTS_IOTDEV_001_OK_03 TC_MEC_MEC033_IOTS_IOTDEV_001_OK_04 [Documentation] - ... "Check that the IUT responds with the list of registered IoT devices when queried by a Service Consumer filtering one field - ... ETSI GS MEC 033 V3.1.1, clause 7.3.3.1 + ... "Check that the IUT responds with the list of registered IoT devices when queried by a Service Consumer, filtering one field + ... ETSI GS MEC 033 clause 7.3.3.1 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} DeviceInfo ${REGISTER_ACTION} ${DEVICE_ID_VALUE} Get value entry from JSON file DeviceInfo deviceId @@ -80,7 +80,7 @@ TC_MEC_MEC033_IOTS_IOTDEV_001_OK_04 TC_MEC_MEC033_IOTS_IOTDEV_002_OK [Documentation] ... Check that the IUT registers the information of an IoT device when requested by a Service Consumer - ... ETSI GS MEC 033 V3.1.1, clause 7.3.3.4 + ... ETSI GS MEC 033 clause 7.3.3.4 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${DEVICE_ID} ${None} ${REMOVE_ACTION} @@ -103,7 +103,7 @@ TC_MEC_MEC033_IOTS_IOTDEV_002_OK TC_MEC_MEC033_IOTS_IOTDEV_002_BR [Documentation] ... Check that the IUT returns an error when Service Consumer request to register an IoT device with incorrect parameters - ... ETSI GS MEC 033 V3.1.1, clause 7.3.3.4 + ... ETSI GS MEC 033 clause 7.3.3.4 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf ## No setup needed Register IOT Device information DeviceInfoBR @@ -113,7 +113,7 @@ TC_MEC_MEC033_IOTS_IOTDEV_002_BR TC_MEC_MEC033_IOTS_IOTDEV_003_OK [Documentation] ... Check that the IUT returns the IoT device information when requested by Service Consumer specifying the device identifier - ... ETSI GS MEC 033 V3.1.1, clause 7.4.3.1 + ... ETSI GS MEC 033 clause 7.4.3.1 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} DeviceInfo ${REGISTER_ACTION} ${DEVICE_ID_VALUE} Get value entry from JSON file DeviceInfo deviceId @@ -127,7 +127,7 @@ TC_MEC_MEC033_IOTS_IOTDEV_003_OK TC_MEC_MEC033_IOTS_IOTDEV_003_NF [Documentation] ... Check that the IUT returns error when Service Consumer request to retrieve a not registered IoT device - ... ETSI GS MEC 033 V3.1.1, clause 7.4.3.1 + ... ETSI GS MEC 033 clause 7.4.3.1 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${NOT_EXISTING_DEVICE_ID} ${None} ${REMOVE_ACTION} Retrieve specific registered IOT Device information ${NOT_EXISTING_DEVICE_ID} @@ -138,7 +138,7 @@ TC_MEC_MEC033_IOTS_IOTDEV_003_NF TC_MEC_MEC033_IOTS_IOTDEV_004_OK [Documentation] ... Check that the IUT returns an error when Service Consumer request to register an IoT device with incorrect parameters - ... ETSI GS MEC 033 V3.1.1, clause 7.4.3.2 + ... ETSI GS MEC 033 clause 7.4.3.2 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} DeviceInfo ${REGISTER_ACTION} ${DEVICE_ID_VALUE} Get value entry from JSON file DeviceInfo deviceId @@ -159,7 +159,7 @@ TC_MEC_MEC033_IOTS_IOTDEV_004_OK TC_MEC_MEC033_IOTS_IOTDEV_004_NF [Documentation] ... Check that the IUT returns an error when a Service Consumer requests to update a not registered IoT device - ... ETSI GS MEC 033 V3.1.1, clause 7.4.3.2 + ... ETSI GS MEC 033 clause 7.4.3.2 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${NOT_EXISTING_DEVICE_ID} ${None} ${REMOVE_ACTION} Update IOT Device information ${NOT_EXISTING_DEVICE_ID} DeviceInfoUpdate @@ -169,7 +169,7 @@ TC_MEC_MEC033_IOTS_IOTDEV_004_NF TC_MEC_MEC033_IOTS_IOTDEV_004_BR [Documentation] ... Check that the IUT returns an error when a Service Consumer requests to update an existing IoT device with incorrect parameters - ... ETSI GS MEC 033 V3.1.1, clause 7.4.3.2 + ... ETSI GS MEC 033 clause 7.4.3.2 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${NOT_EXISTING_DEVICE_ID} ${None} ${REMOVE_ACTION} Update IOT Device information ${NOT_EXISTING_DEVICE_ID} DeviceInfoUpdateBR @@ -178,23 +178,23 @@ TC_MEC_MEC033_IOTS_IOTDEV_004_BR TC_MEC_MEC033_IOTS_IOTDEV_005_OK [Documentation] - ... Check that the IUT deregisters an IoT device information when requested by a Service Consumer specifying the IoT registered device identifier - ... ETSI GS MEC 033 V3.1.1, clause 7.4.3.5 + ... Check that the IUT unregisters an IoT device information when requested by a Service Consumer specifying the IoT registered device identifier + ... ETSI GS MEC 033 clause 7.4.3.5 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} DeviceInfo ${REGISTER_ACTION} ${DEVICE_ID_VALUE} Get value entry from JSON file DeviceInfo deviceId - Deregister IOT Device information ${DEVICE_ID_VALUE} + Unregister IOT Device information ${DEVICE_ID_VALUE} Check HTTP Response Status Code Is 204 ## No Teardown needed TC_MEC_MEC033_IOTS_IOTDEV_005_NF [Documentation] - ... "Check that the IUT returns an error when a Service Consumer requests to deregisters an IoT device using incorrect parameters - ... ETSI GS MEC 033 V3.1.1, clause 7.4.3.5 + ... "Check that the IUT returns an error when a Service Consumer requests to unregisters an IoT device using incorrect parameters + ... ETSI GS MEC 033 clause 7.4.3.5 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${NOT_EXISTING_DEVICE_ID} ${None} ${REMOVE_ACTION} - Deregister IOT Device information ${NOT_EXISTING_DEVICE_ID} + Unregister IOT Device information ${NOT_EXISTING_DEVICE_ID} Check HTTP Response Status Code Is 404 ##No tearDown needed @@ -294,7 +294,7 @@ Update IOT Device information Set Suite Variable ${response} ${output} -Deregister IOT Device information +Unregister IOT Device information [Arguments] ${deviceId} Should Be True ${PIC_MEC_PLAT} == 1 Should Be True ${PIC_SERVICES} == 1 diff --git a/MEC033/MEX/IOTS/IOTPLAT/RegisteredIoTPlatform.robot b/MEC033/MEX/IOTS/IOTPLAT/RegisteredIoTPlatform.robot index 664a174b8b8368a887f6e7473d0fb149fd5da915..43cb156e9fcbb9c5c74621b3071cd867d17dcbca 100644 --- a/MEC033/MEX/IOTS/IOTPLAT/RegisteredIoTPlatform.robot +++ b/MEC033/MEX/IOTS/IOTPLAT/RegisteredIoTPlatform.robot @@ -17,7 +17,7 @@ TC_MEC_MEC033_MEX_IOTS_IOTPLAT_001_OK [Documentation] ... Check that the IUT responds with the list of registered IoT platforms ... when queried by a Service Consumer - ... ETSI GS MEC 033 V3.1.1, clause 7.5.3.1 + ... ETSI GS MEC 033 clause 7.5.3.1 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} IoTPlatformInfo ${REGISTER_ACTION} ${IOT_PLATFORM_ID_VALUE} Get value entry from JSON file IoTPlatformInfo iotPlatformId @@ -33,7 +33,7 @@ TC_MEC_MEC033_MEX_IOTS_IOTPLAT_002_OK [Documentation] ... Check that the IUT registers the information of a new IoT platform ... when requested by a Service Consumer - ... ETSI GS MEC 033 V3.1.1, clause 7.5.3.4 + ... ETSI GS MEC 033 clause 7.5.3.4 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${IOT_PLATFORM_ID} ${None} ${REMOVE_ACTION} @@ -55,7 +55,7 @@ TC_MEC_MEC033_MEX_IOTS_IOTPLAT_002_BR [Documentation] ... Check that the IUT returns an error ... when Service Consumer request to register an IoT device with incorrect parameters - ... ETSI GS MEC 033 V3.1.1, clause 7.5.3.4 + ... ETSI GS MEC 033 clause 7.5.3.4 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf Register IOT Platform information IotPlatformInfoBR Check HTTP Response Status Code Is 400 @@ -65,7 +65,7 @@ TC_MEC_MEC033_MEX_IOTS_IOTPLAT_003_OK [Documentation] ... Check that the IUT returns the IoT platform information ... when requested by Service Consumer specifying the IoT platform identifier - ... ETSI GS MEC 033 V3.1.1, clause 7.5.3.1 + ... ETSI GS MEC 033 clause 7.5.3.1 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} IoTPlatformInfo ${REGISTER_ACTION} ${IOT_PLATFORM_ID_VALUE} Get value entry from JSON file IoTPlatformInfo iotPlatformId @@ -84,7 +84,7 @@ TC_MEC_MEC033_MEX_IOTS_IOTPLAT_003_NF [Documentation] ... Check that the IUT returns the IoT platform information ... when requested by Service Consumer specifying the IoT platform identifier - ... ETSI GS MEC 033 V3.1.1, clause 7.5.3.1 + ... ETSI GS MEC 033 clause 7.5.3.1 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${NOT_EXISTING_IOT_PLATFORM_ID} ${None} ${NOT_EXISTING_IOT_PLATFORM_ID} Retrieve specific registered IOT Platform information ${NOT_EXISTING_IOT_PLATFORM_ID} @@ -95,7 +95,7 @@ TC_MEC_MEC033_MEX_IOTS_IOTPLAT_004_OK [Documentation] ... Check that the IUT updates the information about a registered IoT platform ... when requested by a Service Consumer - ... ETSI GS MEC 033 V3.1.1, clause 7.5.3.2 + ... ETSI GS MEC 033 clause 7.5.3.2 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} IoTPlatformInfo ${REGISTER_ACTION} ${IOT_PLATFORM_ID_VALUE} Get value entry from JSON file IotPlatformInfoUpdate iotPlatformId @@ -114,7 +114,7 @@ TC_MEC_MEC033_MEX_IOTS_IOTPLAT_004_NF [Documentation] ... Check that the IUT returns an error ... when a Service Consumer requests to update a not registered IoT platform - ... ETSI GS MEC 033 V3.1.1, clause 7.5.3.2 + ... ETSI GS MEC 033 clause 7.5.3.2 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${NOT_EXISTING_IOT_PLATFORM_ID} ${None} ${NOT_EXISTING_IOT_PLATFORM_ID} Update registered IOT Platform information ${NOT_EXISTING_IOT_PLATFORM_ID} IotPlatformInfoUpdate @@ -123,13 +123,13 @@ TC_MEC_MEC033_MEX_IOTS_IOTPLAT_004_NF TP_MEC_MEC033_MEX_IOTS_IOTPLAT_005_OK [Documentation] - ... Check that the IUT deregisters an IoT platform information + ... Check that the IUT unregisters an IoT platform information ... when requested by a Service Consumer specifying the registered IoT platform identifier - ... ETSI GS MEC 033 V3.1.1, clause 7.5.3.5 + ... ETSI GS MEC 033 clause 7.5.3.5 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${None} IoTPlatformInfo ${REGISTER_ACTION} ${IOT_PLATFORM_ID_VALUE} Get value entry from JSON file IoTPlatformInfo iotPlatformId - Deregister IOT Platform information ${IOT_PLATFORM_ID} + Unregister IOT Platform information ${IOT_PLATFORM_ID} Check HTTP Response Status Code Is 204 [Teardown] Test TearDown ${IOT_PLATFORM_ID_VALUE} ${None} ${REMOVE_ACTION} @@ -137,11 +137,11 @@ TP_MEC_MEC033_MEX_IOTS_IOTPLAT_005_OK TC_MEC_MEC033_MEX_IOTS_IOTPLAT_005_NF [Documentation] ... Check that the IUT returns an error - ... when a Service Consumer request to deregister an IoT platform using incorrect parameters - ... ETSI GS MEC 033 V3.1.1, clause 7.5.3.5 + ... when a Service Consumer request to unregister an IoT platform using incorrect parameters + ... ETSI GS MEC 033 clause 7.5.3.5 ... https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf [Setup] Test Setup ${NOT_EXISTING_IOT_PLATFORM_ID} ${None} ${NOT_EXISTING_IOT_PLATFORM_ID} - Deregister IOT Platform information ${NOT_EXISTING_IOT_PLATFORM_ID} + Unregister IOT Platform information ${NOT_EXISTING_IOT_PLATFORM_ID} Check HTTP Response Status Code Is 404 @@ -229,7 +229,7 @@ Register IOT Platform information Set Suite Variable ${response} ${output} - Deregister IOT Platform information +Unregister IOT Platform information [Arguments] ${registeredPlatformId} Should Be True ${PIC_MEC_PLAT} == 1 Should Be True ${PIC_SERVICES} == 1 diff --git a/MEC040/SRV/MEF/FederationEnablement.robot b/MEC040/SRV/MEF/FederationEnablement.robot index f89104b7f20cb4e6de871829b92fea6aefc07567..d4f1a287b237061cf05d4f2a652475fbe9647417 100644 --- a/MEC040/SRV/MEF/FederationEnablement.robot +++ b/MEC040/SRV/MEF/FederationEnablement.robot @@ -19,8 +19,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK [Documentation] ... Check that the IUT responds with a list of all available systemInfo ... when requested by a MEC Orchestrator - No query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Retrieve all system info resources Check HTTP Response Status Code Is 200 @@ -33,8 +33,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK_02 [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - SystemId query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Retrieve all system info resources with query params ${SYSTEM_ID_QUERY_PARAM} Check HTTP Response Status Code Is 200 @@ -48,8 +48,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK_03 [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - Multiple SystemId query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 @@ -74,8 +74,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK_04 [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - Empty SystemId query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Retrieve all system info resources @@ -88,8 +88,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK_05 [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - SystemName query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 ${SYSTEM_NAME_VALUE} Get value entry from JSON file SystemInfo systemName @@ -105,8 +105,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK_06 [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - Multiple SystemName query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 ${SYSTEM_NAME_VALUE} Get value entry from JSON file SystemInfo systemName ${SYSTEM_NAME_VALUE_2} Get value entry from JSON file SystemInfo2 systemName @@ -131,8 +131,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK_07 [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - Empty SystemName query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Retrieve all system info resources with query params ${EMPTY_SYSTEM_NAME_QUERY_PARAM} @@ -145,8 +145,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK_08 [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - systemProvider query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 ${SYS_PROVIDER_VALUE} Get value entry from JSON file SystemInfo systemProvider @@ -163,8 +163,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK_09 [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - Multiple systemProvider query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Retrieve all system info resources with query params ${MUTIPLE_SYS_PROVIDER_QUERY_PAR} Check HTTP Response Status Code Is 200 @@ -190,8 +190,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK_10 [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - Empty systemProvider query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Retrieve all system info resources with query params ${EMPTY_SYSTEM_PROVIDER_QUERY_PARAM} Check HTTP Response Status Code Is 200 @@ -206,8 +206,8 @@ TC_MEC_MEC040_SRV_MEF_001_OK_11 [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - Multiple query parameters - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 ${SYS_NAME_VALUE} Get value entry from JSON file SystemInfo systemName ${SYS_ID} Get value entry from JSON file SystemInfo systemName @@ -235,8 +235,8 @@ TC_MEC_MEC040_SRV_MEF_001_NF_01 [Documentation] ... Check that the IUT responds with an error ... when selection is not applicable - SystemId - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Remove specific system info resource ${NOT_EXT_SYSTEM_ID_QUERY_PARAM} Retrieve all system info resources with query params ${NOT_EXT_SYSTEM_ID_QUERY_PARAM} Check HTTP Response Status Code Is 404 @@ -245,8 +245,8 @@ TC_MEC_MEC040_SRV_MEF_001_NF_02 [Documentation] ... Check that the IUT responds with an error ... when selection is not applicable - SystemName - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf ##Test setup not applicable because systemInfo cannot be deleted by systemName Retrieve all system info resources with query params ${NOT_EXT_SYSTEM_NAME_QUERY_PARAM} Check HTTP Response Status Code Is 404 @@ -256,8 +256,8 @@ TC_MEC_MEC040_SRV_MEF_001_NF_03 [Documentation] ... Check that the IUT responds with an error ... when selection is not applicable - SystemProvider - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf ##Test setup not applicable because systemInfo cannot be deleted by systemProvider Retrieve all system info resources with query params ${NOT_EXT_SYS_PROVIDER_QUERY_PARAM} Check HTTP Response Status Code Is 404 @@ -266,16 +266,16 @@ TC_MEC_MEC040_SRV_MEF_001_NF_03 TC_MEC_MEC040_SRV_MEF_001_BR [Documentation] ... Check that the IUT responds with an error when request is malformed - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.1, clause 5.2.2.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.1, clause 5.2.2.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf Retrieve all system info resources wrong URL #Check HTTP Response Status Code Is 400 TC_MEC_MEC040_SRV_MEF_002_OK [Documentation] ... Check that the IUT creates a new systemInfo when requested by a MEC Orchestrator - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.4, clause 5.2.2.1.1 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.4, clause 5.2.2.1.1 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf ##No test setup needed because the systemId is generated by IUT Register System Info SystemInfo Check HTTP Response Status Code Is 201 @@ -293,8 +293,8 @@ TC_MEC_MEC040_SRV_MEF_002_OK TC_MEC_MEC040_SRV_MEF_002_BR_01 [Documentation] ... Check that the IUT responds with an error on creating an existing systemInfo - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.4, clause 5.2.2.1.1 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.4, clause 5.2.2.1.1 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf Register System Info SystemInfoBR Check HTTP Response Status Code Is 400 @@ -303,8 +303,8 @@ TC_MEC_MEC040_SRV_MEF_002_BR_01 TC_MEC_MEC040_SRV_MEF_002_BR_02 [Documentation] ... Check that the IUT responds with an error on providing inconsistent data - ... ETSI GS MEC 040 V3.1.1, clause 7.3.3.4, clause 5.2.2.1.1 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.3.3.4, clause 5.2.2.1.1 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf Register System Info SystemInfoBR Check HTTP Response Status Code Is 400 @@ -312,8 +312,8 @@ TC_MEC_MEC040_SRV_MEF_003_OK [Documentation] ... Check that the IUT responds with a selection of all available systemInfo ... when requested by a MEC Orchestrator - ... ETSI GS MEC 040 V3.1.1, clause 7.4.3.1, clause 5.2.2.1.1 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.4.3.1, clause 5.2.2.1.1 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Retrieve specific system info resource ${SYSTEM_ID_1} Check HTTP Response Status Code Is 200 @@ -325,8 +325,8 @@ TC_MEC_MEC040_SRV_MEF_003_NF [Documentation] ... Check that the IUT responds with an error ... when it receives a request for returning a systemInfo referred with a wrong systemId - ... ETSI GS MEC 040 V3.1.1, clause 7.4.3.1, clause 5.2.2.1.1 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.4.3.1, clause 5.2.2.1.1 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Remove specific system info resource ${NOT_EXISTING_SYSTEM_ID} Retrieve specific system info resource ${NOT_EXISTING_SYSTEM_ID} Check HTTP Response Status Code Is 404 @@ -336,16 +336,16 @@ TC_MEC_MEC040_SRV_MEF_003_BR [Documentation] ... Check that the IUT responds with an error ... when it receives a request for returning a systemInfo referred with a wrong systemId - ... ETSI GS MEC 040 V3.1.1, clause 7.4.3.1, clause 5.2.2.1.1 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause 7.4.3.1, clause 5.2.2.1.1 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf Retrieve specific system info resource ${NOT_EXISTING_SYSTEM_ID} #Check HTTP Response Status Code Is 400 TC_MEC_MEC040_SRV_MEF_004_OK_01 [Documentation] ... Check that the IUT updates the systemInfo when requested by a MEC Orchestrator - ... ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause clause 7.4.3.3, clause 5.2.2.1.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 ${SYS_PROVIDER} Get value entry from JSON file SystemInfoUpdate endpoint Update specific system info resource ${SYSTEM_ID_1} SystemInfoUpdate @@ -357,8 +357,8 @@ TC_MEC_MEC040_SRV_MEF_004_OK_01 TC_MEC_MEC040_SRV_MEF_004_OK_02 [Documentation] ... Check that the IUT updates the systemInfo when requested by a MEC Orchestrator - ... ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause clause 7.4.3.3, clause 5.2.2.1.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Update specific system info resource ${SYSTEM_ID_1} SystemInfoUpdate2 ${SYS_NAME} Get value entry from JSON file SystemInfoUpdate2 systemName @@ -371,8 +371,8 @@ TC_MEC_MEC040_SRV_MEF_004_OK_02 TC_MEC_MEC040_SRV_MEF_004_OK_03 [Documentation] ... Check that the IUT updates the systemInfo when requested by a MEC Orchestrator - ... ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause clause 7.4.3.3, clause 5.2.2.1.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Update specific system info resource ${SYSTEM_ID_1} SystemInfoUpdate3 Check HTTP Response Status Code Is 200 @@ -387,8 +387,8 @@ TC_MEC_MEC040_SRV_MEF_004_OK_03 TC_MEC_MEC040_SRV_MEF_004_NF [Documentation] ... Check that the IUT responds with an error when requested to update an unknown systemInfo - ... ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause clause 7.4.3.3, clause 5.2.2.1.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Remove specific system info resource ${NOT_EXISTING_SYSTEM_ID} Update specific system info resource ${NOT_EXISTING_SYSTEM_ID} SystemInfoUpdate3 Check HTTP Response Status Code Is 404 @@ -397,16 +397,16 @@ TC_MEC_MEC040_SRV_MEF_004_NF TC_MEC_MEC040_SRV_MEF_004_BR_01 [Documentation] ... Check that the IUT responds with an error when requested to update with an inconsistant URI - ... ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause clause 7.4.3.3, clause 5.2.2.1.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf Update specific system info resource ${NOT_EXISTING_SYSTEM_ID} SystemInfoUpdate3 Check HTTP Response Status Code Is 400 TC_MEC_MEC040_SRV_MEF_004_BR_02 [Documentation] ... Check that the IUT responds with an error when requested to update with no data provided - ... ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.3, clause 5.2.2.1.2 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause clause 7.4.3.3, clause 5.2.2.1.2 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Update specific system info resource ${EXPECTED_SYSTEM_ID} SystemInfoUpdateBR Check HTTP Response Status Code Is 400 @@ -416,8 +416,8 @@ TC_MEC_MEC040_SRV_MEF_004_BR_02 TC_MEC_MEC040_SRV_MEF_005_OK [Documentation] ... Check that the IUT responds with an error when requested to delete an unknown systemInfo - ... ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.5, clause 5.2.2.1.3 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause clause 7.4.3.5, clause 5.2.2.1.3 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Register mutiple system Info and get system Ids SystemInfo SystemInfo2 SystemInfo3 Remove specific system info resource ${SYSTEM_ID_1} Check HTTP Response Status Code Is 204 @@ -426,8 +426,8 @@ TC_MEC_MEC040_SRV_MEF_005_OK TC_MEC_MEC040_SRV_MEF_005_NF [Documentation] ... Check that the IUT responds with an error when requested to delete an unknown systemInfo - ... ETSI GS MEC 040 V3.1.1, clause clause 7.4.3.5, clause 5.2.2.1.3 - ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.01.01_60/gs_mec040v030101p.pdf + ... ETSI GS MEC 040 V3.2.1, clause clause 7.4.3.5, clause 5.2.2.1.3 + ... https://www.etsi.org/deliver/etsi_gs/mec/001_099/040/03.02.01_60/gs_mec040v030201p.pdf [Setup] Remove specific system info resource ${NOT_EXISTING_SYSTEM_ID} Remove specific system info resource ${NOT_EXISTING_SYSTEM_ID} Check HTTP Response Status Code Is 404 diff --git a/MEC040/SRV/MEF/environment/variables.txt b/MEC040/SRV/MEF/environment/variables.txt index 8ac81d51a9ec07c2783ac53729289c441cebac8e..ff8e47aa0ee45fda766d9083ac7dd0547dc77b69 100644 --- a/MEC040/SRV/MEF/environment/variables.txt +++ b/MEC040/SRV/MEF/environment/variables.txt @@ -1,8 +1,8 @@ *** Variables *** # Generic variables ${SCHEMA} http -${HOST} 127.0.0.1 -${PORT} 8084 +${HOST} %{MEC_APP_HOST=127.0.0.1} +${PORT} %{MEC_APP_PORT=8084} ${response} {} ${TOKEN} YWxhZGRpbjpvcGVuc2VzYW1l ${apiRoot} diff --git a/MEC045/EVENTSUBNOT/QoSEventSubNot.robot b/MEC045/EVENTSUBNOT/QoSEventSubNot.robot new file mode 100644 index 0000000000000000000000000000000000000000..be1374293f6c926acc50d5966cb308fc109c7051 --- /dev/null +++ b/MEC045/EVENTSUBNOT/QoSEventSubNot.robot @@ -0,0 +1,273 @@ +Y''[Documentation] robot --outputdir ../../../outputs ./QoSEventSubNot.robot +... Test Suite to validate QoSEventSubNot API operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../pics.txt +Resource ../../GenericKeywords.robot +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem +Library libraries/Server.py +Library libraries/StressGenerator.py +Library JSONLibrary +Library String +Library Collections +Library DateTime + +*** Test Cases *** +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_OK_01 + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_OK_01 + ... Check that the IUT acknowledges the creation of QoS event subscription request when commanded by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 6.4.3, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscription + ${SUB_TYPE} Get value entry from JSON file QoSEventSubscription subscriptionType + + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is QoSEventSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_OK_02 + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_OK_02 + ... Check that the IUT acknowledges the creation of QoS event subscription request when commanded by a MEC Application - With thresholds + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 6.4.3, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscriptionWithThreshold + ${SUB_TYPE} Get value entry from JSON file QoSEventSubscriptionWithThreshold subscriptionType + + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is QoSEventSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_01 + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_01 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Invalid SubscritionType + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 6.4.3, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscriptionBR + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_02 + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_02 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Neither callbackReference nor websockNotifConfig provided + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 6.4.3, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscriptionBR2 + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_03 + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_03 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Both callbackReference and websockNotifConfig provided + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 6.4.3, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscriptionBR3 + Check HTTP Response Status Code Is 400 + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_04 + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_04 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - users not present (Note 2) + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 6.4.3, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscriptionBR4 + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_05 + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_05 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - flowFilter not present (Note 2) + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 6.4.3, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscriptionBR5 + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_06 + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_06 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Invalid flowFilter + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 6.4.3, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscriptionBR6 + Check HTTP Response Status Code Is 400 + + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_07 + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_001_BR_07 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Invalid condition on monitoringArea + ... by a MEC Application - Invalid flowFilter + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscriptionBR7 + Check HTTP Response Status Code Is 400 + + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_002_OK + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_002_OK + ... Check that the IUT acknowledges the changes of QoS event subscription request + ... when commanded by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 7.4.3.2 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Update QoS Event Subscription QoSEventSubscriptionUpdate ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is QoSEventSubscription + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_002_NF + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_002_NF + ... Check that the IUT acknowledges the creation of QoS event subscription request when commanded by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 7.4.3.2 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Update QoS Event Subscription QoSEventSubscriptionUpdate ${UNKNOWN_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_003_OK + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_003_OK + ... Check that the IUT acknowledges the cancellation of QoS event subscription when commanded by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 7.4.3.5 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Delete QoS Event Subscription ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 204 + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_003_NF + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_003_NF + ... Check that the IUT acknowledges the cancellation of QoS event subscription when commanded by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.3, + ... ETSI GS MEC 045 Clause 7.4.3.5 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Delete QoS Event Subscription ${UNKNOWN_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_004_OK + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_004_OK + ... Check that the IUT provides a test notification when requested by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.4.1, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscriptionTestNotification + ${SUB_TYPE} Get value entry from JSON file QoSEventSubscriptionTestNotification subscriptionType + + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is QoSEventSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + + +TC_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_005_OK + [Documentation] TP_MEC_MEC045_SRV_QOS_EVENT_SUB_NOT_005_OK + ... Check that the IUT terminates notifications when the expiry timer expires + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.4.1, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSEventSubscriptionExpiryTimer + ${SUB_TYPE} Get value entry from JSON file QoSEventSubscriptionExpiryTimer subscriptionType + + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is QoSEventSubscription + + +*** Keywords *** +Spawn Expiry Notification Server + Log Starting notification server on ${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT} for expiry notification + ${notification}= Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} ResourceUsageSubscription + [Return] ${notification} + +Spawn Resource Notification Server + Log Starting notification server on ${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT} + ${notification}= Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} ResourceUsageSubscription + [Return] ${notification} + +Spawn Notification Server + Log Starting notification server on ${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT} + ${notification}= Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} SiteResourceUsageSubscription + [Return] ${notification} + +Create QoS Event Subscription + [Arguments] ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Update QoS Event Subscription + [Arguments] ${content} ${SUBSCRIPTION_ID} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + + Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Delete QoS Event Subscription + [Arguments] ${SUBSCRIPTION_ID} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/MEC045/EVENTSUBNOT/environment/variables.txt b/MEC045/EVENTSUBNOT/environment/variables.txt new file mode 100644 index 0000000000000000000000000000000000000000..8a7f3b8d08f306b709789c8df488b460dff9aec6 --- /dev/null +++ b/MEC045/EVENTSUBNOT/environment/variables.txt @@ -0,0 +1,16 @@ +*** Variables *** +# Generic variables +${SCHEMA} http +${HOST} 127.0.0.1 +#${HOST} 10.192.2.172 +${PORT} 8081 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} qms +${apiVersion} v1 + + +##Specific +${SUBSCRIPTION_ID} subscription_id +${UNKNOWN_SUBSCRIPTION_ID} unknown_sub_id \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscription.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..e4dd1fc673ab5eeb61c495b979ef81ee4e1b8e4b --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscription.json @@ -0,0 +1,18 @@ +{ + "subscriptionType": "QoSEventSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "sourceIp": "ABCDEFGHIJKLMNOPQRS", + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": "THROUGHPUT" + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR.json new file mode 100644 index 0000000000000000000000000000000000000000..576bbe0397c5ba0880b2dfb7f263d35b36ba1db4 --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR.json @@ -0,0 +1,18 @@ +{ + "subscriptionType": "QoSSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "sourceIp": "ABCDEFGHIJKLMNOPQRS", + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": "THROUGHPUT" + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR2.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR2.json new file mode 100644 index 0000000000000000000000000000000000000000..01ad9cbcaaf2a6259378c790679a629ae7582bca --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR2.json @@ -0,0 +1,17 @@ +{ + "subscriptionType": "QoSSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": "XXX" + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR3.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR3.json new file mode 100644 index 0000000000000000000000000000000000000000..ac4481fc08e6f79a4e1a089086c61336c5d64e2b --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR3.json @@ -0,0 +1,18 @@ +{ + "subscriptionType": "QoSSubscription", + "callbackReference": "http://someuri/someendpoint", + "websockNotifConfig": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": "THROUGHPUT" + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR4.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR4.json new file mode 100644 index 0000000000000000000000000000000000000000..24dab325f045dda79edddf9c3d13db8e2cc05515 --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR4.json @@ -0,0 +1,14 @@ +{ + "subscriptionType": "QoSSubscription", + "callbackReference": "http://someuri/someendpoint", + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": "THROUGHPUT" + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR5.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR5.json new file mode 100644 index 0000000000000000000000000000000000000000..609f444f3168772246f7eb65f28cf261ea77bd7a --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR5.json @@ -0,0 +1,12 @@ +{ + "subscriptionType": "QoSSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": "THROUGHPUT" + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR6.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR6.json new file mode 100644 index 0000000000000000000000000000000000000000..1525670f2f5e0e3fa11fb205fb766d9acb48b25f --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR6.json @@ -0,0 +1,14 @@ +{ + "subscriptionType": "QoSSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowInfo":{ + }, + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": "THROUGHPUT" + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR7.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR7.json new file mode 100644 index 0000000000000000000000000000000000000000..d2bc857f532dde25999bdf193f0740cf7550970a --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionBR7.json @@ -0,0 +1,17 @@ +{ + "subscriptionType": "QoSSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowInfo":{ + }, + "reportingCtrl": {}, + "measuringPeriod": 1000, + "monitoringArea":{ + "areaInfo":"" + }, + "reportTrigger": { + "metricType": "THROUGHPUT" + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionTestExpiryTimer.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionTestExpiryTimer.json new file mode 100644 index 0000000000000000000000000000000000000000..94e6ae2f7deb20eb941b13ae23ed50715a136567 --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionTestExpiryTimer.json @@ -0,0 +1,20 @@ +{ + "subscriptionType": "QoSEventSubscription", + "callbackReference": "http://someuri/someendpoint", + "requestTestNotification": true, + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "sourceIp": "ABCDEFGHIJKLMNOPQRS", + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": "THROUGHPUT" + }, + "expiryDeadline": "2020-01-01T00:00" +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionTestNotification.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionTestNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..362c452e31a7caccba32d3b216ad862b8d1b5d29 --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionTestNotification.json @@ -0,0 +1,19 @@ +{ + "subscriptionType": "QoSEventSubscription", + "callbackReference": "http://someuri/someendpoint", + "requestTestNotification": true, + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "sourceIp": "ABCDEFGHIJKLMNOPQRS", + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": "THROUGHPUT" + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionUpdate.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionUpdate.json new file mode 100644 index 0000000000000000000000000000000000000000..b0aad3b087e110917a06eb991726c5e13d126f2c --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionUpdate.json @@ -0,0 +1,19 @@ +{ + "subscriptionType": "QoSEventSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "sourceIp": "ABCDEFGHIJKLMNOPQRS", + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": "THROUGHPUT", + "upperThreshold":100000 + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionWithThreshold.json b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionWithThreshold.json new file mode 100644 index 0000000000000000000000000000000000000000..9d80a98ed247c3d0a651c63fd5aa121dff20b109 --- /dev/null +++ b/MEC045/EVENTSUBNOT/jsons/QoSEventSubscriptionWithThreshold.json @@ -0,0 +1,17 @@ +{ + "subscriptionType": "QoSEventSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": ["ACR_SOME_IP"], + "flowFilter": [ + {"sourceIP":"ACR_SOME_IP"} + ], + "sourceIp": "ABCDEFGHIJKLMNOPQRS", + "reportingCtrl": {}, + "measuringPeriod": 1000, + "reportTrigger":{ + "metricType":"THROUGHPUT", + "upperThreshold":100000, + "lowerThreshold":1000 + + } +} \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/libraries/Server.py b/MEC045/EVENTSUBNOT/libraries/Server.py new file mode 100644 index 0000000000000000000000000000000000000000..b1b6c850cbd73a60579b7a647347e25624c05c49 --- /dev/null +++ b/MEC045/EVENTSUBNOT/libraries/Server.py @@ -0,0 +1,52 @@ +#!/usr/bin/python3 +# filepath: c:\Users\Ikram Laptop\ROBOT-Framework\gs032p3-robot-test-suite\MEC048\MEO\CSE\libraries\Server.py + +from http.server import BaseHTTPRequestHandler, HTTPServer +import json, os +import logging + +# Library version +__version__ = '0.0.1' + +class Server(object): + ROBOT_LIBRARY_VERSION = '0.0.1' + + def spawn_web_server(self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None): + + class POST_Server(BaseHTTPRequestHandler): + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + self.req_body = None + + def do_POST(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + + content_len = int(self.headers.get('Content-Length')) + post_body = self.rfile.read(content_len) + self.req_body = post_body + logging.info(f"Received notification: {post_body}") + + def get_req_body(self): + return self.req_body + + def get_resp_body(self): + return self.resp_body + + self.handler = POST_Server(endpoint, resp_body) + self.app = HTTPServer((host, int(port)), self.handler) + self.app.timeout = int(timeout) + + logging.info(f"Starting notification server on {host}:{port} with timeout {timeout}") + self.app.handle_request() + self.app.server_close() + + if self.handler.get_req_body() is not None: + return json.loads(self.handler.get_req_body().decode("utf-8")) + return None \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/libraries/StressGenerator.py b/MEC045/EVENTSUBNOT/libraries/StressGenerator.py new file mode 100644 index 0000000000000000000000000000000000000000..ae9419a1e461eeb5b0364d682b763fb97fe10635 --- /dev/null +++ b/MEC045/EVENTSUBNOT/libraries/StressGenerator.py @@ -0,0 +1,37 @@ +import multiprocessing +import time + +class StressGenerator: + ROBOT_LIBRARY_VERSION = '0.0.1' + + def generate_cpu_load(self, duration=30, cpu_cores=None): + """ + Generate CPU load by spinning up processes that perform intensive calculations. + + Args: + duration: How long to run the stress test in seconds + cpu_cores: Number of CPU cores to use. If None, uses all available cores. + """ + if cpu_cores is None: + cpu_cores = multiprocessing.cpu_count() + + processes = [] + + def cpu_intensive_task(): + end_time = time.time() + duration + while time.time() < end_time: + # Perform CPU-intensive calculations + for i in range(10000000): + _ = i * i + + # Create and start processes + for _ in range(cpu_cores): + p = multiprocessing.Process(target=cpu_intensive_task) + p.start() + processes.append(p) + + # Wait for all processes to complete + for p in processes: + p.join() + + return f"Generated CPU load on {cpu_cores} cores for {duration} seconds" \ No newline at end of file diff --git a/MEC045/EVENTSUBNOT/schemas/QoSEventSubscription.json.schema b/MEC045/EVENTSUBNOT/schemas/QoSEventSubscription.json.schema new file mode 100644 index 0000000000000000000000000000000000000000..1187375cb68a5104423781e5f00435b919c51de7 --- /dev/null +++ b/MEC045/EVENTSUBNOT/schemas/QoSEventSubscription.json.schema @@ -0,0 +1,157 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "QoSEventSubscription", + "type": "object", + "properties": { + "subscriptionType": { + "type": "string", + "const": "QoSEventSubscription", + "description": "Shall be set to 'QoSEventSubscription'." + }, + "callbackReference": { + "type": "string", + "format": "uri", + "description": "URI exposed by the client to receive notifications via HTTP." + }, + "requestTestNotification": { + "type": "boolean", + "description": "If true, test notification shall be sent via HTTP as per ETSI GS MEC 009." + }, + "websocketNotifConfig": { + "$ref": "#/definitions/WebsocketNotifConfig" + }, + "_links": { + "type": "object", + "description": "Links to resources. Inline structure." + }, + "self": { + "type": "string", + "format": "uri", + "description": "URI of the subscription resource." + }, + "users": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "description": "List of user identifiers." + }, + "flowFilter": { + "type": "array", + "items": { + "type": "object", + "description": "Inline structure for traffic flow filtering criteria." + } + }, + "sourceIp": { + "type": "string", + "description": "IPv4/IPv6 address of the flow source." + }, + "sourcePort": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "dstIp": { + "type": "string", + "description": "IPv4/IPv6 address of the flow destination." + }, + "dstPort": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "protocol": { + "type": "integer" + }, + "dsField": { + "type": "integer" + }, + "trafficFilter": { + "type": "string" + }, + "eventTrigger": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "description": "Inline structure describing event trigger." + } + }, + "upperThreshold": { + "type": "integer" + }, + "lowerThreshold": { + "type": "integer" + }, + "reportingCtrl": { + "$ref": "#/definitions/ReportingCtrl" + }, + "measuringPeriod": { + "type": "integer" + }, + "monitoringArea": { + "type": "array", + "items": { + "$ref": "#/definitions/AreaInfo" + } + }, + "accessPointId": { + "type": "string" + }, + "zoneId": { + "type": "string" + }, + "timeSlot": { + "type": "array", + "items": { + "type": "object", + "description": "StartTime and EndTime range." + } + }, + "startTime": { + "type": "string", + "format": "date-time" + }, + "endTime": { + "type": "string", + "format": "date-time" + }, + "expiryDeadline": { + "type": "string", + "format": "date-time", + "description": "Expiration time of the subscription." + } + }, + "required": [ + "subscriptionType", + "eventTrigger", + "startTime", + "endTime" + ], + "anyOf": [ + { "required": ["callbackReference"] }, + { "required": ["websocketNotifConfig"] } + ], + "definitions": { + "WebsocketNotifConfig": { + "type": "object", + "description": "WebSocket config structure, aligns with ETSI GS MEC 009." + }, + "ReportingCtrl": { + "type": "object", + "description": "Reporting control structure as per ETSI." + }, + "AreaInfo": { + "type": "object", + "description": "Structure defining geographic or logical area for monitoring." + } + } +} diff --git a/MEC045/MEASSUBNOT/QoSMeasurementSubNot.robot b/MEC045/MEASSUBNOT/QoSMeasurementSubNot.robot new file mode 100644 index 0000000000000000000000000000000000000000..d126791e7f4d22725191045c53e4d7d5e9154101 --- /dev/null +++ b/MEC045/MEASSUBNOT/QoSMeasurementSubNot.robot @@ -0,0 +1,263 @@ +Y''[Documentation] robot --outputdir ../../../outputs ./QoSMeasurementSubNot.robot +... Test Suite to validate QoSMeasurementSubNot Service API operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../pics.txt +Resource ../../GenericKeywords.robot +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem +Library libraries/Server.py +Library libraries/StressGenerator.py +Library JSONLibrary +Library String +Library Collections +Library DateTime + +*** Test Cases *** +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_OK_01 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_OK_01 + ... Check that the IUT acknowledges the creation of QoS measurement subscription request when commanded by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 6.4.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSMeasureSubscription + ${SUB_TYPE} Get value entry from JSON file QoSMeasureSubscription subscriptionType + + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is QoSEventSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_OK_02 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_OK_02 + ... Check that the IUT acknowledges the creation of QoS measurement subscription request when commanded by a MEC Application - with reportingInterval + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 6.4.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSMeasureSubscriptionWithRepInterval + ${SUB_TYPE} Get value entry from JSON file QoSMeasureSubscriptionWithRepInterval subscriptionType + + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is QoSEventSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_OK_03 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_OK_03 + ... Check that the IUT acknowledges the creation of QoS measurement subscription request when commanded by a MEC Application - with numberOfReports + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 6.4.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSMeasureSubscriptionWithNumOfReports + ${SUB_TYPE} Get value entry from JSON file QoSMeasureSubscriptionWithNumOfReports subscriptionType + + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is QoSEventSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} ${SUB_TYPE} + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_01 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_01 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Invalid subscriptionType + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSSubscriptionBR + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_02 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_02 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Neither callbackReference nor websockNotifConfig provided + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSSubscriptionBR2 + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_03 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_03 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Both callbackReference and websockNotifConfig provided + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSSubscriptionBR3 + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_04 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_04 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - users not present (Note 2) + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSSubscriptionBR4 + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_05 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_05 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - flowInfo not present (Note 2) + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSSubscriptionBR5 + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_06 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_06 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Invalid flowFilter + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSSubscriptionBR6 + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_07 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_07 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Invalid condition on reportingInterval/measuringPeriod + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSSubscriptionBR7 + Check HTTP Response Status Code Is 400 + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_08 + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_001_BR_08 + ... Check that the IUT responds with an error when a request with incorrect parameters is sent + ... by a MEC Application - Invalid condition on measuringArea + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.3.3.4 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Create QoS Event Subscription QoSSubscriptionBR8 + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_002_OK + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_002_OK + ... Check that the IUT acknowledges the changes of an existing QoS measurement subscription request when commanded by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.4.3.2 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Update QoS Event Subscription QoSMeasureSubscriptionUpdate ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is QoSEventSubscription + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_002_NF + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_002_NF + ... Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.4.3.2 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Update QoS Event Subscription QoSMeasureSubscriptionUpdate ${UNKNOWN_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is QoSEventSubscription + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_003_OK + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_003_OK + ... Check that the IUT acknowledges the cancellation of QoS measurement subscription when commanded by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.4.3.5 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Delete QoS Event Subscription ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 204 + + +TC_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_003_NF + [Documentation] TP_MEC_MEC045_SRV_QOS_MEAS_SUB_NOT_003_NF + ... Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.2, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.4.3.5 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Delete QoS Event Subscription ${UNKNOWN_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + +*** Keywords *** +Spawn Expiry Notification Server + Log Starting notification server on ${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT} for expiry notification + ${notification}= Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} ResourceUsageSubscription + [Return] ${notification} + +Spawn Resource Notification Server + Log Starting notification server on ${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT} + ${notification}= Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} ResourceUsageSubscription + [Return] ${notification} + +Spawn Notification Server + Log Starting notification server on ${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT} + ${notification}= Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} SiteResourceUsageSubscription + [Return] ${notification} + +Create QoS Event Subscription + [Arguments] ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Update QoS Event Subscription + [Arguments] ${content} ${SUBSCRIPTION_ID} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + + Put ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + + +Delete QoS Event Subscription + [Arguments] ${SUBSCRIPTION_ID} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/MEC045/MEASSUBNOT/environment/variables.txt b/MEC045/MEASSUBNOT/environment/variables.txt new file mode 100644 index 0000000000000000000000000000000000000000..8a7f3b8d08f306b709789c8df488b460dff9aec6 --- /dev/null +++ b/MEC045/MEASSUBNOT/environment/variables.txt @@ -0,0 +1,16 @@ +*** Variables *** +# Generic variables +${SCHEMA} http +${HOST} 127.0.0.1 +#${HOST} 10.192.2.172 +${PORT} 8081 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} qms +${apiVersion} v1 + + +##Specific +${SUBSCRIPTION_ID} subscription_id +${UNKNOWN_SUBSCRIPTION_ID} unknown_sub_id \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscription.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..6d10f20d65f4e016d7514d3a1d0b6d14128ccc9a --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscription.json @@ -0,0 +1,17 @@ +{ + "subscriptionType": "QoSMeasureSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "flowInfo":[ "flowInfo1"], + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR.json new file mode 100644 index 0000000000000000000000000000000000000000..4a73528ae5903e05d50edad19709434e3fd177fa --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR.json @@ -0,0 +1,16 @@ +{ + "subscriptionType": "QoSSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR2.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR2.json new file mode 100644 index 0000000000000000000000000000000000000000..b70e475a8abde4f847316534c19fefb480115cbc --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR2.json @@ -0,0 +1,15 @@ +{ + "subscriptionType": "QoSSubscription", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR3.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR3.json new file mode 100644 index 0000000000000000000000000000000000000000..bb7f8c22dc0b9f03e4ff4c3efd9fa5b0ef4dc70f --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR3.json @@ -0,0 +1,17 @@ +{ + "subscriptionType": "QoSMeasureSubscription", + "callbackReference": "http://someuri/someendpoint", + "websockNotifConfig":"websocketconfig", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR4.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR4.json new file mode 100644 index 0000000000000000000000000000000000000000..14d5e5daa495652c1e27562f13a6e99a44a75d83 --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR4.json @@ -0,0 +1,13 @@ +{ + "subscriptionType": "QoSMeasureSubscription", + "callbackReference": "http://someuri/someendpoint", + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR5.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR5.json new file mode 100644 index 0000000000000000000000000000000000000000..a4d740e163f882ad1b41fee96c15002cb10d0d30 --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR5.json @@ -0,0 +1,16 @@ +{ + "subscriptionType": "QoSMeasureSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR6.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR6.json new file mode 100644 index 0000000000000000000000000000000000000000..ee0664afe8183844148a11714e317c507b98357b --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR6.json @@ -0,0 +1,17 @@ +{ + "subscriptionType": "QoSMeasureSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "flowInfo":[], + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR7.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR7.json new file mode 100644 index 0000000000000000000000000000000000000000..56aeab2ce7f33506bfa8d511fefc1725d411a11c --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR7.json @@ -0,0 +1,19 @@ +{ + "subscriptionType": "QoSMeasureSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "flowInfo":[ "flowInfo1"], + "measuringPeriod": 1000, + "reportingInterval":10, + "measuringPeriod":100, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR8.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR8.json new file mode 100644 index 0000000000000000000000000000000000000000..af52efd474bd8270f0cdd782091b28ed92e364c6 --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionBR8.json @@ -0,0 +1,20 @@ +{ + "subscriptionType": "QoSMeasureSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "flowInfo":[ "flowInfo1"], + "measuringPeriod": 1000, + "measuringArea":{ + "areaInfo":"" + }, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionUpdate.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionUpdate.json new file mode 100644 index 0000000000000000000000000000000000000000..1daafec114fd92fdba82c324d8f044d57be1bc46 --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionUpdate.json @@ -0,0 +1,17 @@ +{ + "subscriptionType": "QoSMeasureSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "flowInfo":[ "flowInfo1"], + "measuringPeriod": 1000, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY","ERRROR_RATE"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionWithNumOfReports.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionWithNumOfReports.json new file mode 100644 index 0000000000000000000000000000000000000000..1f2043f311c494459e999e5a01b4e82cb7603f5a --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionWithNumOfReports.json @@ -0,0 +1,17 @@ +{ + "subscriptionType": "QoSMeasureSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "numberOfReports": 100, + "reportingInterval": 10, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionWithRepInterval.json b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionWithRepInterval.json new file mode 100644 index 0000000000000000000000000000000000000000..2133f556f0ebfd6169bfc3600719f1a80f1280d1 --- /dev/null +++ b/MEC045/MEASSUBNOT/jsons/QoSMeasureSubscriptionWithRepInterval.json @@ -0,0 +1,16 @@ +{ + "subscriptionType": "QoSMeasureSubscription", + "callbackReference": "http://someuri/someendpoint", + "users": [ + "ACR_SOME_IP" + ], + "flowFilter": [ + { + "sourceIP": "ACR_SOME_IP" + } + ], + "reportingInterval": 10, + "reportTrigger": { + "metricType": ["THROUGHPUT","LATENCY"] + } +} \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/libraries/Server.py b/MEC045/MEASSUBNOT/libraries/Server.py new file mode 100644 index 0000000000000000000000000000000000000000..b1b6c850cbd73a60579b7a647347e25624c05c49 --- /dev/null +++ b/MEC045/MEASSUBNOT/libraries/Server.py @@ -0,0 +1,52 @@ +#!/usr/bin/python3 +# filepath: c:\Users\Ikram Laptop\ROBOT-Framework\gs032p3-robot-test-suite\MEC048\MEO\CSE\libraries\Server.py + +from http.server import BaseHTTPRequestHandler, HTTPServer +import json, os +import logging + +# Library version +__version__ = '0.0.1' + +class Server(object): + ROBOT_LIBRARY_VERSION = '0.0.1' + + def spawn_web_server(self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None): + + class POST_Server(BaseHTTPRequestHandler): + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + self.req_body = None + + def do_POST(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + + content_len = int(self.headers.get('Content-Length')) + post_body = self.rfile.read(content_len) + self.req_body = post_body + logging.info(f"Received notification: {post_body}") + + def get_req_body(self): + return self.req_body + + def get_resp_body(self): + return self.resp_body + + self.handler = POST_Server(endpoint, resp_body) + self.app = HTTPServer((host, int(port)), self.handler) + self.app.timeout = int(timeout) + + logging.info(f"Starting notification server on {host}:{port} with timeout {timeout}") + self.app.handle_request() + self.app.server_close() + + if self.handler.get_req_body() is not None: + return json.loads(self.handler.get_req_body().decode("utf-8")) + return None \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/libraries/StressGenerator.py b/MEC045/MEASSUBNOT/libraries/StressGenerator.py new file mode 100644 index 0000000000000000000000000000000000000000..ae9419a1e461eeb5b0364d682b763fb97fe10635 --- /dev/null +++ b/MEC045/MEASSUBNOT/libraries/StressGenerator.py @@ -0,0 +1,37 @@ +import multiprocessing +import time + +class StressGenerator: + ROBOT_LIBRARY_VERSION = '0.0.1' + + def generate_cpu_load(self, duration=30, cpu_cores=None): + """ + Generate CPU load by spinning up processes that perform intensive calculations. + + Args: + duration: How long to run the stress test in seconds + cpu_cores: Number of CPU cores to use. If None, uses all available cores. + """ + if cpu_cores is None: + cpu_cores = multiprocessing.cpu_count() + + processes = [] + + def cpu_intensive_task(): + end_time = time.time() + duration + while time.time() < end_time: + # Perform CPU-intensive calculations + for i in range(10000000): + _ = i * i + + # Create and start processes + for _ in range(cpu_cores): + p = multiprocessing.Process(target=cpu_intensive_task) + p.start() + processes.append(p) + + # Wait for all processes to complete + for p in processes: + p.join() + + return f"Generated CPU load on {cpu_cores} cores for {duration} seconds" \ No newline at end of file diff --git a/MEC045/MEASSUBNOT/schemas/QoSEventSubscription.json.schema b/MEC045/MEASSUBNOT/schemas/QoSEventSubscription.json.schema new file mode 100644 index 0000000000000000000000000000000000000000..1187375cb68a5104423781e5f00435b919c51de7 --- /dev/null +++ b/MEC045/MEASSUBNOT/schemas/QoSEventSubscription.json.schema @@ -0,0 +1,157 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "QoSEventSubscription", + "type": "object", + "properties": { + "subscriptionType": { + "type": "string", + "const": "QoSEventSubscription", + "description": "Shall be set to 'QoSEventSubscription'." + }, + "callbackReference": { + "type": "string", + "format": "uri", + "description": "URI exposed by the client to receive notifications via HTTP." + }, + "requestTestNotification": { + "type": "boolean", + "description": "If true, test notification shall be sent via HTTP as per ETSI GS MEC 009." + }, + "websocketNotifConfig": { + "$ref": "#/definitions/WebsocketNotifConfig" + }, + "_links": { + "type": "object", + "description": "Links to resources. Inline structure." + }, + "self": { + "type": "string", + "format": "uri", + "description": "URI of the subscription resource." + }, + "users": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "description": "List of user identifiers." + }, + "flowFilter": { + "type": "array", + "items": { + "type": "object", + "description": "Inline structure for traffic flow filtering criteria." + } + }, + "sourceIp": { + "type": "string", + "description": "IPv4/IPv6 address of the flow source." + }, + "sourcePort": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "dstIp": { + "type": "string", + "description": "IPv4/IPv6 address of the flow destination." + }, + "dstPort": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "protocol": { + "type": "integer" + }, + "dsField": { + "type": "integer" + }, + "trafficFilter": { + "type": "string" + }, + "eventTrigger": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "description": "Inline structure describing event trigger." + } + }, + "upperThreshold": { + "type": "integer" + }, + "lowerThreshold": { + "type": "integer" + }, + "reportingCtrl": { + "$ref": "#/definitions/ReportingCtrl" + }, + "measuringPeriod": { + "type": "integer" + }, + "monitoringArea": { + "type": "array", + "items": { + "$ref": "#/definitions/AreaInfo" + } + }, + "accessPointId": { + "type": "string" + }, + "zoneId": { + "type": "string" + }, + "timeSlot": { + "type": "array", + "items": { + "type": "object", + "description": "StartTime and EndTime range." + } + }, + "startTime": { + "type": "string", + "format": "date-time" + }, + "endTime": { + "type": "string", + "format": "date-time" + }, + "expiryDeadline": { + "type": "string", + "format": "date-time", + "description": "Expiration time of the subscription." + } + }, + "required": [ + "subscriptionType", + "eventTrigger", + "startTime", + "endTime" + ], + "anyOf": [ + { "required": ["callbackReference"] }, + { "required": ["websocketNotifConfig"] } + ], + "definitions": { + "WebsocketNotifConfig": { + "type": "object", + "description": "WebSocket config structure, aligns with ETSI GS MEC 009." + }, + "ReportingCtrl": { + "type": "object", + "description": "Reporting control structure as per ETSI." + }, + "AreaInfo": { + "type": "object", + "description": "Structure defining geographic or logical area for monitoring." + } + } +} diff --git a/MEC045/SUBLOOKUP/QoSLookup.robot b/MEC045/SUBLOOKUP/QoSLookup.robot new file mode 100644 index 0000000000000000000000000000000000000000..8dcc0a7d12b4134f3c9cb1253c2419225a7ce8c1 --- /dev/null +++ b/MEC045/SUBLOOKUP/QoSLookup.robot @@ -0,0 +1,159 @@ +Y''[Documentation] robot --outputdir ../../../outputs ./QoSLookup.robot +... Test Suite to validate QoSLookup API operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../pics.txt +Resource ../../GenericKeywords.robot +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem +Library libraries/Server.py +Library libraries/StressGenerator.py +Library JSONLibrary +Library String +Library Collections +Library DateTime + +*** Test Cases *** +TC_MEC_MEC045_SRV_QOSLOOKUP_001_OK + [Documentation] TP_MEC_MEC045_SRV_QOSLOOKUP_001_OK + ... Check that the IUT responds with the list of QoS measurement subscriptions when queried by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.4, + ... ETSI GS MEC 045 Clause 6.3.1, + ... ETSI GS MEC 045 Clause 7.3.3.1 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Retrieve all subscriptions + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is NotificationSubscriptionList + + +TC_MEC_MEC045_SRV_QOSLOOKUP_001_BR + [Documentation] TP_MEC_MEC045_SRV_QOSLOOKUP_001_BR + ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.4, + ... ETSI GS MEC 045 Clause 6.3.1, + ... ETSI GS MEC 045 Clause 7.3.3.1 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Retrieve Subscriptions with query params ${SUBSCRIPTION_ID} ${WRONG_QUERY_PARAM} + Check HTTP Response Status Code Is 400 + + +TC_MEC_MEC045_SRV_QOSLOOKUP_001_NF + [Documentation] TP_MEC_MEC045_SRV_QOSLOOKUP_001_NF + ... Check that the IUT responds with an error when no subscription are created + ... ETSI GS MEC 045 Clause 5.2.4, + ... ETSI GS MEC 045 Clause 6.3.1, + ... ETSI GS MEC 045 Clause 7.3.3.1 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Retrieve all subscriptions + Check HTTP Response Status Code Is 404 + + +TC_MEC_MEC045_SRV_QOSLOOKUP_002_OK_01 + [Documentation] TP_MEC_MEC045_SRV_QOSLOOKUP_002_OK_01 + ... Check that the IUT responds with the list of QoS measurement subscriptions when queried by a MEC Application - Filter on subscriptionId + ... ETSI GS MEC 045 Clause 5.2.5, + ... ETSI GS MEC 045 Clause 6.3.1, + ... ETSI GS MEC 045 Clause 7.3.3.1 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Retrieve Subscriptions with query params ${SUBSCRIPTION_ID} ${SUB_ID_QUERY_PARAM} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NotificationSubscriptionList + + +TC_MEC_MEC045_SRV_QOSLOOKUP_002_OK_02 + [Documentation] TP_MEC_MEC045_SRV_QOSLOOKUP_002_OK_02 + ... Check that the IUT responds with the list of QoS measurement subscriptions when queried by a MEC Application - Filter on subscriptionType + ... ETSI GS MEC 045 Clause 5.2.5, + ... ETSI GS MEC 045 Clause 6.3.1, + ... ETSI GS MEC 045 Clause 7.3.3.1 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Retrieve Subscriptions with query params ${SUBSCRIPTION_ID} ${SUB_TYPE_QUERY_PARAM} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is NotificationSubscriptionList + +TC_MEC_MEC045_SRV_QOSLOOKUP_002_NF_01 + [Documentation] TP_MEC_MEC045_SRV_QOSLOOKUP_002_NF_01 + ... Check that the IUT responds with with an error when no subscription matches with the filter - Filter on subscriptionType + ... ETSI GS MEC 045 Clause 5.2.5, + ... ETSI GS MEC 045 Clause 6.3.1, + ... ETSI GS MEC 045 Clause 7.3.3.1 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Retrieve Subscriptions with query params ${SUBSCRIPTION_ID} ${NF_SUB_TYPE_QUERY_PARAM} + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is NotificationSubscriptionList + + +TC_MEC_MEC045_SRV_QOSLOOKUP_002_NF_02 + [Documentation] TP_MEC_MEC045_SRV_QOSLOOKUP_002_NF_02 + ... Check that the IUT responds with with an error when no subscription matches with the filter - Filter on subscriptionId + ... ETSI GS MEC 045 Clause 5.2.5, + ... ETSI GS MEC 045 Clause 6.3.1, + ... ETSI GS MEC 045 Clause 7.3.3.1 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Retrieve Subscriptions with query params ${SUBSCRIPTION_ID} ${NF_SUB_TYPE_QUERY_PARAM} + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is NotificationSubscriptionList + + +TC_MEC_MEC045_SRV_QOSLOOKUP_003_OK + [Documentation] TP_MEC_MEC045_SRV_QOSLOOKUP_003_OK + ... Check that the IUT responds with a QoS measurement subscription when queried by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.5, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.4.3.1 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Retrieve Subscription ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is QoSMeasurementSubscription + + +TC_MEC_MEC045_SRV_QOSLOOKUP_003_NF + [Documentation] TP_MEC_MEC045_SRV_QOSLOOKUP_003_NF + ... Check that the IUT responds with an error + ... when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application + ... ETSI GS MEC 045 Clause 5.2.5, + ... ETSI GS MEC 045 Clause 6.3.2, + ... ETSI GS MEC 045 Clause 7.4.3.1 + [Tags] PIC_MEC_PLAT PIC_SERVICES + Retrieve Subscription ${UNKNOWN_SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + +*** Keywords *** +Retrieve all subscriptions + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve Subscription + [Arguments] ${SUBSCRIPTION_ID} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Retrieve Subscriptions with query params + [Arguments] ${SUBSCRIPTION_ID} ${QUERY_PARAMS} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + + Get ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${SUBSCRIPTION_ID}?${QUERY_PARAMS} + ${output}= Output response + Set Suite Variable ${response} ${output} + diff --git a/MEC045/SUBLOOKUP/environment/variables.txt b/MEC045/SUBLOOKUP/environment/variables.txt new file mode 100644 index 0000000000000000000000000000000000000000..9b8c7d3e12640f70b52a7960ad297dec0ddc8c65 --- /dev/null +++ b/MEC045/SUBLOOKUP/environment/variables.txt @@ -0,0 +1,21 @@ +*** Variables *** +# Generic variables +${SCHEMA} http +${HOST} 127.0.0.1 +#${HOST} 10.192.2.172 +${PORT} 8081 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} qms +${apiVersion} v1 + + +##Specific +${SUBSCRIPTION_ID} subscription_id +${UNKNOWN_SUBSCRIPTION_ID} unknown_sub_id +${WRONG_QUERY_PARAM} subscriptionIdentity=any_value +${SUB_ID_QUERY_PARAM} subscriptionId=HREF_VALUE_1&subscriptionId=HREF_VALUE_3 +${NF_SUB_ID_QUERY_PARAM} subscriptionId=UKNOWN_SUB_ID +${SUB_TYPE_QUERY_PARAM} subscriptionType=SUB_TYPE +${NF_SUB_TYPE_QUERY_PARAM} subscriptionType=QoSEventSubscription \ No newline at end of file diff --git a/MEC045/SUBLOOKUP/schemas/NotificationSubscriptionList.json.schema b/MEC045/SUBLOOKUP/schemas/NotificationSubscriptionList.json.schema new file mode 100644 index 0000000000000000000000000000000000000000..a1ad9ef09505222e06a847df1f33a2bda6d87655 --- /dev/null +++ b/MEC045/SUBLOOKUP/schemas/NotificationSubscriptionList.json.schema @@ -0,0 +1,211 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "QoSEventSubscription", + "type": "object", + "properties": { + "subscriptionType": { + "type": "string", + "const": "QoSEventSubscription" + }, + "callbackReference": { + "type": "string", + "format": "uri" + }, + "requestTestNotification": { + "type": "boolean" + }, + "websocketNotifConfig": { + "$ref": "#/definitions/WebsocketNotifConfig" + }, + "_links": { + "type": "object", + "description": "HATEOAS-style resource links." + }, + "self": { + "type": "string", + "format": "uri" + }, + "users": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + } + }, + "flowFilter": { + "type": "array", + "items": { + "$ref": "#/definitions/FlowFilter" + } + }, + "sourceIp": { + "type": "string" + }, + "sourcePort": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "dstIp": { + "type": "string" + }, + "dstPort": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + }, + "protocol": { + "type": "integer" + }, + "dsField": { + "type": "integer" + }, + "trafficFilter": { + "type": "string" + }, + "eventTrigger": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/EventTrigger" + } + }, + "upperThreshold": { + "type": "integer" + }, + "lowerThreshold": { + "type": "integer" + }, + "reportingCtrl": { + "$ref": "#/definitions/ReportingCtrl" + }, + "measuringPeriod": { + "type": "integer" + }, + "monitoringArea": { + "type": "array", + "items": { + "$ref": "#/definitions/AreaInfo" + } + }, + "accessPointId": { + "type": "string" + }, + "zoneId": { + "type": "string" + }, + "timeSlot": { + "type": "array", + "items": { + "$ref": "#/definitions/TimeSlot" + } + }, + "startTime": { + "type": "string", + "format": "date-time" + }, + "endTime": { + "type": "string", + "format": "date-time" + }, + "expiryDeadline": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "subscriptionType", + "eventTrigger", + "startTime", + "endTime" + ], + "anyOf": [ + { "required": ["callbackReference"] }, + { "required": ["websocketNotifConfig"] } + ], + "definitions": { + "WebsocketNotifConfig": { + "type": "object", + "properties": { + "websocketUri": { + "type": "string", + "format": "uri" + }, + "subprotocols": { + "type": "array", + "items": { "type": "string" } + } + }, + "required": ["websocketUri"] + }, + "FlowFilter": { + "type": "object", + "properties": { + "sourceIp": { "type": "string" }, + "destinationIp": { "type": "string" }, + "sourcePort": { + "type": "array", + "items": { "type": "integer", "minimum": 0, "maximum": 65535 } + }, + "destinationPort": { + "type": "array", + "items": { "type": "integer", "minimum": 0, "maximum": 65535 } + }, + "protocol": { "type": "integer" }, + "dsField": { "type": "integer" } + } + }, + "EventTrigger": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of event trigger, e.g., THRESHOLD_CROSSED" + }, + "params": { + "type": "object", + "description": "Additional trigger-specific parameters" + } + }, + "required": ["type"] + }, + "ReportingCtrl": { + "type": "object", + "properties": { + "reportingMode": { + "type": "string", + "enum": ["ONCE", "PERIODIC", "ON_EVENT"] + }, + "maxReports": { + "type": "integer", + "minimum": 1 + } + }, + "required": ["reportingMode"] + }, + "AreaInfo": { + "type": "object", + "properties": { + "zoneId": { "type": "string" }, + "locationList": { + "type": "array", + "items": { "type": "string" } + } + } + }, + "TimeSlot": { + "type": "object", + "properties": { + "start": { "type": "string", "format": "date-time" }, + "end": { "type": "string", "format": "date-time" } + }, + "required": ["start", "end"] + } + } +} diff --git a/MEC048/MEO/CSE/CustomerSelfServiceEnablement.robot b/MEC048/MEO/CSE/CustomerSelfServiceEnablement.robot new file mode 100644 index 0000000000000000000000000000000000000000..9733c9300981b64754fb127903942c50e3b816a2 --- /dev/null +++ b/MEC048/MEO/CSE/CustomerSelfServiceEnablement.robot @@ -0,0 +1,1340 @@ +Y''[Documentation] robot --outputdir ../../../outputs ./CustomerSelfServiceEnablement.robot +... Test Suite to validate CustomerSelfServiceEnablement Service API operations. + +*** Settings *** +Resource environment/variables.txt +Resource ../../../pics.txt +Resource ../../../GenericKeywords.robot +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem +Library libraries/Server.py +Library libraries/StressGenerator.py +Library JSONLibrary +Library String +Library Collections +Library DateTime + +*** Test Cases *** +TC_MEC_MEC048_MEO_CSE_001_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_001_OK + ... Check that the IUT responds with a list of all available tenantInfo when requested to a CSE - No query parameters + ... ETSI GS MEC 048 v3.1.1, clause 7.3.3.1 + ... ETSI GS MEC 048 v3.1.1, clause 6.2.2 (TenantInfo) + [Tags] PIC_SERVICES + [Setup] Register mutiple tenant Info and get tenant Ids TenantInfo TenantInfo2 TenantInfo3 + Retrieve all tenant Info resources + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is TenantInfoList + [Teardown] Remove mutiple tenant Info ${TENANT_ID_1} ${TENANT_ID_2} ${TENANT_ID_3} + +TC_MEC_MEC048_MEO_CSE_001_OK_02 + [Documentation] TP_MEC_MEC048_MEO_CSE_001_OK_02 + ... Check that the IUT responds with a list of tenantInfo when queried with customerId as query parameter + ... ETSI GS MEC 048 v3.1.1, clause 7.3.3.1 + ... ETSI GS MEC 048 v3.1.1, clause 6.2.2 (TenantInfo) + [Tags] PIC_SERVICES + [Setup] Register mutiple tenant Info and get tenant Ids TenantInfo TenantInfo2 TenantInfo3 + Retrieve all tenant info resources with query parameters customerId=${CUSTOMER_ID_1} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is TenantInfoList + FOR ${tenant} IN @{response['body']} + Should Be Equal As Strings ${tenant}[tenantId] ${TENANT_ID_1} + END + [Teardown] Remove mutiple tenant Info ${TENANT_ID_1} ${TENANT_ID_2} ${TENANT_ID_3} + +TC_MEC_MEC048_MEO_CSE_001_OK_03 + [Documentation] TP_MEC_MEC048_MEO_CSE_001_OK_03 + ... Check that the IUT responds with a list of tenantInfo when queried with customerName as query parameter + ... ETSI GS MEC 048 v3.1.1, clause 7.3.3.1 + ... ETSI GS MEC 048 v3.1.1, clause 6.2.2 (TenantInfo) + [Tags] PIC_SERVICES + [Setup] Register mutiple tenant Info and get tenant Ids TenantInfo TenantInfo2 TenantInfo3 + Retrieve all tenant info resources with query parameters customerName=${CUSTOMER_NAME_1} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is TenantInfoList + FOR ${tenant} IN @{response['body']} + Should Be Equal As Strings ${tenant}[customerName] ${CUSTOMER_NAME_1} + END + [Teardown] Remove mutiple tenant Info ${TENANT_ID_1} ${TENANT_ID_2} ${TENANT_ID_3} + +TC_MEC_MEC048_MEO_CSE_002_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_002_OK + ... Check that the IUT creates a new tenantInfo when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.3.3.4 + ... ETSI GS MEC 048 v3.1.1, clause 6.2.2 (TenantInfo) + [Tags] PIC_SERVICES + ##No test setup needed because the tenantId is generated by IUT + Register Tenant Info TenantInfo + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is TenantInfo + ${CUSTOMER_ID_VALUE} Get value entry from JSON file TenantInfo customerId + ${TENANT_NAME_VALUE} Get value entry from JSON file TenantInfo tenantName + + Should Be Equal As Strings ${response['body']['customerId']} ${CUSTOMER_ID_VALUE} + Should Be Equal As Strings ${response['body']['tenantName']} ${TENANT_NAME_VALUE} + + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_002_BR + [Documentation] TP_MEC_MEC048_MEO_CSE_002_BR + ... Check that the IUT responds with an error on creating a tenantInfo with both resourceUseInfo and siteList + ... ETSI GS MEC 048 v3.1.1, clause 7.3.3.4 and 6.2.2 (TenantInfo) + [Tags] PIC_SERVICES + Register Tenant Info TenantInfoBR + Check HTTP Response Status Code Is 400 + +TC_MEC_MEC048_MEO_CSE_003_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_003_OK + ... Check that the IUT responds with a specific tenantInfo when requested to a MEC Consumer + ... ETSI GS MEC 048 v3.1.1, clause 7.3.3.1 and 6.2.2 (TenantInfo) + [Tags] PIC_SERVICES + [Setup] Register Tenant Info TenantInfo + Retrieve specific tenant info resource ${TENANT_ID_1} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is TenantInfo + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_003_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_003_NF + ... Check that the IUT returns an error when requesting a non-existing tenantInfo to a MEC Consumer + ... ETSI GS MEC 048 v3.1.1, clause 7.4.3.1 and 6.2.2 + [Tags] PIC_SERVICES + Retrieve specific tenant info resource ${NOT_EXISTING_TENANT_ID} + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC048_MEO_CSE_004_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_004_OK + ... Check that the IUT updates an existing tenantInfo when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.4.3.5 and 6.2.2 + [Tags] PIC_SERVICES + [Setup] Register tenant Info TenantInfo + Update tenant Info ${TENANT_ID_1} TenantInfoUpdate + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is TenantInfo + ${CUSTOMER_ID_VALUE} Get value entry from JSON file TenantInfoUpdate customerId + ${TENANT_NAME_VALUE} Get value entry from JSON file TenantInfoUpdate tenantName + ${CUSTOMER_NAME_VALUE} Get value entry from JSON file TenantInfoUpdate customerName + + Should Be Equal As Strings ${response['body']['customerId']} ${CUSTOMER_ID_VALUE} + Should Be Equal As Strings ${response['body']['tenantName']} ${TENANT_NAME_VALUE} + Should Be Equal As Strings ${response['body']['customerName']} ${CUSTOMER_NAME_VALUE} + + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_004_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_004_NF + ... Check that the IUT returns an error on updating a not existing tenantInfo requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.4.3.5 and 6.2.2 + [Tags] PIC_SERVICES + Update tenant Info ${NOT_EXISTING_TENANT_ID} TenantInfoUpdate + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC048_MEO_CSE_004_BR + [Documentation] TP_MEC_MEC048_MEO_CSE_004_BR + ... Check that the IUT returns an error on updating with invalid values tenantInfo requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.4.3.2 and 6.2.2 + [Setup] Register tenant Info TenantInfo + Update tenant Info ${TENANT_ID_1} TenantInfoBR + Check HTTP Response Status Code Is 400 + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_005_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_005_OK + ... Check that the IUT removes a tenantInfo when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.4.3.5 + [Tags] PIC_SERVICES + [Setup] Register tenant Info TenantInfo + Remove specific tenant info resource ${TENANT_ID_1} + Check HTTP Response Status Code Is 204 + +TC_MEC_MEC048_MEO_CSE_005_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_005_NF + ... Check that the IUT returns an error on deleting a not existing tenantInfo when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.4.3.5 + [Tags] PIC_SERVICES + Remove specific tenant info resource ${NOT_EXISTING_TENANT_ID} + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC048_MEO_CSE_006_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_006_OK + ... Check that the IUT returns a resourceQuotaInfo for a specific tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.5.3.1, clause 6.2.3 + [Tags] PIC_SERVICES + [Setup] Register tenant Info TenantInfo + Register resource quota Info ${TENANT_ID_1} ResourceQuotaInfo + Retrieve specific resource quota info resource ${TENANT_ID_1} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ResourceQuotaInfo + Remove specific resource quota info resource ${TENANT_ID_1} + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_006_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_006_NF + ... Check that the IUT returns an error on retrieving resourceQuotaInfo for a not existing tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.5.3.1, clause 6.2.3 + [Tags] PIC_SERVICES + Retrieve specific resource quota info resource ${NOT_EXISTING_TENANT_ID} + Check HTTP Response Status Code Is 404 + +# TO DO +TC_MEC_MEC048_MEO_CSE_007_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_007_OK + ... Check that the IUT updates the resourceQuotaInfo for an existing tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.5.3.2, clause 6.2.3 + [Tags] PIC_SERVICES + [Setup] Register tenant Info TenantInfo + Register resource quota Info ${TENANT_ID_1} ResourceQuotaInfo + Update resource quota Info ${TENANT_ID_1} ResourceQuotaInfoUpdate + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is ResourceQuotaInfo + + ${CPU_QUOTA_VALUE} Get value entry from JSON file ResourceQuotaInfoUpdate cpuQuota + ${MEMORY_QUOTA_VALUE} Get value entry from JSON file ResourceQuotaInfoUpdate memoryQuota + ${DISK_QUOTA_VALUE} Get value entry from JSON file ResourceQuotaInfoUpdate diskQuota + + Should Be Equal As Strings ${response['body']['cpuQuota']} ${CPU_QUOTA_VALUE} + Should Be Equal As Strings ${response['body']['memoryQuota']} ${MEMORY_QUOTA_VALUE} + Should Be Equal As Strings ${response['body']['diskQuota']} ${DISK_QUOTA_VALUE} + + Remove specific resource quota info resource ${TENANT_ID_1} + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +# TO DO +TC_MEC_MEC048_MEO_CSE_007_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_007_NF + ... Check that the IUT returns an error on updating the resourceQuotaInfo for a not existing tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.5.3.2, clause 6.2.3 + [Tags] PIC_SERVICES + Update resource quota Info ${NOT_EXISTING_TENANT_ID} ResourceQuotaInfoUpdate + Check HTTP Response Status Code Is 404 +TC_MEC_MEC048_MEO_CSE_008_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_008_OK + ... Check that the IUT creates the resourceQuotaInfo for an existing tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.5.3.4, clause 6.2.3 + [Tags] PIC_SERVICES + [Setup] Register tenant Info TenantInfo + Register resource quota Info ${TENANT_ID_1} ResourceQuotaInfo + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is ResourceQuotaInfo + Remove specific resource quota info resource ${TENANT_ID_1} + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_008_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_008_NF + ... Check that the IUT returns an error on creating the resourceQuotaInfo for a not existing tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.5.3.4, clause 6.2.3 + [Tags] PIC_SERVICES + Register resource quota Info ${NOT_EXISTING_TENANT_ID} ResourceQuotaInfo + Check HTTP Response Status Code Is 404 + +# MISATKE IN URL (TEST PURPOSE) ,TO DO +TC_MEC_MEC048_MEO_CSE_009_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_009_OK + ... Check that the IUT returns the list of per site resource quota for a specific tenant when requested to a CSE - No filter + ... ETSI GS MEC 048 v3.1.1, clause 7.6.3.1, clause 6.2.4 + [Tags] PIC_SERVICES + [Setup] Register tenant Info TenantInfo + Register mutiple site resource quota Info and get site Ids ${TENANT_ID_1} SiteResourceQuotaInfo SiteResourceQuotaInfo2 SiteResourceQuotaInfo3 + Retrieve all site resource quota info resource ${TENANT_ID_1} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SiteResourceQuotaInfoList + Remove mutiple site resource quota Info ${TENANT_ID_1} ${SITE_ID_1} ${SITE_ID_2} ${SITE_ID_3} + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_009_OK_01 + [Documentation] TP_MEC_MEC048_MEO_CSE_009_OK_01 + ... Check that the IUT returns the list of per site resource quota for a specific tenant when requested to a CSE - siteId filter + ... ETSI GS MEC 048 v3.1.1, clause 7.6.3.1, clause 6.2.4 + [Tags] PIC_SERVICES + [Setup] Register tenant Info TenantInfo + Register mutiple site resource quota Info and get site Ids ${TENANT_ID_1} SiteResourceQuotaInfo SiteResourceQuotaInfo2 SKIP + Retrieve all site resource quota info resource with query parameters ${TENANT_ID_1} siteId=${SITE_ID_1} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SiteResourceQuotaInfoList + FOR ${element} IN @{response['body']} + Should Be Equal As Strings ${element}[siteId] ${SITE_ID_1} + END + Remove mutiple site resource quota Info ${TENANT_ID_1} ${SITE_ID_1} ${SITE_ID_2} SKIP + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_009_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_009_NF + ... Check that the IUT returns an error on requesting site resource quota info on a not existing tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.6.3.1, clause 6.2.4 + [Tags] PIC_SERVICES + Retrieve all site resource quota info resource ${NOT_EXISTING_TENANT_ID} + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC048_MEO_CSE_010_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_010_OK + ... Check that the IUT creates a site resource quota info for an existing tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.6.3.4, clause 6.2.4 + [Tags] PIC_SERVICES + [Setup] Register tenant Info TenantInfo + Register site resource quota Info ${TENANT_ID_1} SiteResourceQuotaInfo + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is SiteResourceQuotaInfo + Remove specific site resource quota info resource ${TENANT_ID_1} ${response}[body][siteId] + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_010_BR + [Documentation] TP_MEC_MEC048_MEO_CSE_010_BR + ... Check that the IUT returns an error on creating a site resource quota with wrong parameters + ... ETSI GS MEC 048 v3.1.1, clause 7.6.3.4, clause 6.2.4 + [Tags] PIC_SERVICES + [Setup] Register tenant Info TenantInfo + Register site resource quota Info ${TENANT_ID_1} SiteResourceQuotaInfoBR + Check HTTP Response Status Code Is 400 + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_011_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_011_OK + ... Check that the IUT returns the site resource quota for a specific tenant and site identifier when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.7.3.1, clause 6.2.4 + [Tags] PIC_SERVICES + [Setup] Register multiple site resource quotas for tenant + Retrieve specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_1} + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SiteResourceQuotaInfo + Should Be Equal As Strings ${response['body']['siteId']} ${SITE_ID_1} + Should Be Equal As Integers ${response['body']['cpuQuota']} ${CPU_QUOTA_1} + Should Be Equal As Integers ${response['body']['memoryQuota']} ${MEMORY_QUOTA_1} + Should Be Equal As Integers ${response['body']['diskQuota']} ${DISK_QUOTA_1} + [Teardown] Remove tenant and site resources + +TC_MEC_MEC048_MEO_CSE_011_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_011_NF + ... Check that the IUT returns an error on requesting the site resource quota for a specific tenant and a not existing site identifier when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.7.3.1, clause 6.2.4 + [Tags] PIC_SERVICES + [Setup] Register tenant Info TenantInfo + Retrieve specific site resource quota info resource ${TENANT_ID_1} ${NOT_EXISTING_TENANT_ID} + Check HTTP Response Status Code Is 404 + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_012_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_012_OK + ... Check that the IUT updates a site resource quota info for an existing tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.7.3.2, clause 6.2.4 + [Tags] PIC_SERVICES + [Setup] Register site resource quota for tenant + # Update the site resource quota with new values + Update site resource quota Info ${TENANT_ID_1} ${SITE_ID_1} SiteResourceQuotaInfoUpdate + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SiteResourceQuotaInfo + + # Verify the updated values match what we sent + ${CPU_QUOTA_VALUE} Get value entry from JSON file SiteResourceQuotaInfoUpdate cpuQuota + ${MEMORY_QUOTA_VALUE} Get value entry from JSON file SiteResourceQuotaInfoUpdate memoryQuota + ${DISK_QUOTA_VALUE} Get value entry from JSON file SiteResourceQuotaInfoUpdate diskQuota + + Should Be Equal As Strings ${response['body']['siteId']} ${SITE_ID_1} + Should Be Equal As Integers ${response['body']['cpuQuota']} ${CPU_QUOTA_VALUE} + Should Be Equal As Integers ${response['body']['memoryQuota']} ${MEMORY_QUOTA_VALUE} + Should Be Equal As Integers ${response['body']['diskQuota']} ${DISK_QUOTA_VALUE} + + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_012_BR + [Documentation] TP_MEC_MEC048_MEO_CSE_012_BR + ... Check that the IUT returns an error updating a site resource quota info for an existing tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.7.3.2, clause 6.2.4 + [Tags] PIC_SERVICES + [Setup] Register site resource quota for tenant + # Attempt to update the site resource quota with invalid data + Update site resource quota Info ${TENANT_ID_1} ${SITE_ID_1} SiteResourceQuotaInfoBR + Check HTTP Response Status Code Is 400 + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_012_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_012_NF + ... Check that the IUT returns an error updating a site resource quota info for a not existing tenant when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.7.3.2, clause 6.2.4 + [Tags] PIC_SERVICES + # No setup needed as we're testing with a non-existing tenant + Update site resource quota Info ${NOT_EXISTING_TENANT_ID} ${NOT_EXISTING_SITE_ID} SiteResourceQuotaInfoUpdate + Check HTTP Response Status Code Is 404 + # No teardown needed as no resources were created + +TC_MEC_MEC048_MEO_CSE_013_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_013_OK + ... Check that the IUT returns the list of subscriptions when requested to a CSE - no filter + ... ETSI GS MEC 048 v3.1.1, clause 7.8.3.1, clause 6.3.4 + [Tags] PIC_SERVICES + [Setup] Create test subscriptions + Retrieve all subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + # Verify _links.self is present and correct + Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${apiRoot}/${apiName}/${apiVersion}/subscriptions + # Verify subscription items exist + ${subscriptions}= Get From Dictionary ${response['body']} subscription + ${subscription_count}= Get Length ${subscriptions} + Should Be True ${subscription_count} >= 3 + # Verify the subscription types are as expected - at least one of each type + ${resource_type_count}= Count Subscriptions Of Type ${subscriptions} ResourceUsageSubscription + ${site_resource_type_count}= Count Subscriptions Of Type ${subscriptions} SiteResourceUsageSubscription + Should Be True ${resource_type_count} >= 2 Found only ${resource_type_count} ResourceUsageSubscription, expected at least 2 + Should Be True ${site_resource_type_count} >= 1 Found only ${site_resource_type_count} SiteResourceUsageSubscription, expected at least 1 + [Teardown] Remove test subscriptions + +TC_MEC_MEC048_MEO_CSE_013_OK_02 + [Documentation] TP_MEC_MEC048_MEO_CSE_013_OK_02 + ... Check that the IUT returns the list of subscriptions when requested to a CSE - subscription_type filter + ... ETSI GS MEC 048 v3.1.1, clause 7.8.3.1, clause 6.3.4 + [Tags] PIC_SERVICES + [Setup] Create test subscriptions + # Retrieve subscriptions with subscription_type filter + Retrieve subscriptions with filter subscription_type=ResourceUsageSubscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + # Verify _links.self is present and includes the query parameter + Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${apiRoot}/${apiName}/${apiVersion}/subscriptions?subscription_type=ResourceUsageSubscription + # Verify subscription items exist + ${subscriptions}= Get From Dictionary ${response['body']} subscription + ${subscription_count}= Get Length ${subscriptions} + # Should have at least the ResourceUsageSubscription types we created + Should Be True ${subscription_count} >= 2 + # Verify ONLY ResourceUsageSubscription types are returned (no SiteResourceUsageSubscription) + FOR ${subscription} IN @{subscriptions} + Should Be Equal As Strings ${subscription['subscriptionType']} ResourceUsageSubscription + END + [Teardown] Remove test subscriptions + +TC_MEC_MEC048_MEO_CSE_014_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_014_OK + ... Check that the IUT creates a new subscription when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.8.3.4, clause 6.3.2, clause 6.3.3 + [Tags] PIC_SERVICES + + # Setup - Create a tenant to use for the subscription + [Setup] Register tenant Info TenantInfo + Set Suite Variable ${TENANT_ID_1} ${response['body']['tenantId']} + Set Suite Variable ${CUSTOMER_ID_1} ${response['body']['customerId']} + + # Create a new ResourceUsageSubscription + Create ResourceUsageSubscription ResourceUsageSubscription + + # Verify response status code + Check HTTP Response Status Code Is 201 + + # Verify response body schema + Check HTTP Response Body Json Schema Is ResourceUsageSubscription + + # Verify Location header (should contain the URI of the created subscription) + ${location_header}= Get From Dictionary ${response['headers']} Location + Should Not Be Empty ${location_header} + Should Match Regexp ${location_header} ${apiRoot}/${apiName}/${apiVersion}/subscriptions/\\w+ + + # Store subscription ID for cleanup + ${subscription_uri}= Set Variable ${response['body']['_links']['self']['href']} + Set Suite Variable ${SUBSCRIPTION_ID} ${subscription_uri} + + # Verify response body content + Should Be Equal As Strings ${response['body']['subscriptionType']} ResourceUsageSubscription + Should Be Equal As Strings ${response['body']['customerId']} ${CUSTOMER_ID_1} + Should Be Equal As Strings ${response['body']['tenantId']} ${TENANT_ID_1} + Should Be Equal As Strings ${response['body']['callbackReference']} some/uri + + # Verify notification trigger details + Should Be Equal As Integers ${response['body']['notificationTrigger']['triggerType']} 10 + Should Be Equal As Integers ${response['body']['notificationTrigger']['threshold']} 4 + # In the schema, greaterOrLess is a boolean, but in the specification it's 0/1 + # This could be handled either way depending on your implementation + Should Be Equal ${response['body']['notificationTrigger']['greaterOrLess']} ${FALSE} + + # Verify self-link in response + Should Not Be Empty ${response['body']['_links']['self']['href']} + + # Teardown - clean up the created resources + [Teardown] Run Keywords + ... Delete Created Subscription AND + ... Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_014_OK_02 + [Documentation] TP_MEC_MEC048_MEO_CSE_014_OK_02 + ... Check that the IUT creates a new subscription when requested to a CSE - SiteResourceUsageSubscription + ... ETSI GS MEC 048 v3.1.1, clause 7.8.3.4, clause 6.3.2, clause 6.3.3 + [Tags] PIC_SERVICES + + # Setup - Create a tenant and site resources to use for the subscription + [Setup] Register site resource quota for tenant + + # Create a new SiteResourceUsageSubscription + Register site Resource subscription SiteResourceUsageSubscription1 + + # Verify response status code + Check HTTP Response Status Code Is 201 + + # Verify response body schema + Check HTTP Response Body Json Schema Is SiteResourceUsageSubscription + + # Verify Location header (should contain the URI of the created subscription) + ${location_header}= Get From Dictionary ${response['headers']} Location + Should Not Be Empty ${location_header} + Should Match Regexp ${location_header} ${apiRoot}/${apiName}/${apiVersion}/subscriptions/\\w+ + + # Store subscription ID for cleanup + ${subscription_uri}= Set Variable ${response['body']['_links']['self']['href']} + Set Suite Variable ${SUBSCRIPTION_ID} ${subscription_uri} + + # Verify response body content + Should Be Equal As Strings ${response['body']['subscriptionType']} SiteResourceUsageSubscription + Should Be Equal As Strings ${response['body']['customerId']} ${CUSTOMER_ID_1} + Should Be Equal As Strings ${response['body']['tenantId']} ${TENANT_ID_1} + Should Be Equal As Strings ${response['body']['callbackReference']} some/uri + + # Verify siteList contains our test site + ${siteList}= Get From Dictionary ${response['body']} siteList + List Should Contain Value ${siteList} ${SITE_ID_1} + + # Verify notification trigger details + Should Be Equal As Integers ${response['body']['notificationTrigger']['triggerType']} 10 + Should Be Equal As Integers ${response['body']['notificationTrigger']['threshold']} 4 + Should Be Equal ${response['body']['notificationTrigger']['greaterOrLess']} ${FALSE} + + # Verify self-link in response + Should Not Be Empty ${response['body']['_links']['self']['href']} + + # Teardown - clean up the created resources + [Teardown] Run Keywords + ... Delete Created Subscription AND + ... Remove specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_1} AND + ... Remove specific tenant info resource ${TENANT_ID_1} +TC_MEC_MEC048_MEO_CSE_014_BR + [Documentation] TP_MEC_MEC048_MEO_CSE_014_BR + ... Check that the IUT returns an error on creating a new subscription when requested to a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.8.3.4, clause 6.3.2, clause 6.3.3 + [Tags] PIC_SERVICES + + # Setup - Create a tenant to use for the subscription + [Setup] Register tenant Info TenantInfo + Set Suite Variable ${TENANT_ID_1} ${response['body']['tenantId']} + Set Suite Variable ${CUSTOMER_ID_1} ${response['body']['customerId']} + + # Attempt to create a subscription with missing required parameters + Register subscription ResourceUsageSubscriptionBR + + # Verify that a 400 Bad Request error is returned + Check HTTP Response Status Code Is 400 + + # Teardown - clean up the created tenant + [Teardown] Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_015_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_015_OK + ... Check that the IUT returns a subscription when requested by a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.9.3.1, clause 6.3.2, clause 6.3.3 + [Tags] PIC_SERVICES + + # Setup - Create a tenant and site resources + [Setup] Run Keywords + ... Register site resource quota for tenant + + Register site Resource subscription SiteResourceUsageSubscription + + # Verify subscription creation + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is SiteResourceUsageSubscription + + # Save the subscription ID for retrieval and cleanup + ${subscription_uri}= Set Variable ${response['body']['_links']['self']['href']} + ${subscription_id}= Evaluate "${subscription_uri}".split("/")[-1] + Run Keyword If '${subscription_id}' == '' Fail Failed to extract subscription ID from ${subscription_uri} + Set Suite Variable ${SUBSCRIPTION_ID} ${subscription_id} + + # Retrieve the specific subscription + Retrieve specific subscription ${subscription_id} + + # Verify response status code + Check HTTP Response Status Code Is 200 + + # Verify response body schema + Check HTTP Response Body Json Schema Is SiteResourceUsageSubscription + + # Verify response body content + Should Be Equal As Strings ${response['body']['subscriptionType']} SiteResourceUsageSubscription + Should Be Equal As Strings ${response['body']['customerId']} ${CUSTOMER_ID_1} + Should Be Equal As Strings ${response['body']['tenantId']} ${TENANT_ID_1} + Should Be Equal As Strings ${response['body']['callbackReference']} some/uri + + # Verify siteList contains our test site + ${siteList}= Get From Dictionary ${response['body']} siteList + List Should Contain Value ${siteList} ${SITE_ID_1} + + # Verify notification trigger details + Should Be Equal As Integers ${response['body']['notificationTrigger']['triggerType']} 10 + Should Be Equal As Integers ${response['body']['notificationTrigger']['threshold']} 4 + Should Be Equal ${response['body']['notificationTrigger']['greaterOrLess']} ${FALSE} + + # Verify self-link in response + Should Not Be Empty ${response['body']['_links']['self']['href']} + Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${subscription_uri} + + # Teardown - clean up the created resources + [Teardown] Run Keywords + ... Run Keyword If '${SUBSCRIPTION_ID}' != '' and '${SUBSCRIPTION_ID}' != 'None' Delete Created Subscription + ... AND Remove specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_1} + ... AND Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_015_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_015_NF + ... Check that the IUT returns an error on requesting a not existing subscription when requested by a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.9.3.1, clause 6.3.2, clause 6.3.3 + [Tags] PIC_SERVICES + + # Attempt to retrieve a non-existent subscription + Retrieve specific subscription ${NOT_EXISTING_SUBSCRIPTION_ID} + + # Verify response status code is 404 Not Found + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC048_MEO_CSE_016_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_016_OK + ... Check that the IUT updates an existing subscription when requested by a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.9.3.2, clause 6.3.2, clause 6.3.3 + [Tags] PIC_SERVICES + [Setup] Register site resource quota for tenant + Register site Resource subscription SiteResourceUsageSubscription + ${subscription_uri}= Set Variable ${response['body']['_links']['self']['href']} + ${subscription_id}= Evaluate "${subscription_uri}".split("/")[-1] + Run Keyword If '${subscription_id}' == '' Fail Failed to extract subscription ID from ${subscription_uri} + Set Suite Variable ${SUBSCRIPTION_ID} ${subscription_id} + Set Suite Variable ${OLD_CUSTOMER_ID} ${response['body']['customerId']} + Register tenant Info TenantInfo2 ${True} TENANT_ID_2 + Set Suite Variable ${NEW_CUSTOMER_ID} ${response['body']['customerId']} + Set Suite Variable ${TENANT_ID_2} ${response['body']['tenantId']} + Update subscription ${subscription_id} SiteResourceUsageSubscriptionUpdate + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SiteResourceUsageSubscription + Should Be Equal As Strings ${response['body']['subscriptionType']} SiteResourceUsageSubscription + Should Be Equal As Strings ${response['body']['customerId']} ${NEW_CUSTOMER_ID} + Should Not Be Equal As Strings ${response['body']['customerId']} ${OLD_CUSTOMER_ID} + Should Be Equal As Strings ${response['body']['tenantId']} ${TENANT_ID_1} + Should Be Equal As Strings ${response['body']['callbackReference']} some/uri/updated + ${siteList}= Get From Dictionary ${response['body']} siteList + List Should Contain Value ${siteList} ${SITE_ID_1} + Should Be Equal As Integers ${response['body']['notificationTrigger']['triggerType']} 10 + Should Be Equal As Integers ${response['body']['notificationTrigger']['threshold']} 4 + Should Be Equal ${response['body']['notificationTrigger']['greaterOrLess']} ${FALSE} + Should Not Be Empty ${response['body']['_links']['self']['href']} + Should Be Equal As Strings ${response['body']['_links']['self']['href']} ${subscription_uri} + [Teardown] Run Keywords + ... Delete Created Subscription AND + ... Run Keyword If '${SITE_ID_1}' != '' and '${SITE_ID_1}' != 'None' Remove specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_1} AND + ... Remove specific tenant info resource ${TENANT_ID_1} AND + ... Remove specific tenant info resource ${TENANT_ID_2} + +TC_MEC_MEC048_MEO_CSE_016_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_016_NF + ... Check that the IUT returns an error updating an not existing subscription when requested by a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.9.3.2, clause 6.3.2, clause 6.3.3 + [Tags] PIC_SERVICES + + # Setup - Create a tenant and site resources for the update request + [Setup] Register site resource quota for tenant + + # Create a JSON template for another tenant to get a customer ID + Register tenant Info TenantInfo2 + Set Suite Variable ${NEW_CUSTOMER_ID} ${response['body']['customerId']} + Set Suite Variable ${TENANT_ID_2} ${response['body']['tenantId']} + + # Attempt to update a non-existent subscription + Update subscription ${NOT_EXISTING_SUBSCRIPTION_ID} SiteResourceUsageSubscriptionUpdate + + # Verify response status code is 404 Not Found + Check HTTP Response Status Code Is 404 + + # Teardown - clean up the created resources + [Teardown] Run Keywords + ... Run Keyword If '${SITE_ID_1}' != '' and '${SITE_ID_1}' != 'None' Remove specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_1} AND + ... Remove specific tenant info resource ${TENANT_ID_1} AND + ... Remove specific tenant info resource ${TENANT_ID_2} + +TC_MEC_MEC048_MEO_CSE_016_BR + [Documentation] TP_MEC_MEC048_MEO_CSE_016_BR + ... Check that the IUT returns an error updating an existing subscription with wrong parameters when requested by a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.9.3.2, clause 6.3.2, clause 6.3.3 + [Tags] PIC_SERVICES + + # Setup - Create a tenant, site resources, and a valid subscription + [Setup] Register site resource quota for tenant + + # Create a SiteResourceUsageSubscription to be updated later + Register subscription SiteResourceUsageSubscription + + # Save the subscription ID for update and cleanup + ${subscription_uri}= Set Variable ${response['body']['_links']['self']['href']} + ${subscription_id}= Fetch From Right ${subscription_uri} /subscriptions/ + Set Suite Variable ${SUBSCRIPTION_ID} ${subscription_id} + + # Create another tenant to get a new customer ID for the update + Register tenant Info TenantInfo2 ${True} TENANT_ID_2 + Set Suite Variable ${NEW_CUSTOMER_ID} ${response['body']['customerId']} + Set Suite Variable ${TENANT_ID_2} ${response['body']['tenantId']} + + # Attempt to update the subscription with invalid parameters (missing both callbackReference and websockNotifConfig) + Update subscription ${subscription_id} SiteResourceUsageSubscriptionBR + + # Verify response status code is 400 Bad Request + Check HTTP Response Status Code Is 400 + + # Teardown - clean up the created resources + [Teardown] Run Keywords + ... Run Keyword If '${SUBSCRIPTION_ID}' != '' and '${SUBSCRIPTION_ID}' != 'None' Delete Created Subscription AND + ... Run Keyword If '${SITE_ID_1}' != '' and '${SITE_ID_1}' != 'None' Remove specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_1} AND + ... Run Keyword If '${TENANT_ID_1}' != '' and '${TENANT_ID_1}' != 'None' Remove specific tenant info resource ${TENANT_ID_1} AND + ... Run Keyword If '${TENANT_ID_2}' != '' and '${TENANT_ID_2}' != 'None' Remove specific tenant info resource ${TENANT_ID_2} + +TC_MEC_MEC048_MEO_CSE_017_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_017_OK + ... Check that the IUT deletes an existing subscription when requested by a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.9.3.2 + [Tags] PIC_SERVICES + + # Setup - Create a tenant, site resources, and subscription + [Setup] Register site resource quota for tenant + + # Create a SiteResourceUsageSubscription to be deleted + Register subscription SiteResourceUsageSubscription + + # Save the subscription ID for deletion + ${subscription_uri}= Set Variable ${response['body']['_links']['self']['href']} + ${subscription_id}= Fetch From Right ${subscription_uri} /subscriptions/ + + # Delete the subscription + Delete subscription ${subscription_id} + + # Verify response status code is 204 No Content + Check HTTP Response Status Code Is 204 + + # Verify the subscription no longer exists (optional) + Retrieve specific subscription ${subscription_id} + Check HTTP Response Status Code Is 404 + + # Teardown - clean up the created resources (only tenant and site as subscription is deleted) + [Teardown] Run Keywords + ... Run Keyword If '${SITE_ID_1}' != '' and '${SITE_ID_1}' != 'None' Remove specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_1} AND + ... Run Keyword If '${TENANT_ID_1}' != '' and '${TENANT_ID_1}' != 'None' Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_017_NF + [Documentation] TP_MEC_MEC048_MEO_CSE_017_NF + ... Check that the IUT returns an error on a deletion of a not existing subscription when requested by a CSE + ... ETSI GS MEC 048 v3.1.1, clause 7.9.3.2 + [Tags] PIC_SERVICES + + # Attempt to delete a non-existent subscription + Delete subscription ${NOT_EXISTING_SUBSCRIPTION_ID} + + # Verify response status code is 404 Not Found + Check HTTP Response Status Code Is 404 + +TC_MEC_MEC048_MEO_CSE_018_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_018_OK + ... Check that the CSE sends a site resource usage notification if the CSE has an associated subscription and the event is generated + ... ETSI GS MEC 048 v3.1.1, clause 7.8.3.4, clause 6.4.3 + [Tags] PIC_SERVICES + + # Setup - Create a tenant and site resources + [Setup] Register site resource quota for tenant + + # Create a SiteResourceUsageSubscription with callback to our notification server + ${subscription_json}= Get File jsons/SiteResourceUsageSubscription.json + ${callback_url}= Set Variable http://${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT}${NOTIFICATION_SERVER_URI} + ${subscription_json}= Replace String ${subscription_json} "some/uri" "${callback_url}" + ${subscription_json}= Replace String ${subscription_json} "placeholder-tenant" "${TENANT_ID_1}" + ${subscription_json}= Replace String ${subscription_json} "placeholder-customer" "${CUSTOMER_ID_1}" + ${subscription_json}= Replace String ${subscription_json} ["placeholder-site"] ["${SITE_ID_1}"] + + # Register the subscription with our callback URL + Post Raw Subscription ${subscription_json} + Check HTTP Response Status Code Is 201 + + # Save the subscription ID for cleanup + ${subscription_uri}= Set Variable ${response['body']['_links']['self']['href']} + ${subscription_id}= Fetch From Right ${subscription_uri} /subscriptions/ + Set Suite Variable ${SUBSCRIPTION_ID} ${subscription_id} + + # Generate load to trigger the notification + Log Generating CPU load to trigger notification + ${result}= Generate CPU Load 60 5 + Log ${result} + + # Start the notification server to wait for and capture the notification + ${notification}= Spawn Notification Server + # Verify notification exists + Should Not Be Empty ${notification} + + # Verify notification content + Should Be Equal As Strings ${notification['notificationType']} SiteResourceUsageNotification + Should Be Equal As Strings ${notification['customerId']} ${CUSTOMER_ID_1} + Should Be Equal As Strings ${notification['tenantId']} ${TENANT_ID_1} + + # Verify resource usage information + ${site_info}= Get From List ${notification['resourceUseInfo']} 0 + Should Be Equal As Strings ${site_info['siteId']} ${SITE_ID_1} + Should Be Equal As Integers ${site_info['cpuUsed']} 5 + + # Teardown - clean up resources + [Teardown] Run Keywords + ... Run Keyword If '${SUBSCRIPTION_ID}' != '' and '${SUBSCRIPTION_ID}' != 'None' Delete Created Subscription AND + ... Run Keyword If '${SITE_ID_1}' != '' and '${SITE_ID_1}' != 'None' Remove specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_1} AND + ... Run Keyword If '${TENANT_ID_1}' != '' and '${TENANT_ID_1}' != 'None' Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_019_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_019_OK + ... Check that the CSE sends a resource usage notification if the CSE has an associated subscription and the event is generated + ... ETSI GS MEC 048 v3.1.1, clause 7.8.3.4, clause 6.4.2 + [Tags] PIC_SERVICES + + # Setup - Create a tenant for the subscription + [Setup] Register tenant Info TenantInfo + + # Create a ResourceUsageSubscription with callback to notification server + ${subscription_json}= Get File jsons/ResourceUsageSubscription.json + ${callback_url}= Set Variable http://${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT}${NOTIFICATION_SERVER_URI} + ${subscription_json}= Replace String ${subscription_json} "some/uri" "${callback_url}" + ${subscription_json}= Replace String ${subscription_json} "tenant-123" "${TENANT_ID_1}" + ${subscription_json}= Replace String ${subscription_json} "customer-123" "${CUSTOMER_ID_1}" + + # Register the subscription + Post Raw Subscription ${subscription_json} + Check HTTP Response Status Code Is 201 + + # Save the subscription ID for cleanup + ${subscription_uri}= Set Variable ${response['body']['_links']['self']['href']} + ${subscription_id}= Fetch From Right ${subscription_uri} /subscriptions/ + Set Suite Variable ${SUBSCRIPTION_ID} ${subscription_id} + + # Generate CPU load to trigger the notification + Log Generating CPU load to trigger notification (cpuUsed: 5) + ${result}= Generate CPU Load 60 5 + Log ${result} + + # Start the notification server to capture the notification + ${notification}= Spawn Notification Server + + # Verify notification exists + Should Not Be Empty ${notification} + + # Verify notification content + Should Be Equal As Strings ${notification['notificationType']} ResourceUsageNotification + Should Be Equal As Strings ${notification['customerId']} ${CUSTOMER_ID_1} + Should Be Equal As Strings ${notification['tenantId']} ${TENANT_ID_1} + + # Verify resource usage information + Should Be Equal As Integers ${notification['resourceUseInfo']['cpuUsed']} 5 + + # Teardown - clean up resources + [Teardown] Run Keywords + ... Run Keyword If '${SUBSCRIPTION_ID}' != '' and '${SUBSCRIPTION_ID}' != 'None' Delete Created Subscription AND + ... Run Keyword If '${TENANT_ID_1}' != '' and '${TENANT_ID_1}' != 'None' Remove specific tenant info resource ${TENANT_ID_1} + +TC_MEC_MEC048_MEO_CSE_020_OK + [Documentation] TP_MEC_MEC048_MEO_CSE_020_OK + ... Check that the CSE sends a notification on subscription expiration if the CSE has an associated subscription and the event is generated + ... ETSI GS MEC 048 v3.1.1, clause 7.8.3.4, clause 6.4.4 + [Tags] PIC_SERVICES + + # Setup - Create a tenant for the subscription + [Setup] Register tenant Info TenantInfo + + # Get the current time and add a short expiry deadline (10 seconds in the future) + ${current_time}= Get Current Date + ${expiry_time}= Add Time To Date ${current_time} 10 seconds + ${expiry_time_iso}= Convert Date ${expiry_time} result_format=%Y-%m-%dT%H:%M:%SZ + Set Suite Variable ${EXPIRY_DEADLINE} ${expiry_time_iso} + + # Create a ResourceUsageSubscription with expiry + ${subscription_json}= Get File jsons/ResourceUsageSubscriptionWithExpiry.json + ${callback_url}= Set Variable http://${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT}${NOTIFICATION_SERVER_URI} + ${subscription_json}= Replace String ${subscription_json} "some/uri" "${callback_url}" + ${subscription_json}= Replace String ${subscription_json} "tenant-123" "${TENANT_ID_1}" + ${subscription_json}= Replace String ${subscription_json} "customer-123" "${CUSTOMER_ID_1}" + ${subscription_json}= Replace String ${subscription_json} "2099-12-31T23:59:59Z" "${EXPIRY_DEADLINE}" + + # Register the subscription + Post Raw Subscription ${subscription_json} + Check HTTP Response Status Code Is 201 + + # Save the subscription ID and HREF + ${subscription_uri}= Set Variable ${response['body']['_links']['self']['href']} + ${subscription_id}= Fetch From Right ${subscription_uri} /subscriptions/ + Set Suite Variable ${SUBSCRIPTION_ID} ${subscription_id} + Set Suite Variable ${SUBSCRIPTION_HREF} ${subscription_uri} + + # Trigger subscription expiry + Log Waiting for subscription to expire + Sleep 12s # Wait past the 10-second expiry deadline + + # Start the notification server to capture the expiry notification + ${notification}= Spawn Notification Server + + # Verify notification exists + Should Not Be Empty ${notification} + + # Verify notification content + Should Be Equal As Strings ${notification['notificationType']} ExpiryNotification + Should Be Equal As Strings ${notification['_links']['subscription']['href']} ${SUBSCRIPTION_HREF} + Should Be Equal As Strings ${notification['expiryDeadline']} ${EXPIRY_DEADLINE} + + # Verify the subscription no longer exists + Retrieve specific subscription ${SUBSCRIPTION_ID} + Check HTTP Response Status Code Is 404 + + # Teardown - clean up tenant (subscription auto-removed after expiry) + [Teardown] Run Keyword If '${TENANT_ID_1}' != '' and '${TENANT_ID_1}' != 'None' Remove specific tenant info resource ${TENANT_ID_1} + +*** Keywords *** + +Spawn Expiry Notification Server + Log Starting notification server on ${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT} for expiry notification + ${notification}= Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} ResourceUsageSubscription + [Return] ${notification} + +Spawn Resource Notification Server + Log Starting notification server on ${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT} + ${notification}= Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} ResourceUsageSubscription + [Return] ${notification} + +Spawn Notification Server + Log Starting notification server on ${NOTIFICATION_SERVER_IP}:${NOTIFICATION_SERVER_PORT} + ${notification}= Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} SiteResourceUsageSubscription + [Return] ${notification} + +Post Raw Subscription + [Arguments] ${subscription_json} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${subscription_json} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Update subscription + [Arguments] ${subscription_id} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Log Variables - TENANT_ID_1: ${TENANT_ID_1}, TENANT_ID_2: ${TENANT_ID_2}, NEW_CUSTOMER_ID: ${NEW_CUSTOMER_ID}, SITE_ID_1: ${SITE_ID_1} + ${body}= Replace String ${body} "placeholder-tenant" "${TENANT_ID_1}" + ${body}= Replace String ${body} "customer-new" "${NEW_CUSTOMER_ID}" + ${body}= Replace String ${body} "site-placeholder" "${SITE_ID_1}" + Log Request body after replacements: ${body} + PUT ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscription_id} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve specific subscription + [Arguments] ${subscription_id} + Log Getting specific subscription: ${subscription_id} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscription_id} + ${output}= Output response + Log GET Response: ${output} + Set Suite Variable ${response} ${output} + +Create ResourceUsageSubscription + [Arguments] ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + # Replace placeholder values in the JSON with actual test values + ${body}= Replace String ${body} "placeholder" "${TENANT_ID_1}" count=1 + ${body}= Replace String ${body} "placeholder" "${CUSTOMER_ID_1}" count=1 + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Delete Created Subscription + ${sub_id}= Fetch From Right ${SUBSCRIPTION_ID} /subscriptions/ + Delete subscription ${sub_id} +Retrieve subscriptions with filter + [Arguments] ${query_params} + Log Getting subscriptions with filter: ${query_params} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions?${query_params} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Register site Resource subscription + [Arguments] ${content} + Should Be True ${PIC_MEC_PLAT} == 1 msg=PIC_MEC_PLAT must be 1 + Should Be True ${PIC_SERVICES} == 1 msg=PIC_SERVICES must be 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + Log Loading JSON file: ${file} + ${file_exists}= Run Keyword And Return Status File Should Exist ${file} + Run Keyword If not ${file_exists} Fail JSON file not found: ${file} + ${body}= Get File ${file} + Log Request Body Before Replacement: ${body} + # Validate variables + Should Not Be Empty ${TENANT_ID_1} msg=TENANT_ID_1 is not defined + Should Not Be Empty ${CUSTOMER_ID_1} msg=CUSTOMER_ID_1 is not defined + Should Not Be Empty ${SITE_ID_1} msg=SITE_ID_1 is not defined + # Replace placeholders + ${body}= Replace String ${body} "placeholder-tenant" "${TENANT_ID_1}" + ${body}= Replace String ${body} "placeholder-customer" "${CUSTOMER_ID_1}" + ${body}= Replace String ${body} "placeholder-site" "${SITE_ID_1}" + Log Request Body After Replacement: ${body} + # Validate JSON using Collections + # ${json_dict}= Evaluate json.loads($body) modules=json + # Should Be True isinstance($json_dict, dict) msg=JSON is not a valid dictionary: ${body} + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Log POST Response: ${output} + Set Suite Variable ${response} ${output} + Run Keyword If ${response['status']} != 201 Fail Subscription creation failed: ${response['body']['error']} status=${response['status']} +Register subscription + [Arguments] ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + Log Variables - TENANT_ID_1: ${TENANT_ID_1}, CUSTOMER_ID_1: ${CUSTOMER_ID_1}, SITE_ID_1: ${SITE_ID_1} + ${body}= Replace String ${body} "placeholder-tenant" "${TENANT_ID_1}" + ${body}= Replace String ${body} "placeholder-customer" "${CUSTOMER_ID_1}" + ${body}= Replace String ${body} "placeholder-site" "${SITE_ID_1}" + Log Request body after replacements: ${body} + POST ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve all subscriptions + Log Getting all subscriptions + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/subscriptions + ${output}= Output response + Set Suite Variable ${response} ${output} + +Remove test subscriptions + # Extract subscription IDs from the hrefs + ${sub_id_1}= Fetch From Right ${SUBSCRIPTION_ID_1} /subscriptions/ + ${sub_id_2}= Fetch From Right ${SUBSCRIPTION_ID_2} /subscriptions/ + ${sub_id_3}= Fetch From Right ${SUBSCRIPTION_ID_3} /subscriptions/ + + # Delete the created subscriptions + Delete subscription ${sub_id_1} + Delete subscription ${sub_id_2} + Delete subscription ${sub_id_3} + + # Remove the tenant + Remove specific tenant info resource ${TENANT_ID_1} + +Delete subscription + [Arguments] ${subscription_id} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + DELETE ${apiRoot}/${apiName}/${apiVersion}/subscriptions/${subscription_id} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Count Subscriptions Of Type + [Arguments] ${subscriptions} ${subscription_type} + ${count}= Set Variable ${0} + FOR ${subscription} IN @{subscriptions} + ${type}= Get From Dictionary ${subscription} subscriptionType + ${count}= Run Keyword If '${type}' == '${subscription_type}' Evaluate ${count} + 1 ELSE Set Variable ${count} + END + [Return] ${count} + +Create test subscriptions + # First create a tenant for the subscriptions + Register tenant Info TenantInfo + Set Suite Variable ${TENANT_ID_1} ${response['body']['tenantId']} + Set Suite Variable ${CUSTOMER_ID_1} ${response['body']['customerId']} + + # Create ResourceUsageSubscription subscriptions + Register subscription ResourceUsageSubscription1 + Set Suite Variable ${SUBSCRIPTION_ID_1} ${response['body']['_links']['self']['href']} + Register subscription ResourceUsageSubscription2 + Set Suite Variable ${SUBSCRIPTION_ID_2} ${response['body']['_links']['self']['href']} + + # Create SiteResourceUsageSubscription subscription + Register subscription SiteResourceUsageSubscription + Set Suite Variable ${SUBSCRIPTION_ID_3} ${response['body']['_links']['self']['href']} + + +Register site resource quota for tenant + # Create tenant + Register tenant Info TenantInfo + Set Suite Variable ${TENANT_ID_1} ${response['body']['tenantId']} + Set Suite Variable ${CUSTOMER_ID_1} ${response['body']['customerId']} + # Create site resource quota + Register site resource quota Info ${TENANT_ID_1} SiteResourceQuotaInfo + Set Suite Variable ${SITE_ID_1} ${response['body']['siteId']} + +Update site resource quota Info + [Arguments] ${tenantId} ${siteId} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + PUT ${apiRoot}/${apiName}/${apiVersion}/tenants/${tenantId}/resources/quota_in_sites/${siteId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Register multiple site resource quotas for tenant + # Create tenant + Register tenant Info TenantInfo + Set Suite Variable ${TENANT_ID_1} ${response['body']['tenantId']} + # Create three site resource quotas + Register site resource quota Info ${TENANT_ID_1} SiteResourceQuotaInfo + Set Suite Variable ${SITE_ID_1} ${response['body']['siteId']} + ${CPU_QUOTA}= Convert To Integer ${response['body']['cpuQuota']} + ${MEMORY_QUOTA}= Convert To Integer ${response['body']['memoryQuota']} + ${DISK_QUOTA}= Convert To Integer ${response['body']['diskQuota']} + Set Suite Variable ${CPU_QUOTA_1} ${CPU_QUOTA} + Set Suite Variable ${MEMORY_QUOTA_1} ${MEMORY_QUOTA} + Set Suite Variable ${DISK_QUOTA_1} ${DISK_QUOTA} + Register site resource quota Info ${TENANT_ID_1} SiteResourceQuotaInfo2 + Set Suite Variable ${SITE_ID_2} ${response['body']['siteId']} + Register site resource quota Info ${TENANT_ID_1} SiteResourceQuotaInfo3 + Set Suite Variable ${SITE_ID_3} ${response['body']['siteId']} + +Retrieve specific site resource quota info resource + [Arguments] ${tenantId} ${siteId} + Log Getting specific site resource quota for tenant ${tenantId} and site ${siteId} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/tenants/${tenantId}/resources/quota_in_sites/${siteId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Remove tenant and site resources + # Remove site resource quotas + Remove specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_1} + Remove specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_2} + Remove specific site resource quota info resource ${TENANT_ID_1} ${SITE_ID_3} + # Remove tenant + Remove specific tenant info resource ${TENANT_ID_1} + +Retrieve all tenant info resources + Log Getting all Tenant Info + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + Get ${apiRoot}/${apiName}/${apiVersion}/tenants + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve specific tenant info resource + [Arguments] ${TEANNT_ID} + Log Getting Specific Tenant Info Resource + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/tenants/${TEANNT_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve all tenant info resources with query parameters + [Arguments] ${query_params} + Log Getting all Tenant Info with query parameter + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/tenants?${query_params} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Register tenant Info + [Arguments] ${content} ${is_individual_call}=${True} ${tenant_var}=TENANT_ID_1 + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + POST ${apiRoot}/${apiName}/${apiVersion}/tenants ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + Run Keyword If ${is_individual_call} and ${response}[status] != 400 Set Suite Variable \${${tenant_var}} ${response}[body][tenantId] + +Update tenant Info + [Arguments] ${tenantId} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + PUT ${apiRoot}/${apiName}/${apiVersion}/tenants/${tenantId} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + Run Keyword If ${response['status']} != 400 and ${response['status']} != 404 Set Suite Variable ${TENANT_ID_1} ${response['body']['tenantId']} + +Update resource quota Info + [Arguments] ${tenantId} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + PUT ${apiRoot}/${apiName}/${apiVersion}/tenants/${tenantId}/resources/quota_in_system ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Register mutiple tenant Info and get tenant Ids + [Arguments] ${content_01} ${content_02} ${content_03} + Register tenant Info ${content_01} ${False} + Set Suite Variable ${TENANT_ID_1} ${response}[body][tenantId] + Set Suite Variable ${CUSTOMER_ID_1} ${response}[body][customerId] + Set Suite Variable ${CUSTOMER_NAME_1} ${response}[body][customerName] + Register tenant Info ${content_02} ${False} + Set Suite Variable ${TENANT_ID_2} ${response}[body][tenantId] + Set Suite Variable ${CUSTOMER_ID_2} ${response}[body][customerId] + Set Suite Variable ${CUSTOMER_NAME_2} ${response}[body][customerName] + Register tenant Info ${content_03} ${False} + Set Suite Variable ${TENANT_ID_3} ${response}[body][tenantId] + Set Suite Variable ${CUSTOMER_ID_3} ${response}[body][customerId] + Set Suite Variable ${CUSTOMER_NAME_3} ${response}[body][customerName] + +Remove mutiple tenant Info + [Arguments] ${tenant_id_1} ${tenant_id_2} ${tenant_id_3} + Run Keyword If '${tenant_id_1}' != 'SKIP' Remove specific tenant info resource ${tenant_id_1} + Remove specific tenant info resource ${tenant_id_2} + Remove specific tenant info resource ${tenant_id_3} + +Remove specific tenant info resource + [Arguments] ${tenantId} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + DELETE ${apiRoot}/${apiName}/${apiVersion}/tenants/${tenantId} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve specific resource quota info resource + [Arguments] ${TEANNT_ID} + Log Getting Specific Resource Quota Info + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/tenants/${TEANNT_ID}/resources/quota_in_system + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve all resource quota info resource + [Arguments] ${TEANNT_ID} + Log Getting All Resource Quota Info + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/tenants/${TEANNT_ID}/resources/quota_in_system + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve all site resource quota info resource + [Arguments] ${TEANNT_ID} + Log Getting All Site Resource Quota Info + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/tenants/${TEANNT_ID}/resources/quota_in_sites + ${output}= Output response + Set Suite Variable ${response} ${output} + +Retrieve all site resource quota info resource with query parameters + [Arguments] ${TEANNT_ID} ${query_params} + Log Getting All Site Resource Quota Info with query parameters + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"*/*"} + Set Headers {"Authorization":"${TOKEN}"} + GET ${apiRoot}/${apiName}/${apiVersion}/tenants/${TEANNT_ID}/resources/quota_in_sites?${query_params} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Register mutiple site resource quota Info and get site Ids + [Arguments] ${tenantId} ${content_01} ${content_02} ${content_03} + Register site resource quota Info ${tenantId} ${content_01} + Set Suite Variable ${SITE_ID_1} ${response}[body][siteId] + Register site resource quota Info ${tenantId} ${content_02} + Set Suite Variable ${SITE_ID_2} ${response}[body][siteId] + Run Keyword If '${content_03}' != 'SKIP' Register site resource quota Info ${tenantId} ${content_03} + Run Keyword If '${content_03}' != 'SKIP' Set Suite Variable ${SITE_ID_3} ${response}[body][siteId] + +Register resource quota Info + [Arguments] ${tenantId} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + POST ${apiRoot}/${apiName}/${apiVersion}/tenants/${tenantId}/resources/quota_in_system ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Register site resource quota Info + [Arguments] ${tenantId} ${content} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + POST ${apiRoot}/${apiName}/${apiVersion}/tenants/${tenantId}/resources/quota_in_sites ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + +Remove mutiple site resource quota Info + [Arguments] ${tenant_id_1} ${site_id_1} ${site_id_2} ${site_id_3} + Run Keyword If '${tenant_id_1}' != 'SKIP' Remove specific site resource quota info resource ${tenant_id_1} ${site_id_1} + Remove specific site resource quota info resource ${tenant_id_1} ${site_id_2} + Run Keyword If '${site_id_3}' != 'SKIP' Remove specific site resource quota info resource ${tenant_id_1} ${site_id_3} + +Remove specific resource quota info resource + [Arguments] ${tenantId} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + DELETE ${apiRoot}/${apiName}/${apiVersion}/tenants/${tenantId}/resources/quota_in_system + ${output}= Output response + Set Suite Variable ${response} ${output} + +Remove specific site resource quota info resource + [Arguments] ${tenantId} ${siteId} + Should Be True ${PIC_MEC_PLAT} == 1 + Should Be True ${PIC_SERVICES} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + DELETE ${apiRoot}/${apiName}/${apiVersion}/tenants/${tenantId}/resources/quota_in_sites/${siteId} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/MEC048/MEO/CSE/environment/variables.txt b/MEC048/MEO/CSE/environment/variables.txt new file mode 100644 index 0000000000000000000000000000000000000000..1b69a94f6db30eec46a4965af378e4b861dee939 --- /dev/null +++ b/MEC048/MEO/CSE/environment/variables.txt @@ -0,0 +1,26 @@ +*** Variables *** +# Generic variables +${SCHEMA} http +${HOST} 127.0.0.1 +#${HOST} 10.192.2.172 +${PORT} 5000 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} cse +${apiVersion} v1 + + +${REGISTER_ACTION} REGISTER +${REMOVE_ACTION} REMOVE +${NO_ACTION} NO_ACTION +${TENANT_ID_PLACEHOLDER} TENANT_ID_PLACEHOLDER +${NOT_EXISTING_TENANT_ID} NOT_EXISTING_TENANT_ID +${NOT_EXISTING_SITE_ID} NOT_EXISTING_SITE_ID +${NOT_EXISTING_SUBSCRIPTION_ID} NOT_EXISTING_SUBSCRIPTION_ID +# Notification Server variables +${NOTIFICATION_SERVER_IP} 127.0.0.1 +${NOTIFICATION_SERVER_PORT} 8888 +${NOTIFICATION_SERVER_TIMEOUT} 60 +${NOTIFICATION_SERVER_HTTP_METHOD} POST +${NOTIFICATION_SERVER_URI} /callback_url \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/ExpiryNotification.json b/MEC048/MEO/CSE/jsons/ExpiryNotification.json new file mode 100644 index 0000000000000000000000000000000000000000..8599a0e7a3d95aee5cf7d5acb3e2ce5d41209f10 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/ExpiryNotification.json @@ -0,0 +1,9 @@ +{ + "notificationType": "ExpiryNotification", + "_links": { + "subscription": { + "href": "http://example.com/cse/v1/subscriptions/subscription-123" + } + }, + "expiryDeadline": "2099-12-31T23:59:59Z" + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/ResourceQuotaInfo.json b/MEC048/MEO/CSE/jsons/ResourceQuotaInfo.json new file mode 100644 index 0000000000000000000000000000000000000000..60255150e4ffcd4a38f0d2c34d664e50ce7ebae5 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/ResourceQuotaInfo.json @@ -0,0 +1,3 @@ +{ + "cpuQuota": 1 +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/ResourceQuotaInfo2.json b/MEC048/MEO/CSE/jsons/ResourceQuotaInfo2.json new file mode 100644 index 0000000000000000000000000000000000000000..d67bc4c7aae16c81b198722d009fdb6adde214bf --- /dev/null +++ b/MEC048/MEO/CSE/jsons/ResourceQuotaInfo2.json @@ -0,0 +1,3 @@ +{ + "cpuQuota": 2 +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/ResourceQuotaInfo3.json b/MEC048/MEO/CSE/jsons/ResourceQuotaInfo3.json new file mode 100644 index 0000000000000000000000000000000000000000..6acfd3e1e31654f44e4f6c390b05e66a82c8088c --- /dev/null +++ b/MEC048/MEO/CSE/jsons/ResourceQuotaInfo3.json @@ -0,0 +1,3 @@ +{ + "cpuQuota": 3 +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/ResourceQuotaInfoUpdate.json b/MEC048/MEO/CSE/jsons/ResourceQuotaInfoUpdate.json new file mode 100644 index 0000000000000000000000000000000000000000..7765cdcf9b2e1066a61390fd5107f2f51fdf59f7 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/ResourceQuotaInfoUpdate.json @@ -0,0 +1,5 @@ +{ + "cpuQuota": 5, + "memoryQuota": 2192, + "diskQuota": 70 +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/ResourceUsageSubscription.json b/MEC048/MEO/CSE/jsons/ResourceUsageSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..3a34bb5cca63f1a1d3e9e5d7f9a44b1e1c9edc92 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/ResourceUsageSubscription.json @@ -0,0 +1,11 @@ +{ + "subscriptionType": "ResourceUsageSubscription", + "callbackReference": "some/uri", + "customerId": "placeholder", + "tenantId": "placeholder", + "notificationTrigger": { + "triggerType": 10, + "threshold": 4, + "greaterOrLess": false + } + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/ResourceUsageSubscription1.json b/MEC048/MEO/CSE/jsons/ResourceUsageSubscription1.json new file mode 100644 index 0000000000000000000000000000000000000000..3d14b062c323293c25338f5995d966c814699e73 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/ResourceUsageSubscription1.json @@ -0,0 +1,11 @@ +{ + "subscriptionType": "ResourceUsageSubscription", + "callbackReference": "http://example.org/callback1", + "customerId": "customer-123", + "tenantId": "tenant-123", + "notificationTrigger": { + "triggerType": 10, + "threshold": 80, + "greaterOrLess": true + } + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/ResourceUsageSubscription2.json b/MEC048/MEO/CSE/jsons/ResourceUsageSubscription2.json new file mode 100644 index 0000000000000000000000000000000000000000..ee45945f58fa674545d63eef78d10b3cbacebfc7 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/ResourceUsageSubscription2.json @@ -0,0 +1,11 @@ +{ + "subscriptionType": "ResourceUsageSubscription", + "callbackReference": "http://example.org/callback2", + "customerId": "customer-123", + "tenantId": "tenant-123", + "notificationTrigger": { + "triggerType": 20, + "threshold": 75, + "greaterOrLess": true + } + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/ResourceUsageSubscriptionBR.json b/MEC048/MEO/CSE/jsons/ResourceUsageSubscriptionBR.json new file mode 100644 index 0000000000000000000000000000000000000000..bc1b74de7be38f5def384d61c3289797e73d00dd --- /dev/null +++ b/MEC048/MEO/CSE/jsons/ResourceUsageSubscriptionBR.json @@ -0,0 +1,10 @@ +{ + "subscriptionType": "ResourceUsageSubscription", + "customerId": "placeholder-customer", + "tenantId": "placeholder-tenant", + "notificationTrigger": { + "triggerType": 10, + "threshold": 4, + "greaterOrLess": false + } + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/ResourceUsageSubscriptionWithExpiry.json b/MEC048/MEO/CSE/jsons/ResourceUsageSubscriptionWithExpiry.json new file mode 100644 index 0000000000000000000000000000000000000000..80a6eca0076416490cdd0ee399a5eff2d906b3de --- /dev/null +++ b/MEC048/MEO/CSE/jsons/ResourceUsageSubscriptionWithExpiry.json @@ -0,0 +1,12 @@ +{ + "subscriptionType": "ResourceUsageSubscription", + "callbackReference": "some/uri", + "customerId": "customer-123", + "tenantId": "tenant-123", + "expiryDeadline": "2099-12-31T23:59:59Z", + "notificationTrigger": { + "triggerType": 10, + "threshold": 4, + "greaterOrLess": false + } + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfo.json b/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfo.json new file mode 100644 index 0000000000000000000000000000000000000000..fb08665e99e60628dcbbf9ad6a8e8259dc659f71 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfo.json @@ -0,0 +1,6 @@ +{ + "siteId": "site-12", + "cpuQuota": 2, + "memoryQuota": 7191, + "diskQuota": 91 + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfo2.json b/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfo2.json new file mode 100644 index 0000000000000000000000000000000000000000..75f34c32785a2b7fd37bd1a45d13578015b83394 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfo2.json @@ -0,0 +1,6 @@ +{ + "siteId": "site-1234", + "cpuQuota": 3, + "memoryQuota": 7192, + "diskQuota": 90 + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfo3.json b/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfo3.json new file mode 100644 index 0000000000000000000000000000000000000000..07a42478ca29a41178da3180240c1e690aaa0084 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfo3.json @@ -0,0 +1,6 @@ +{ + "siteId": "site-123", + "cpuQuota": 4, + "memoryQuota": 8192, + "diskQuota": 100 + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfoBR.json b/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfoBR.json new file mode 100644 index 0000000000000000000000000000000000000000..d38c9dadf9c9eb338e12cdf2010c7279b1a12374 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/SiteResourceQuotaInfoBR.json @@ -0,0 +1,3 @@ +{ + "siteId": "SITE_ID" +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscription.json b/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscription.json new file mode 100644 index 0000000000000000000000000000000000000000..f4f9e394718493c54027bd84d503897ce6ad77f8 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscription.json @@ -0,0 +1,17 @@ +{ + "subscriptionType": "SiteResourceUsageSubscription", + "callbackReference": "some/uri", + "_links": { + "self": { + "href": "LINK_TO_THE_RESOURCE" + } + }, + "customerId": "placeholder-customer", + "tenantId": "placeholder-tenant", + "siteList": ["placeholder-site"], + "notificationTrigger": { + "triggerType": 10, + "threshold": 4, + "greaterOrLess": false + } +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscription1.json b/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscription1.json new file mode 100644 index 0000000000000000000000000000000000000000..f4f9e394718493c54027bd84d503897ce6ad77f8 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscription1.json @@ -0,0 +1,17 @@ +{ + "subscriptionType": "SiteResourceUsageSubscription", + "callbackReference": "some/uri", + "_links": { + "self": { + "href": "LINK_TO_THE_RESOURCE" + } + }, + "customerId": "placeholder-customer", + "tenantId": "placeholder-tenant", + "siteList": ["placeholder-site"], + "notificationTrigger": { + "triggerType": 10, + "threshold": 4, + "greaterOrLess": false + } +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscriptionBR.json b/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscriptionBR.json new file mode 100644 index 0000000000000000000000000000000000000000..26d0e34bd58a28a9a14c5c2386962194a7655788 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscriptionBR.json @@ -0,0 +1,11 @@ +{ + "subscriptionType": "SiteResourceUsageSubscription", + "customerId": "customer-new", + "tenantId": "placeholder-tenant", + "siteList": ["site-placeholder"], + "notificationTrigger": { + "triggerType": 10, + "threshold": 4, + "greaterOrLess": false + } +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscriptionUpdate.json b/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscriptionUpdate.json new file mode 100644 index 0000000000000000000000000000000000000000..723aa3229daefe80866084d123ddb705a41f7ba5 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/SiteResourceUsageSubscriptionUpdate.json @@ -0,0 +1,12 @@ +{ + "subscriptionType": "SiteResourceUsageSubscription", + "callbackReference": "some/uri/updated", + "customerId": "customer-new", + "tenantId": "placeholder-tenant", + "siteList": ["site-placeholder"], + "notificationTrigger": { + "triggerType": 10, + "threshold": 4, + "greaterOrLess": false + } +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/TenantInfo.json b/MEC048/MEO/CSE/jsons/TenantInfo.json new file mode 100644 index 0000000000000000000000000000000000000000..167b324dfefe3e2e5285dcf99c861c4ef3d794c3 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/TenantInfo.json @@ -0,0 +1,5 @@ +{ + "customerId": "customerId", + "customerName": "customerName", + "tenantName": "tenantName" +} diff --git a/MEC048/MEO/CSE/jsons/TenantInfo2.json b/MEC048/MEO/CSE/jsons/TenantInfo2.json new file mode 100644 index 0000000000000000000000000000000000000000..660ea32cf627ca789dd7e8c8e305757a069b77ee --- /dev/null +++ b/MEC048/MEO/CSE/jsons/TenantInfo2.json @@ -0,0 +1,5 @@ +{ + "customerId": "customerId2", + "customerName": "customerName2", + "tenantName": "tenantName2" +} diff --git a/MEC048/MEO/CSE/jsons/TenantInfo3.json b/MEC048/MEO/CSE/jsons/TenantInfo3.json new file mode 100644 index 0000000000000000000000000000000000000000..5116f15523295baa0673f40be357e8afa8f06bc2 --- /dev/null +++ b/MEC048/MEO/CSE/jsons/TenantInfo3.json @@ -0,0 +1,5 @@ +{ + "customerId": "customerId3", + "customerName": "customerName3", + "tenantName": "tenantName3" +} diff --git a/MEC048/MEO/CSE/jsons/TenantInfoBR.json b/MEC048/MEO/CSE/jsons/TenantInfoBR.json new file mode 100644 index 0000000000000000000000000000000000000000..052e6b117023b2db5e6d6af60b2d293dbb54a50b --- /dev/null +++ b/MEC048/MEO/CSE/jsons/TenantInfoBR.json @@ -0,0 +1,16 @@ +{ + "customerId": "customerId", + "customerName": "customerName", + "tenantName": "tenantName", + "resourceUseInfo": { + "cpuQuota": 100 + }, + "siteList": [ + { + "siteId": "siteId", + "resourceInfo": { + "cpuQuota": 50 + } + } + ] +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/jsons/TenantInfoUpdate.json b/MEC048/MEO/CSE/jsons/TenantInfoUpdate.json new file mode 100644 index 0000000000000000000000000000000000000000..e5d408854977df5833a86a181632be4f3649bccd --- /dev/null +++ b/MEC048/MEO/CSE/jsons/TenantInfoUpdate.json @@ -0,0 +1,5 @@ +{ + "customerId": "NEW_CUSTOMER_ID", + "customerName": "NEW_CUSTOMER_NAME_1", + "tenantName": "NEW_TENANT_NAME" +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/libraries/Server.py b/MEC048/MEO/CSE/libraries/Server.py new file mode 100644 index 0000000000000000000000000000000000000000..b1b6c850cbd73a60579b7a647347e25624c05c49 --- /dev/null +++ b/MEC048/MEO/CSE/libraries/Server.py @@ -0,0 +1,52 @@ +#!/usr/bin/python3 +# filepath: c:\Users\Ikram Laptop\ROBOT-Framework\gs032p3-robot-test-suite\MEC048\MEO\CSE\libraries\Server.py + +from http.server import BaseHTTPRequestHandler, HTTPServer +import json, os +import logging + +# Library version +__version__ = '0.0.1' + +class Server(object): + ROBOT_LIBRARY_VERSION = '0.0.1' + + def spawn_web_server(self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None): + + class POST_Server(BaseHTTPRequestHandler): + def __call__(self, *args, **kwargs): + """Handle a request.""" + super().__init__(*args, **kwargs) + + def __init__(self, endpoint, resp_body): + self.resp_body = resp_body + self.endpoint = endpoint + self.req_body = None + + def do_POST(self): + self.send_response(200) + self.send_header('Content-Type', 'application/json') + self.end_headers() + + content_len = int(self.headers.get('Content-Length')) + post_body = self.rfile.read(content_len) + self.req_body = post_body + logging.info(f"Received notification: {post_body}") + + def get_req_body(self): + return self.req_body + + def get_resp_body(self): + return self.resp_body + + self.handler = POST_Server(endpoint, resp_body) + self.app = HTTPServer((host, int(port)), self.handler) + self.app.timeout = int(timeout) + + logging.info(f"Starting notification server on {host}:{port} with timeout {timeout}") + self.app.handle_request() + self.app.server_close() + + if self.handler.get_req_body() is not None: + return json.loads(self.handler.get_req_body().decode("utf-8")) + return None \ No newline at end of file diff --git a/MEC048/MEO/CSE/libraries/StressGenerator.py b/MEC048/MEO/CSE/libraries/StressGenerator.py new file mode 100644 index 0000000000000000000000000000000000000000..ae9419a1e461eeb5b0364d682b763fb97fe10635 --- /dev/null +++ b/MEC048/MEO/CSE/libraries/StressGenerator.py @@ -0,0 +1,37 @@ +import multiprocessing +import time + +class StressGenerator: + ROBOT_LIBRARY_VERSION = '0.0.1' + + def generate_cpu_load(self, duration=30, cpu_cores=None): + """ + Generate CPU load by spinning up processes that perform intensive calculations. + + Args: + duration: How long to run the stress test in seconds + cpu_cores: Number of CPU cores to use. If None, uses all available cores. + """ + if cpu_cores is None: + cpu_cores = multiprocessing.cpu_count() + + processes = [] + + def cpu_intensive_task(): + end_time = time.time() + duration + while time.time() < end_time: + # Perform CPU-intensive calculations + for i in range(10000000): + _ = i * i + + # Create and start processes + for _ in range(cpu_cores): + p = multiprocessing.Process(target=cpu_intensive_task) + p.start() + processes.append(p) + + # Wait for all processes to complete + for p in processes: + p.join() + + return f"Generated CPU load on {cpu_cores} cores for {duration} seconds" \ No newline at end of file diff --git a/MEC048/MEO/CSE/libraries/__pycache__/Server.cpython-312.pyc b/MEC048/MEO/CSE/libraries/__pycache__/Server.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..95b8591def7f8583ce0628c4f1a849f5887c88f6 Binary files /dev/null and b/MEC048/MEO/CSE/libraries/__pycache__/Server.cpython-312.pyc differ diff --git a/MEC048/MEO/CSE/libraries/__pycache__/StressGenerator.cpython-312.pyc b/MEC048/MEO/CSE/libraries/__pycache__/StressGenerator.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25d11bd63c7c3d1a3c5808e96816d275e292f4b7 Binary files /dev/null and b/MEC048/MEO/CSE/libraries/__pycache__/StressGenerator.cpython-312.pyc differ diff --git a/MEC048/MEO/CSE/schemas/ExpiryNotification.schema.json b/MEC048/MEO/CSE/schemas/ExpiryNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..8599a0e7a3d95aee5cf7d5acb3e2ce5d41209f10 --- /dev/null +++ b/MEC048/MEO/CSE/schemas/ExpiryNotification.schema.json @@ -0,0 +1,9 @@ +{ + "notificationType": "ExpiryNotification", + "_links": { + "subscription": { + "href": "http://example.com/cse/v1/subscriptions/subscription-123" + } + }, + "expiryDeadline": "2099-12-31T23:59:59Z" + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/schemas/ResourceQuotaInfo.schema.json b/MEC048/MEO/CSE/schemas/ResourceQuotaInfo.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..a0533046a976940cc227e3b61007aeba35bc9f0b --- /dev/null +++ b/MEC048/MEO/CSE/schemas/ResourceQuotaInfo.schema.json @@ -0,0 +1,15 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "cpuQuota": { + "type": "integer" + }, + "memoryQuota": { + "type": "integer" + }, + "diskQuota": { + "type": "integer" + } + } +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/schemas/ResourceUsageNotification.schema.json b/MEC048/MEO/CSE/schemas/ResourceUsageNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..664ee99b6b4785c84eb1e12389fe8fdd1f45d54e --- /dev/null +++ b/MEC048/MEO/CSE/schemas/ResourceUsageNotification.schema.json @@ -0,0 +1,14 @@ +{ + "notificationType": "ResourceUsageNotification", + "timeStamp": "2023-01-01T12:00:00Z", + "customerId": "customer-123", + "tenantId": "tenant-123", + "resourceUseInfo": { + "cpuUsed": 5, + "cpuRemain": 3, + "memoryUsed": 4096, + "memoryRemain": 2048, + "diskUsed": 50, + "diskRemain": 50 + } + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/schemas/ResourceUsageSubscription.schema.json b/MEC048/MEO/CSE/schemas/ResourceUsageSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..3b769adce28bae6b74f44c7c386d90d93c74db94 --- /dev/null +++ b/MEC048/MEO/CSE/schemas/ResourceUsageSubscription.schema.json @@ -0,0 +1,60 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "subscriptionType": { + "type": "string", + "enum": ["ResourceUsageSubscription"] + }, + "callbackReference": { + "type": "string", + "format": "uri" + }, + "requestTestNotification": { + "type": "boolean" + }, + "websockNotifConfig": { + "type": "object" + }, + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "properties": { + "href": { + "type": "string" + } + } + } + } + }, + "customerId": { + "type": "string" + }, + "tenantId": { + "type": "string" + }, + "notificationTrigger": { + "type": "object", + "properties": { + "triggerType": { + "type": "integer", + "enum": [10, 11, 20, 21, 30, 31] + }, + "threshold": { + "type": "integer" + }, + "greaterOrLess": { + "type": "boolean" + } + }, + "required": ["triggerType", "threshold", "greaterOrLess"] + }, + "expiryDeadline": { + "type": "string", + "format": "date-time" + } + }, + "required": ["subscriptionType", "customerId", "tenantId", "notificationTrigger"] + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/schemas/SiteResourceQuotaInfo.schema.json b/MEC048/MEO/CSE/schemas/SiteResourceQuotaInfo.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..dd8201fc47589e3e59f4bc776c7a4cf05c004652 --- /dev/null +++ b/MEC048/MEO/CSE/schemas/SiteResourceQuotaInfo.schema.json @@ -0,0 +1,21 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "siteId": { + "type": "string" + }, + "cpuQuota": { + "type": "integer" + }, + "memoryQuota": { + "type": "integer" + }, + "diskQuota": { + "type": "integer" + } + }, + "required": [ + "siteId" + ] +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/schemas/SiteResourceQuotaInfoList.schema.json b/MEC048/MEO/CSE/schemas/SiteResourceQuotaInfoList.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..581dc86d76d8a54b8ea322fdde6c5e58b2e845e2 --- /dev/null +++ b/MEC048/MEO/CSE/schemas/SiteResourceQuotaInfoList.schema.json @@ -0,0 +1,24 @@ +{ + "type": "array", + "items": { + "title": "SiteResourceQuotaInfo", + "type": "object", + "properties": { + "siteId": { + "type": "string" + }, + "cpuQuota": { + "type": "integer" + }, + "memoryQuota": { + "type": "integer" + }, + "diskQuota": { + "type": "integer" + } + }, + "required": [ + "siteId" + ] + } +} \ No newline at end of file diff --git a/MEC048/MEO/CSE/schemas/SiteResourceUsageNotification.schema.json b/MEC048/MEO/CSE/schemas/SiteResourceUsageNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..bd054eb8215713c1da904b9b05a8995781a17f9e --- /dev/null +++ b/MEC048/MEO/CSE/schemas/SiteResourceUsageNotification.schema.json @@ -0,0 +1,56 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [ + "notificationType", + "customerId", + "tenantId", + "resourceUseInfo" + ], + "properties": { + "notificationType": { + "type": "string", + "enum": ["SiteResourceUsageNotification"] + }, + "timeStamp": { + "type": "string", + "format": "date-time" + }, + "customerId": { + "type": "string" + }, + "tenantId": { + "type": "string" + }, + "resourceUseInfo": { + "type": "array", + "items": { + "type": "object", + "required": ["siteId"], + "properties": { + "siteId": { + "type": "string" + }, + "cpuUsed": { + "type": "integer" + }, + "cpuRemain": { + "type": "integer" + }, + "memoryUsed": { + "type": "integer" + }, + "memoryRemain": { + "type": "integer" + }, + "diskUsed": { + "type": "integer" + }, + "diskRemain": { + "type": "integer" + } + } + } + } + } + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/schemas/SiteResourceUsageSubscription.schema.json b/MEC048/MEO/CSE/schemas/SiteResourceUsageSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..339ae5bf2ec2e6e3941f98b7be14f4c79a7aed3e --- /dev/null +++ b/MEC048/MEO/CSE/schemas/SiteResourceUsageSubscription.schema.json @@ -0,0 +1,67 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "subscriptionType": { + "type": "string", + "enum": ["SiteResourceUsageSubscription"] + }, + "callbackReference": { + "type": "string", + "format": "uri" + }, + "requestTestNotification": { + "type": "boolean" + }, + "websockNotifConfig": { + "type": "object" + }, + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"] + } + } + }, + "customerId": { + "type": "string" + }, + "tenantId": { + "type": "string" + }, + "siteList": { + "type": "array", + "items": { + "type": "string" + } + }, + "notificationTrigger": { + "type": "object", + "properties": { + "triggerType": { + "type": "integer", + "enum": [10, 11, 20, 21, 30, 31] + }, + "threshold": { + "type": "integer" + }, + "greaterOrLess": { + "type": "boolean" + } + }, + "required": ["triggerType", "threshold", "greaterOrLess"] + }, + "expiryDeadline": { + "type": "string", + "format": "date-time" + } + }, + "required": ["subscriptionType", "customerId", "tenantId", "siteList", "notificationTrigger"] + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/schemas/SubscriptionLinkList.schema.json b/MEC048/MEO/CSE/schemas/SubscriptionLinkList.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..5ac9f96a100a71fd5069ccba4416a307c99a2220 --- /dev/null +++ b/MEC048/MEO/CSE/schemas/SubscriptionLinkList.schema.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "_links": { + "type": "object", + "properties": { + "self": { + "type": "object", + "properties": { + "href": { + "type": "string" + } + }, + "required": ["href"] + } + }, + "required": ["self"] + }, + "subscription": { + "type": "array", + "items": { + "type": "object", + "properties": { + "href": { + "type": "string" + }, + "subscriptionType": { + "type": "string", + "enum": ["ResourceUsageSubscription", "SiteResourceUsageSubscription"] + } + }, + "required": ["href", "subscriptionType"] + } + } + }, + "required": ["_links", "subscription"] + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/schemas/TenantInfo.schema.json b/MEC048/MEO/CSE/schemas/TenantInfo.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..9e7c24045d3079f3872323b3db5399bd3803ae87 --- /dev/null +++ b/MEC048/MEO/CSE/schemas/TenantInfo.schema.json @@ -0,0 +1,58 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "customerName": { + "type": "string" + }, + "customerCategory": { + "type": "string" + }, + "tenantId": { + "type": "string" + }, + "tenantName": { + "type": "string" + }, + "resourceUseInfo": { + "type": "object", + "properties": { + "cpuQuota": { + "type": "integer" + }, + "cpuUsed": { + "type": "integer" + }, + "cpuRemain": { + "type": "integer" + }, + "memoryQuota": { + "type": "integer" + }, + "memoryUsed": { + "type": "integer" + }, + "memoryRemain": { + "type": "integer" + }, + "diskQuota": { + "type": "integer" + }, + "diskUsed": { + "type": "integer" + }, + "diskRemain": { + "type": "integer" + } + } + } + }, + "required": [ + "customerId", + "customerName", + "tenantName" + ] + } \ No newline at end of file diff --git a/MEC048/MEO/CSE/schemas/TenantInfoList.schema.json b/MEC048/MEO/CSE/schemas/TenantInfoList.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..9c67d3ab5f56d6582778628e75e92eafb044223b --- /dev/null +++ b/MEC048/MEO/CSE/schemas/TenantInfoList.schema.json @@ -0,0 +1,61 @@ +{ + "type": "array", + "items": { + "title": "TenantInfo", + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "customerName": { + "type": "string" + }, + "customerCategory": { + "type": "string" + }, + "tenantId": { + "type": "string" + }, + "tenantName": { + "type": "string" + }, + "resourceUseInfo": { + "type": "object", + "properties": { + "cpuQuota": { + "type": "integer" + }, + "cpuUsed": { + "type": "integer" + }, + "cpuRemain": { + "type": "integer" + }, + "memoryQuota": { + "type": "integer" + }, + "memoryUsed": { + "type": "integer" + }, + "memoryRemain": { + "type": "integer" + }, + "diskQuota": { + "type": "integer" + }, + "diskUsed": { + "type": "integer" + }, + "diskRemain": { + "type": "integer" + } + } + } + }, + "required": [ + "customerId", + "customerName", + "tenantName" + ] + } +} \ No newline at end of file