Add Documentation to Test Files
[integration/csit.git] / tests / so / etsi / etsi_vnf_lcm_tests.robot
1 *** Settings ***
2 Library     Collections
3 Library     RequestsLibrary
4 Library     OperatingSystem
5 Library     json
6 Documentation    Test cases for VNF lifecycle management operations
7 ...              Note, relies on:
8 ...                -package being onboarded in etsi_package_onboarding_tests
9
10 *** Variables ***
11 ${SLEEP_INTERVAL_SEC}=   5
12 ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}=     48     # Represents the maximum number of attempts that will be made before a timeout. It sleeps for SLEEP_INTERVAL_SEC seconds before retry.
13
14 *** Test Cases ***
15 Invoke Service Instantiation
16     Create Session   api_handler_session  http://${REPO_IP}:8080
17     ${data}=    Get Binary File     ${CURDIR}${/}data${/}serviceInstantiationRequest.json
18     &{headers}=  Create Dictionary    Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==    Content-Type=application/json    Accept=application/json
19     ${service_instantiation_request}=    Post On Session    api_handler_session    /onap/so/infra/serviceInstantiation/v7/serviceInstances    data=${data}    headers=${headers}
20     Run Keyword If  '${service_instantiation_request.status_code}' == '200'  log to console   \nexecuted with expected result
21     log to console      ${service_instantiation_request.content}
22     ${service_instantiation_json_response}=    Evaluate     json.loads(r"""${service_instantiation_request.content}""", strict=False)    json
23     ${request_ID}=          Set Variable         ${service_instantiation_json_response}[requestReferences][requestId]
24     ${service_instance_Id}=     Set Variable       ${service_instantiation_json_response}[requestReferences][instanceId]
25     SET GLOBAL VARIABLE       ${service_instance_Id}
26     ${actual_request_state}=    Set Variable    ""
27
28     FOR    ${INDEX}    IN RANGE    ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
29        ${orchestration_status_request}=   Get On Session  api_handler_session   /onap/so/infra/orchestrationRequests/v7/${request_ID}
30        Run Keyword If  '${orchestration_status_request.status_code}' == '200'  log to console   \nexecuted with expected result
31        log to console      ${orchestration_status_request.content}
32        ${orchestration_json_response}=    Evaluate     json.loads(r"""${orchestration_status_request.content}""", strict=False)    json
33        ${actual_request_state}=     SET VARIABLE       ${orchestration_json_response}[request][requestStatus][requestState]
34        Log To Console    Received actual repsonse status:${actual_request_state}
35        RUN KEYWORD IF   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
36        log to console  Will try again after ${SLEEP_INTERVAL_SEC} seconds
37        SLEEP   ${SLEEP_INTERVAL_SEC}s
38     END
39
40     Log To Console     final repsonse status received: ${actual_request_state}
41     Run Keyword If  '${actual_request_state}' == 'COMPLETE'  log to console   \nexecuted with expected result
42     Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
43
44 Invoke VNF Instantiation
45     Run Keyword If      "${service_instance_Id}"!="${EMPTY}"      Log to Console    Service Instance ID :${service_instance_Id} received
46     ...                ELSE      Fail           Log to Console  Invalid Service Instance ID :${service_instance_Id} recieved
47
48     Create Session   api_handler_session  http://${REPO_IP}:8080
49     ${data}=    Get Binary File     ${CURDIR}${/}data${/}vnfInstantiationRequest.json
50     ${vnf_instantiate_request_json}=    evaluate    json.loads(r'''${data}''', strict=False)    json
51     set to dictionary    ${vnf_instantiate_request_json}[requestDetails][relatedInstanceList][0][relatedInstance]        instanceId=${service_instance_Id}
52     ${vnf_instantiate_request_string}=    evaluate    json.dumps(${vnf_instantiate_request_json})    json
53     &{headers}=  Create Dictionary    Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==    Content-Type=application/json    Accept=application/json
54     ${vnf_instantiate_request}=    Post On Session    api_handler_session    /onap/so/infra/serviceInstantiation/v7/serviceInstances/${service_instance_Id}/vnfs   data=${vnf_instantiate_request_string}    headers=${headers}
55     Run Keyword If  '${vnf_instantiate_request.status_code}' == '200'  log to console   \nexecuted with expected result
56     ${vnf_instantiate_json_response}=    Evaluate     json.loads(r"""${vnf_instantiate_request.content}""")    json
57     ${request_ID}=          Set Variable         ${vnf_instantiate_json_response}[requestReferences][requestId]
58     ${actual_request_state}=    SET VARIABLE    ""
59     ${vnf_instance_Id}=     Set Variable       ${vnf_instantiate_json_response}[requestReferences][instanceId]
60     SET GLOBAL VARIABLE       ${vnf_instance_Id}
61
62     FOR    ${INDEX}    IN RANGE    ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
63        ${orchestration_status_request}=   Get On Session  api_handler_session   /onap/so/infra/orchestrationRequests/v7/${request_ID}
64        Run Keyword If  '${orchestration_status_request.status_code}' == '200'  log to console   \nexecuted with expected result
65        Log To Console      ${orchestration_status_request.content}
66        ${orchestration_json_response}=    Evaluate     json.loads(r"""${orchestration_status_request.content}""", strict=False)    json
67        ${actual_request_state}=     SET VARIABLE       ${orchestration_json_response}[request][requestStatus][requestState]
68        RUN KEYWORD IF   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
69        Log To Console  Will try again after ${SLEEP_INTERVAL_SEC} seconds
70        SLEEP   ${SLEEP_INTERVAL_SEC}s
71     END
72
73     ${service_instance_Id}=     SET VARIABLE       ${orchestration_json_response}[request][instanceReferences][serviceInstanceId]
74     Log To Console     final repsonse status received: ${actual_request_state}
75     Run Keyword If  '${actual_request_state}' == 'COMPLETE'  log to console   \nexecuted with expected result
76     Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
77
78 Delete VNF Instance
79     Run Keyword If      "${vnf_instance_Id}" != "${EMPTY}"      Log to Console    VNF Instance ID :${vnf_instance_Id} received
80     ...                ELSE      Fail           Log to Console  Invalid VNF Instance ID :${vnf_instance_Id} recieved
81     Run Keyword If      "${service_instance_Id}" != "${EMPTY}"      Log to Console    VNF Instance ID :${service_instance_Id} received
82     ...                ELSE      Fail           Log to Console  Invalid VNF Instance ID :${service_instance_Id} recieved
83
84     Create Session   api_handler_session  http://${REPO_IP}:8080
85     ${data}=    Get Binary File     ${CURDIR}${/}data${/}vnfDeleteRequest.json
86     &{headers}=  Create Dictionary    Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==    Content-Type=application/json    Accept=application/json
87     ${vnf_delete_request}=    Delete On Session    api_handler_session    /onap/so/infra/serviceInstantiation/v7/serviceInstances/${service_instance_Id}/vnfs/${vnf_instance_Id}     data=${data}     headers=${headers}
88     ${vnf_delete_json_response}=    Evaluate     json.loads(r"""${vnf_delete_request.content}""")    json
89     Log to Console      ${vnf_delete_json_response}
90     ${request_ID}=          Set Variable         ${vnf_delete_json_response}[requestReferences][requestId]
91     ${actual_request_state}=    Set Variable    ""
92
93     FOR    ${INDEX}    IN RANGE    ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
94        ${orchestration_status_request}=   Get On Session  api_handler_session   /onap/so/infra/orchestrationRequests/v7/${request_ID}
95        Run Keyword If  '${orchestration_status_request.status_code}' == '200'  log to console   \nexecuted with expected result
96        Log To Console      ${orchestration_status_request.content}
97        ${orchestration_json_response}=    Evaluate     json.loads(r"""${orchestration_status_request.content}""")    json
98        ${actual_request_state}=     SET VARIABLE       ${orchestration_json_response}[request][requestStatus][requestState]
99        RUN KEYWORD IF   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
100        Log To Console  Will try again after ${SLEEP_INTERVAL_SEC} seconds
101        SLEEP   ${SLEEP_INTERVAL_SEC}s
102     END
103
104     Log To Console     final repsonse status received: ${actual_request_state}
105     Run Keyword If  '${actual_request_state}' == 'COMPLETE'  log to console   \nexecuted with expected result
106     Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'
107
108
109 Delete Service Instance
110     Run Keyword If      "${service_instance_Id}" != "${EMPTY}"      Log to Console    VNF Instance ID :${service_instance_Id} received
111     ...                ELSE      Fail           Log to Console  Invalid Service Instance ID :${service_instance_Id} recieved
112
113     Create Session   api_handler_session  http://${REPO_IP}:8080
114     ${data}=    Get Binary File     ${CURDIR}${/}data${/}serviceDeleteRequest.json
115     &{headers}=  Create Dictionary    Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==    Content-Type=application/json    Accept=application/json
116     ${service_delete_request}=    Delete On Session    api_handler_session    /onap/so/infra/serviceInstantiation/v7/serviceInstances/${service_instance_Id}     data=${data}     headers=${headers}
117     ${service_delete_json_response}=    Evaluate     json.loads(r"""${service_delete_request.content}""")    json
118     Log to Console      ${service_delete_json_response}
119     ${request_ID}=          Set Variable         ${service_delete_json_response}[requestReferences][requestId]
120     ${actual_request_state}=    Set Variable    ""
121
122     FOR    ${INDEX}    IN RANGE    ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}
123        ${orchestration_status_request}=   Get On Session  api_handler_session   /onap/so/infra/orchestrationRequests/v7/${request_ID}
124        Run Keyword If  '${orchestration_status_request.status_code}' == '200'  log to console   \nexecuted with expected result
125        Log To Console      ${orchestration_status_request.content}
126        ${orchestration_json_response}=    Evaluate     json.loads(r"""${orchestration_status_request.content}""")    json
127        ${actual_request_state}=     SET VARIABLE       ${orchestration_json_response}[request][requestStatus][requestState]
128        RUN KEYWORD IF   '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED'      Exit For Loop
129        Log To Console  Will try again after ${SLEEP_INTERVAL_SEC} seconds
130        SLEEP   ${SLEEP_INTERVAL_SEC}s
131     END
132
133     Log To Console     final repsonse status received: ${actual_request_state}
134     Run Keyword If  '${actual_request_state}' == 'COMPLETE'  log to console   \nexecuted with expected result
135     Should Be Equal As Strings    '${actual_request_state}'    'COMPLETE'