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