Add CSIT for son-handler
[integration/csit.git] / tests / dcaegen2-services-son-handler / testcases / sonhandler-test.robot
1 *** Settings ***
2 Library           Collections
3 Library           Process
4 Library           RequestsLibrary
5 Library           String
6 Library           OperatingSystem
7
8 Suite Teardown  Delete All Sessions
9
10 *** Variables ***
11 ${SON_HANDLER_BASE_URL}                   http://${SONHMS_IP}:8080
12 ${HEALTHCHECK_ENDPOINT}                   /healthcheck
13 ${DMAAP_URL}                              http://${DMAAP_IP}:3904/events
14 ${unauthenticated.DCAE_CL_OUTPUT}         /unauthenticated.DCAE_CL_OUTPUT/23/23
15 ${POST_DMAAP_EVENT_FOR_FM_NOTIF_URL}      http://${DMAAP_IP}:3904/events/unauthenticated.SEC_FAULT_OUTPUT
16 ${POST_DMAAP_EVENT_FOR_PM_NOTIF_URL}      http://${DMAAP_IP}:3904/events/unauthenticated.VES_MEASUREMENT_OUTPUT
17 ${POST_DMAAP_EVENT_FOR_POLICY_RESPONSE}   http://${DMAAP_IP}:3904/events/DCAE_CL_RSP
18
19 *** Test Cases ***
20
21 HealthCheck
22
23         Create Session  sonhms  ${SON_HANDLER_BASE_URL}
24         ${resp}=  Get Request   sonhms  ${HEALTHCHECK_ENDPOINT}
25         Should Be Equal As Strings  ${resp.status_code}  200
26
27
28 Post fm notification to dmaap
29         Create Session  dmaap  ${DMAAP_URL}
30         ${headers}=    Create Dictionary    Content-Type    application/json
31         ${data}=   Get File      ${TEST_ROBOT_DIR}/data/fault_notification.json
32         ${response}=    Evaluate    requests.post('${POST_DMAAP_EVENT_FOR_FM_NOTIF_URL}', data=$data)
33         Should Be Equal As Strings  ${response.status_code}  200
34
35
36 Verify fm notification trigger in sonhms
37         Create Session  dmaap  ${DMAAP_URL}
38         FOR    ${i}    IN RANGE   10
39                 ${result}=  Get Request  dmaap   ${unauthenticated.DCAE_CL_OUTPUT}
40                 Exit For Loop If    ${result.json()} != @{EMPTY}
41                 Log     Waiting for sonhms to handle trigger...         console=${True}
42                 Sleep   30s
43         END
44         ${expected_payload}=   Get File            ${TEST_ROBOT_DIR}/data/expected_payload_fm.json
45         ${result}=  Convert To String  ${result.content}
46         ${result_string}=    Get Substring    ${result}    2    -2
47         ${actual_data}=    Evaluate     json.loads("""${result_string}""")    json
48         ${actual_payload}=    Set Variable     ${actual_data['payload']}
49         Should Be True   """${actual_payload}""".strip() == """${expected_payload}""".strip()
50
51
52 Post pm notification to dmaap
53         ${data}=   Get File      ${TEST_ROBOT_DIR}/data/performance_notification.json
54         ${response}=    Evaluate    requests.post('${POST_DMAAP_EVENT_FOR_PM_NOTIF_URL}', data=$data)
55         Should Be Equal As Strings  ${response.status_code}  200
56
57
58 Verify pm notification trigger in sonhms
59         Create Session  dmaap  ${DMAAP_URL}
60         FOR    ${i}    IN RANGE   5
61                 ${result}=  Get Request  dmaap   ${unauthenticated.DCAE_CL_OUTPUT}
62                 Exit For Loop If    ${result.json()} != @{EMPTY}
63                 Log     Waiting for sonhms to handle trigger...         console=${True}
64                 Sleep   30s
65         END
66         ${expected_payload}=   Get File            ${TEST_ROBOT_DIR}/data/expected_payload_pm.json
67         ${result}=  Convert To String  ${result.content}
68         ${result_string}=    Get Substring    ${result}    2    -2
69         ${actual_data}=    Evaluate     json.loads("""${result_string}""")    json
70         ${actual_payload}=    Set Variable     ${actual_data['payload']}
71         Should Be True   """${actual_payload}""".strip() == """${expected_payload}""".strip()
72
73
74 Post policy negative acknowledgement to dmaap
75         ${data}=   Get File      ${TEST_ROBOT_DIR}/data/negative_ack_from_policy.json
76         FOR    ${i}    IN RANGE   3
77            ${response}=    Evaluate    requests.post('${POST_DMAAP_EVENT_FOR_POLICY_RESPONSE}', data=$data)
78         END
79         Should Be Equal As Strings  ${response.status_code}  200
80
81
82 Oof trigger for fixed Pci cells
83         Create Session  dmaap  ${DMAAP_URL}
84         FOR    ${i}    IN RANGE   15
85                 ${result}=  Get Request  dmaap   ${unauthenticated.DCAE_CL_OUTPUT}
86                 Exit For Loop If    ${result.json()} != @{EMPTY}
87                 Log     Waiting for sonhms to handle trigger...         console=${True}
88                 Sleep   30s
89         END
90         ${expected_payload}=   Get File    ${TEST_ROBOT_DIR}/data/expected_payload_fm.json
91         ${result}=  Convert To String  ${result.content}
92         ${result_string}=    Get Substring    ${result}    2    -2
93         ${actual_data}=    Evaluate     json.loads("""${result_string}""")    json
94         ${actual_payload}=    Set Variable     ${actual_data['payload']}
95         Should Be True   """${actual_payload}""".strip() == """${expected_payload}""".strip()