Adding verification of kube resources
[integration/csit.git] / tests / so / integration-cnfm-testing / cnf_lcm_tests.robot
index 8583886..9853197 100644 (file)
@@ -3,6 +3,7 @@ Library     Collections
 Library     RequestsLibrary
 Library     OperatingSystem
 Library     json
+Library     libraries/KubernetesClient.py
 
 Documentation    Test cases for CNF lifecycle management operations
 ...              Note, relies on:
@@ -17,6 +18,14 @@ ${CNF_RESOURCE_INSTANTIATION_TEMPLATE}=    ${CURDIR}${/}data${/}cnfResourceInsta
 ${CNF_RESOURCE_DELETE_TEMPLATE}=           ${CURDIR}${/}data${/}cnfResourceDeleteRequest.json
 ${SERVICE_DELETE_TEMPLATE}=                ${CURDIR}${/}data${/}serviceDeleteRequest.json
 
+${LABEL_NAME}=                                       app.kubernetes.io/instance
+${MARIADB_LABEL_SELECTOR}=                           ${LABEL_NAME}=democnfinstance-mariadb-db-1
+${EXPECTED_NUM_OF_RESOURCES_AFTER_INSTANTIATION}=    1
+
+${NGINX_LABEL_SELECTOR}=                             ${LABEL_NAME}=democnfinstance-nginx-services-2
+${EXPECTED_NUM_OF_RESOURCES_AFTER_DELETE}=           0
+
+
 *** Test Cases ***
 Invoke Service Instantiation
     Create Session   api_handler_session  http://${REPO_IP}:8080
@@ -30,7 +39,6 @@ Invoke Service Instantiation
     ${service_instantiation_json_response}=    Evaluate     json.loads(r"""${service_instantiation_request.content}""", strict=False)    json
     ${request_ID}=          Set Variable         ${service_instantiation_json_response}[requestReferences][requestId]
     ${service_instance_Id}=     Set Variable       ${service_instantiation_json_response}[requestReferences][instanceId]
-    Set Global Variable       ${service_instance_Id}
     ${actual_request_state}=    Set Variable    ""
 
     FOR    ${INDEX}    IN RANGE    ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
@@ -47,6 +55,7 @@ Invoke Service Instantiation
 
     Log To Console     Final repsonse status received: ${actual_request_state}
     Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
+    Set Global Variable       ${service_instance_Id}
 
 Invoke CNF Instantiation
     Run Keyword If      "${service_instance_Id}"!="${EMPTY}"      Log to Console    Service Instance ID :${service_instance_Id} received
@@ -68,7 +77,6 @@ Invoke CNF Instantiation
     ${request_ID}=          Set Variable         ${cnf_instantiate_json_response}[requestReferences][requestId]
     ${actual_request_state}=    Set Variable    ""
     ${cnf_instance_Id}=     Set Variable       ${cnf_instantiate_json_response}[requestReferences][instanceId]
-    SET GLOBAL VARIABLE       ${cnf_instance_Id}
 
     FOR    ${INDEX}    IN RANGE    ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
        ${orchestration_status_request}=   Get On Session  api_handler_session   /onap/so/infra/orchestrationRequests/v7/${request_ID}
@@ -85,6 +93,9 @@ Invoke CNF Instantiation
     Log To Console     Final repsonse status received: ${actual_request_state}
     Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
 
+    Verify Kubernetes Resources    ${EXPECTED_NUM_OF_RESOURCES_AFTER_INSTANTIATION}
+    Set Global Variable       ${cnf_instance_Id}
+
 Invoke CNF Delete
     Run Keyword If      "${cnf_instance_Id}" != "${EMPTY}"      Log to Console    CNF Instance ID :${cnf_instance_Id} received
     ...                ELSE      Fail           Log to Console  Invalid CNF Instance ID :${cnf_instance_Id} recieved
@@ -109,7 +120,7 @@ Invoke CNF Delete
        Log To Console      ${orchestration_status_request.content}
        ${orchestration_json_response}=    Evaluate     json.loads(r"""${orchestration_status_request.content}""")    json
        ${actual_request_state}=     Set Variable       ${orchestration_json_response}[request][requestStatus][requestState]
-       RUN KEYWORD IF   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
+       Run Keyword If   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
        Log To Console  Will try again after ${SLEEP_INTERVAL_SEC} seconds
        SLEEP   ${SLEEP_INTERVAL_SEC}s
     END
@@ -117,6 +128,8 @@ Invoke CNF Delete
     Log To Console     Final repsonse status received: ${actual_request_state}
     Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
 
+    Verify Kubernetes Resources    ${EXPECTED_NUM_OF_RESOURCES_AFTER_DELETE}
+
 Delete Service Instance
     Run Keyword If      "${service_instance_Id}" != "${EMPTY}"      Log to Console    CNF Instance ID :${service_instance_Id} received
     ...                ELSE      Fail           Log to Console  Invalid Service Instance ID :${service_instance_Id} recieved
@@ -139,10 +152,32 @@ Delete Service Instance
        Log To Console      ${orchestration_status_request.content}
        ${orchestration_json_response}=    Evaluate     json.loads(r"""${orchestration_status_request.content}""")    json
        ${actual_request_state}=     Set Variable       ${orchestration_json_response}[request][requestStatus][requestState]
-       RUN KEYWORD IF   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
+       Run Keyword If   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
        Log To Console  Will try again after ${SLEEP_INTERVAL_SEC} seconds
        SLEEP   ${SLEEP_INTERVAL_SEC}s
     END
 
     Log To Console     Final repsonse status received: ${actual_request_state}
-    Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
\ No newline at end of file
+    Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
+
+*** Keywords ***
+Verify Kubernetes Resources
+    [Arguments]    ${expected_number_resources}
+
+    Create Api Client    ${KIND_CLUSTER_KUBE_CONFIG_FILE}
+
+    Log To Console    Retrieving number of services using selector '${MARIADB_LABEL_SELECTOR}'
+    ${no_of_mariadb_services}=    Get Number Of Services In Namespace    label_selector=${MARIADB_LABEL_SELECTOR}
+    Should Be Equal As Integers      ${no_of_mariadb_services}    ${expected_number_resources}    Unexpected number of services received for ${MARIADB_LABEL_SELECTOR}
+
+    Log To Console    Retrieving number of stateful set using selector '${MARIADB_LABEL_SELECTOR}'
+    ${no_of_mariadb_stateful_set}=    Get Number Of Stateful Set In Namespace    label_selector=${MARIADB_LABEL_SELECTOR}
+    Should Be Equal As Integers      ${no_of_mariadb_stateful_set}    ${expected_number_resources}    Unexpected number of stateful sets received for ${MARIADB_LABEL_SELECTOR}
+
+    Log To Console    Retrieving number of services using selector '${NGINX_LABEL_SELECTOR}'
+    ${no_of_nginx_services}=    Get Number Of Services In Namespace    label_selector=${NGINX_LABEL_SELECTOR}
+    Should Be Equal As Integers      ${no_of_nginx_services}    ${expected_number_resources}    Unexpected number of services received for ${NGINX_LABEL_SELECTOR}
+
+    Log To Console    Retrieving number of deployments using selector '${NGINX_LABEL_SELECTOR}'
+    ${no_of_nginx_deployments}=    Get Number Of Deployments In Namespace    label_selector=${NGINX_LABEL_SELECTOR}
+    Should Be Equal As Integers      ${no_of_nginx_deployments}    ${expected_number_resources}    Unexpected number of deployments received for ${NGINX_LABEL_SELECTOR}
\ No newline at end of file