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