Merge "Bbs tests improvements"
[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 Until Keyword Succeeds    10x    3000ms    Check PRH json log    ${error_msg}    ${notification}
40
41 Verify incorrect JSON event is logged
42     [Timeout]    60s
43     [Arguments]    ${test_case_directory}
44     ${invalid_ves_event}=    Get Data From File    ${test_case_directory}/invalid-ves-event.json
45     Set VES event in DMaaP    ${invalid_ves_event}
46     Check PRH log    |WARN    |Incorrect json, consumerDmaapModel can not be created:
47
48 Verify missing AAI record is logged
49     [Timeout]    100s
50     [Arguments]    ${test_case_directory}
51     ${incorrect_aai_entry}=    Get Data From File    ${test_case_directory}/incorrect-aai-entry.json
52     ${ves_event}=    Get Data From File    ${test_case_directory}/ves-event.json
53     Add PNF entry in AAI    ${incorrect_aai_entry}
54     Set VES event in DMaaP    ${ves_event}
55     Check PRH log    Request failed for URL 'https://aai:3334/aai/v12/network/pnfs/pnf/NOK6061ZW8'. Response code: 404 Not Found
56
57 Verify AAI not responding is logged
58     [Timeout]    100s
59     [Arguments]    ${test_case_directory}
60     ${ves_event}=    Get Data From File    ${test_case_directory}/ves-event.json
61     Ensure Container Is Exited    aai_simulator
62     Set VES event in DMaaP    ${ves_event}
63     Check PRH log    connection timed out: aai    Host is unreachable: aai
64     Ensure Container Is Running   aai_simulator
65
66 Verify PNF re registration
67     [Timeout]    500s
68     [Arguments]    ${test_case_directory}
69     ${aai_entry}=    Get Data From File    ${test_case_directory}/aai-entry.json
70     Log    PNF Re-registration: AAI entry for AAI Simulator ${aai_entry}
71     Add PNF entry in AAI    ${aai_entry}
72     ${service_instance}=    Get Data From File    ${test_case_directory}/aai-entry-service-instance.json
73     Add service instance entry in AAI    ${service_instance}
74     ${logical_link}=    Get Data From File    ${test_case_directory}/logical-link.json
75     Add logical link entry in AAI    ${logical_link}
76
77     ${ves_event}=    Get Data From File    ${test_case_directory}/ves-event.json
78     Set VES event in DMaaP    ${ves_event}
79     ${expected_pnf_update_event}=    Get Data From File    ${test_case_directory}/expected-pnf-update-event.json
80     Wait Until Keyword Succeeds    10x    3000ms    Check created PNF_UPDATE notification    ${expected_pnf_update_event}
81     Wait Until Keyword Succeeds    10x    3000ms    Check logical link not modified    ${test_case_directory}
82
83 Verify PNF ready sent when service instance non active
84     [Arguments]    ${test_case_directory}
85     ${pnf_entry}=    Get Data From File    ${test_case_directory}/aai-entry.json
86     ${ves_event}=    Get Data From File    ${test_case_directory}/ves-event.json
87     ${expected_pnf_ready_event}=    Get Data From File    ${test_case_directory}/expected-pnf-ready-event.json
88     ${service_instance}=    Get Data From File    ${test_case_directory}/aai-entry-service-instance.json
89     Add PNF entry in AAI    ${pnf_entry}
90     Add service instance entry in AAI    ${service_instance}
91
92     Set VES event in DMaaP    ${ves_event}
93     Wait Until Keyword Succeeds    10x    3000ms    Check CBS ready
94     Wait Until Keyword Succeeds    10x    3000ms    Check created PNF_READY notification    ${expected_pnf_ready_event}
95
96 Check logical link not modified
97     [Arguments]    ${test_case_directory}
98     ${expected_logical_link}=    Get Data From File  ${test_case_directory}/logical-link.json
99     ${existing_logical_link}=    Get Request    ${aai_session}    /verify/logical-link    headers=${suite_headers}
100     Should Be Equal As JSON  ${expected_logical_link}    ${existing_logical_link.content}
101
102 Check CBS ready
103     ${resp}=    Get Request    ${consul_session}    /v1/catalog/services
104     Should Be Equal As Strings    ${resp.status_code}    200
105     Log    Service Catalog response: ${resp.content}
106     Dictionary Should Contain Key    ${resp.json()}    cbs    |Consul service catalog should contain CBS entry
107
108 Check created PNF_READY notification
109     [Arguments]    ${expected_event_pnf_ready_in_dmaap}
110     ${resp}=    Get Request    ${dmaap_session}    /verify/pnf_ready    headers=${suite_headers}
111     Should Be Equal As Strings    ${resp.status_code}    200
112     Should Be Equal As JSON    ${resp.content}    ${expected_event_pnf_ready_in_dmaap}
113
114 Check created PNF_UPDATE notification
115     [Arguments]    ${expected_event_pnf_update_in_dmaap}
116     ${resp}=    Get Request    ${dmaap_session}    /verify/pnf_update    headers=${suite_headers}
117     Log    Response from DMaaP: ${resp.content}
118     Should Be Equal As Strings    ${resp.status_code}    200
119     Should Be Equal As JSON    ${resp.content}    ${expected_event_pnf_update_in_dmaap}
120
121 Check created Logical Link
122     [Arguments]    ${expected_logical_link_in_aai}
123     ${resp}=    Get Request    ${aai_session}    /verify/logical-link    headers=${suite_headers}
124     Should Be Equal As Strings    ${resp.status_code}    200
125     Should Be Equal As JSON    ${resp.content}    ${expected_logical_link_in_aai}
126
127 Check PRH log
128     [Arguments]    @{log_entries}
129     ${found}=    Find one of log entryies    ${log_entries}
130     Should Be True    ${found}
131
132 Check PRH json log
133     [Arguments]    ${prefix}    ${json}
134     ${found}=    Find log json    ${prefix}    ${json}
135     Should Be True    ${found}
136
137 Create event parsing error
138     [Arguments]    ${ves_event}
139     ${notification}=    Create invalid notification    ${ves_event}
140     ${error_msg}=    Catenate    SEPARATOR= \\n    |Incorrect json, consumerDmaapModel can not be created:     ${notification}
141     [Return]    ${error_msg}
142
143 Add PNF entry in AAI
144     [Arguments]    ${pnf_entry}
145     ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
146     Log    AAI url ${AAI_SIMULATOR_SETUP_URL}
147     ${resp}=    Put Request    ${aai_session}    /setup/add_pnf_entry    headers=${suite_headers}    data=${pnf_entry}
148     Should Be Equal As Strings    ${resp.status_code}    200
149
150 Add service instance entry in AAI
151     [Arguments]    ${aai_service_instance}
152     ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
153     Log    AAI url ${AAI_SIMULATOR_SETUP_URL}
154     ${resp}=    Put Request    ${aai_session}    /setup/add_service_instace    headers=${suite_headers}    data=${aai_service_instance}
155     Should Be Equal As Strings    ${resp.status_code}    200
156
157 Add logical link entry in AAI
158     [Arguments]  ${logical_link}
159     ${headers}=    Create Dictionary    Accept=application/json    Content-Type=application/json
160     Log    AAI url ${AAI_SIMULATOR_SETUP_URL}
161     ${resp}=    Put Request    ${aai_session}    /setup/add_logical_link    headers=${suite_headers}    data=${logical_link}
162     Should Be Equal As Strings    ${resp.status_code}    200
163
164 Set VES event in DMaaP
165     [Arguments]    ${ves_event}
166     ${resp}=    Put Request    ${dmaap_session}    /setup/ves_event    headers=${suite_headers}    data=${ves_event}
167     Should Be Equal As Strings    ${resp.status_code}    200
168
169 Should Be Equal As JSON
170     [Arguments]    ${actual}    ${expected}
171     Log    EXPECTED: ${expected}
172     Log    ACTUAL: ${actual}
173     ${expected_json}=    Evaluate    json.loads("""${expected}""")    json
174     ${actual_json}=    Evaluate    json.loads("""${actual}""")    json
175     Should Be Equal    ${actual_json}    ${expected_json}
176
177 Reset Simulators
178     Reset AAI simulator
179     Reset DMaaP simulator
180
181 Reset AAI simulator
182     ${resp}=    Post Request     ${aai_session}    /reset
183     Should Be Equal As Strings    ${resp.status_code}    200
184
185 Reset DMaaP simulator
186     ${resp}=    Post Request     ${dmaap_session}    /reset
187     Should Be Equal As Strings    ${resp.status_code}    200
188
189
190 Verify change logging level
191     ${logger}=    Set Variable    org.onap.dcaegen2.services.prh.controllers.AppInfoController
192     Change logging level    ${logger}    TRACE
193     Verify logging level    ${logger}    TRACE
194     Verify logs with heartbeat
195     [Teardown]    Change logging level    ${logger}    INFO
196
197 Change logging level
198     [Arguments]    ${logger}    ${log_level}
199     ${request_body}=    Create Dictionary    configuredLevel=${log_level}
200     ${resp}=    Post Request    prh_session    /actuator/loggers/${logger}    json=${request_body}
201     Should Be Equal As Integers    ${resp.status_code}    204
202
203 Verify logging level
204     [Arguments]    ${logger}    ${expected_log_level}
205     ${resp}=    Get Request    prh_session  /actuator/loggers/${logger}
206     Should Be Equal As Integers    ${resp.status_code}    200
207     Log    ${resp.content}
208     Should Be Equal As Strings   ${resp.json()["configuredLevel"]}    ${expected_log_level}    ignore_case=true
209
210 Verify logs with heartbeat
211     Get Request    prh_session    /heartbeat
212     Check PRH log   Heartbeat request received