e3a5c2e46cdd98318493a4d82d558e54cd98c0bc
[integration/csit.git] / tests / dcaegen2 / prh-testcases / resources / prh_library.robot
1 *** Settings ***
2 Library           RequestsLibrary
3 Library           Collections
4 Library           PrhLibrary.py
5 Resource          ../../../common.robot
6
7 *** Keywords ***
8 Verify PNF ready sent
9     [Arguments]    ${test_case_directory}
10     ${pnf_entry}=    Get Data From File    ${test_case_directory}/aai-entry.json
11     ${ves_event}=    Get Data From File    ${test_case_directory}/ves-event.json
12     ${expected_pnf_ready_event}=    Get Data From File    ${test_case_directory}/expected-pnf-ready-event.json
13     Add PNF entry in AAI    ${pnf_entry}
14     Set VES event in DMaaP    ${ves_event}
15     Wait Until Keyword Succeeds    10x    3000ms    Check CBS ready
16     Wait Until Keyword Succeeds    10x    3000ms    Check created PNF_READY notification    ${expected_pnf_ready_event}
17
18 Verify PNF ready sent and old logical link replaced in AAI
19     [Arguments]    ${test_case_directory}
20     ${logical_link}=   Get Data From File  ${test_case_directory}/logical-link.json
21     ${expected_logical_link}=    Get Data From File  ${test_case_directory}/expected-logical-link.json
22     Add logical link entry in AAI  ${logical_link}
23     Verify PNF ready sent  ${test_case_directory}
24     Wait Until Keyword Succeeds    10x    3000ms    Check created Logical Link    ${expected_logical_link}
25
26 Verify PNF ready sent and logical link created
27     [Arguments]    ${test_case_directory}
28     ${expected_logical_link}=    Get Data From File    ${test_case_directory}/expected-logical-link.json
29     Verify PNF ready sent    ${test_case_directory}
30     Check created Logical Link   ${expected_logical_link}
31
32 Verify event with missing required field is logged
33     [Arguments]    ${test_case_directory}
34     ${invalid_ves_event}=    Get Data From File    ${test_case_directory}/invalid-ves-event.json
35     Set VES event in DMaaP    ${invalid_ves_event}
36     Log    Invalid ves event: ${invalid_ves_event}
37     ${notification}=    Create invalid notification    ${invalid_ves_event}
38     ${error_msg}=    Set Variable    Incorrect json, consumerDmaapModel can not be created:
39     Wait for PRH json log entry    20s    ${error_msg}    ${notification}
40
41 Verify incorrect JSON event is logged
42     [Arguments]    ${test_case_directory}
43     ${invalid_ves_event}=    Get Data From File    ${test_case_directory}/invalid-ves-event.json
44     Set VES event in DMaaP    ${invalid_ves_event}
45     Wait for PRH log entry    20s    java.lang.IllegalStateException: Not a JSON Object
46
47 Verify missing AAI record is logged
48     [Arguments]    ${test_case_directory}
49     ${incorrect_aai_entry}=    Get Data From File    ${test_case_directory}/incorrect-aai-entry.json
50     ${ves_event}=    Get Data From File    ${test_case_directory}/ves-event.json
51     Add PNF entry in AAI    ${incorrect_aai_entry}
52     Set VES event in DMaaP    ${ves_event}
53     Wait for PRH log entry    20s    Request failed for URL 'https://aai:3334/aai/v23/network/pnfs/pnf/NOK6061ZW8'. Response code: 404 Not Found
54
55 Verify AAI not responding is logged
56     [Arguments]    ${test_case_directory}
57     ${ves_event}=    Get Data From File    ${test_case_directory}/ves-event.json
58     Ensure Container Is Exited    aai_simulator
59     Set VES event in DMaaP    ${ves_event}
60     Wait for one of PRH log entries    90s    connection timed out: aai    Host is unreachable: aai    No route to host: aai    failed to resolve 'aai'
61     [Teardown]    Ensure Container Is Running   aai_simulator
62
63 Verify PNF re registration
64     [Timeout]    500s
65     [Arguments]    ${test_case_directory}
66     ${aai_entry}=    Get Data From File    ${test_case_directory}/aai-entry.json
67     Log    PNF Re-registration: AAI entry for AAI Simulator ${aai_entry}
68     Add PNF entry in AAI    ${aai_entry}
69     ${service_instance}=    Get Data From File    ${test_case_directory}/aai-entry-service-instance.json
70     Add service instance entry in AAI    ${service_instance}
71     ${logical_link}=    Get Data From File    ${test_case_directory}/logical-link.json
72     Add logical link entry in AAI    ${logical_link}
73
74     ${ves_event}=    Get Data From File    ${test_case_directory}/ves-event.json
75     Set VES event in DMaaP    ${ves_event}
76     ${expected_pnf_update_event}=    Get Data From File    ${test_case_directory}/expected-pnf-update-event.json
77     Wait Until Keyword Succeeds    10x    3000ms    Check created PNF_UPDATE notification    ${expected_pnf_update_event}
78     Wait Until Keyword Succeeds    10x    3000ms    Check logical link not modified    ${test_case_directory}
79
80 Verify PNF ready sent when service instance non active
81     [Arguments]    ${test_case_directory}
82     ${pnf_entry}=    Get Data From File    ${test_case_directory}/aai-entry.json
83     ${ves_event}=    Get Data From File    ${test_case_directory}/ves-event.json
84     ${expected_pnf_ready_event}=    Get Data From File    ${test_case_directory}/expected-pnf-ready-event.json
85     ${service_instance}=    Get Data From File    ${test_case_directory}/aai-entry-service-instance.json
86     Add PNF entry in AAI    ${pnf_entry}
87     Add service instance entry in AAI    ${service_instance}
88
89     Set VES event in DMaaP    ${ves_event}
90     Wait Until Keyword Succeeds    10x    3000ms    Check CBS ready
91     Wait Until Keyword Succeeds    10x    3000ms    Check created PNF_READY notification    ${expected_pnf_ready_event}
92
93 Check logical link not modified
94     [Arguments]    ${test_case_directory}
95     ${expected_logical_link}=    Get Data From File  ${test_case_directory}/logical-link.json
96     ${existing_logical_link}=    Get Request    ${aai_session}    /verify/logical-link    headers=${suite_headers}
97     Should Be Equal As JSON  ${expected_logical_link}    ${existing_logical_link.content}
98
99 Check CBS ready
100     ${resp}=    Get Request    ${consul_session}    /v1/catalog/services
101     Should Be Equal As Strings    ${resp.status_code}    200
102     Log    Service Catalog response: ${resp.content}
103     Dictionary Should Contain Key    ${resp.json()}    cbs    |Consul service catalog should contain CBS entry
104
105 Check created PNF_READY notification
106     [Arguments]    ${expected_event_pnf_ready_in_dmaap}
107     ${resp}=    Get Request    ${dmaap_session}    /verify/pnf_ready    headers=${suite_headers}
108     Should Be Equal As Strings    ${resp.status_code}    200
109     Should Be Equal As JSON    ${resp.content}    ${expected_event_pnf_ready_in_dmaap}
110
111 Check created PNF_UPDATE notification
112     [Arguments]    ${expected_event_pnf_update_in_dmaap}
113     ${resp}=    Get Request    ${dmaap_session}    /verify/pnf_update    headers=${suite_headers}
114     Log    Response from DMaaP: ${resp.content}
115     Should Be Equal As Strings    ${resp.status_code}    200
116     Should Be Equal As JSON    ${resp.content}    ${expected_event_pnf_update_in_dmaap}
117
118 Check created Logical Link
119     [Arguments]    ${expected_logical_link_in_aai}
120     ${resp}=    Get Request    ${aai_session}    /verify/logical-link    headers=${suite_headers}
121     Should Be Equal As Strings    ${resp.status_code}    200
122     Should Be Equal As JSON    ${resp.content}    ${expected_logical_link_in_aai}
123
124 Wait for PRH log entry
125     [Arguments]    ${timeout}    ${log_entry}
126     Wait for one of PRH log entries    ${timeout}    ${log_entry}
127
128 Wait for one of PRH log entries
129     [Arguments]    ${timeout}    @{log_entries}
130     [Timeout]     ${timeout}
131     ${found}=    Wait for one of docker log entries   prh   ${log_entries}
132     Should Be True    ${found}
133
134 Wait for PRH json log entry
135     [Arguments]    ${timeout}    ${prefix}    ${json}
136     [Timeout]     ${timeout}
137     ${found}=    Wait for log entry with json message    ${prefix}    ${json}
138     Should Be True    ${found}
139
140 Create event parsing error
141     [Arguments]    ${ves_event}
142     ${notification}=    Create invalid notification    ${ves_event}
143     ${error_msg}=    Catenate    SEPARATOR= \\n    |Incorrect json, consumerDmaapModel can not be created:     ${notification}
144     [Return]    ${error_msg}
145
146 Add PNF entry in AAI
147     [Arguments]    ${pnf_entry}
148     ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
149     Log    AAI url ${AAI_SIMULATOR_SETUP_URL}
150     ${resp}=    Put Request    ${aai_session}    /setup/add_pnf_entry    headers=${suite_headers}    data=${pnf_entry}
151     Should Be Equal As Strings    ${resp.status_code}    200
152
153 Add service instance entry in AAI
154     [Arguments]    ${aai_service_instance}
155     ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
156     Log    AAI url ${AAI_SIMULATOR_SETUP_URL}
157     ${resp}=    Put Request    ${aai_session}    /setup/add_service_instance    headers=${suite_headers}    data=${aai_service_instance}
158     Should Be Equal As Strings    ${resp.status_code}    200
159
160 Add logical link entry in AAI
161     [Arguments]  ${logical_link}
162     ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
163     Log    AAI url ${AAI_SIMULATOR_SETUP_URL}
164     ${resp}=    Put Request    ${aai_session}    /setup/add_logical_link    headers=${suite_headers}    data=${logical_link}
165     Should Be Equal As Strings    ${resp.status_code}    200
166
167 Set VES event in DMaaP
168     [Arguments]    ${ves_event}
169     ${resp}=    Put Request    ${dmaap_session}    /setup/ves_event    headers=${suite_headers}    data=${ves_event}
170     Should Be Equal As Strings    ${resp.status_code}    200
171
172 Should Be Equal As JSON
173     [Arguments]    ${actual}    ${expected}
174     Log    EXPECTED: ${expected}
175     Log    ACTUAL: ${actual}
176     ${expected_json}=    Evaluate    json.loads("""${expected}""")    json
177     ${actual_json}=    Evaluate    json.loads("""${actual}""")    json
178     Should Be Equal    ${actual_json}    ${expected_json}
179
180 Reset Simulators
181     Reset AAI simulator
182     Reset DMaaP simulator
183
184 Reset AAI simulator
185     ${resp}=    Post Request     ${aai_session}    /reset
186     Should Be Equal As Strings    ${resp.status_code}    200
187
188 Reset DMaaP simulator
189     ${resp}=    Post Request     ${dmaap_session}    /reset
190     Should Be Equal As Strings    ${resp.status_code}    200
191
192
193 Verify change logging level
194     ${logger}=    Set Variable    org.onap.dcaegen2.services.prh.controllers.AppInfoController
195     Change logging level    ${logger}    TRACE
196     Verify logging level    ${logger}    TRACE
197     Verify logs with heartbeat
198     [Teardown]    Change logging level    ${logger}    INFO
199
200 Change logging level
201     [Arguments]    ${logger}    ${log_level}
202     ${request_body}=    Create Dictionary    configuredLevel=${log_level}
203     ${resp}=    Post Request    prh_session    /actuator/loggers/${logger}    json=${request_body}
204     Should Be Equal As Integers    ${resp.status_code}    204
205
206 Verify logging level
207     [Arguments]    ${logger}    ${expected_log_level}
208     ${resp}=    Get Request    prh_session  /actuator/loggers/${logger}
209     Should Be Equal As Integers    ${resp.status_code}    200
210     Log    ${resp.content}
211     Should Be Equal As Strings   ${resp.json()["configuredLevel"]}    ${expected_log_level}    ignore_case=true
212
213 Verify logs with heartbeat
214     Get Request    prh_session    /heartbeat
215     Verify PRH logs contains    Heartbeat request received
216
217 Verify PRH logs contains
218    [Arguments]    ${expected_entry}
219    ${log}=    Get docker logs since test start    prh
220    Should Contain    ${log}    ${expected_entry}