09a7de4f398505de2c1437c3fa06f622c7c26627
[integration/csit.git] / tests / dcaegen2-pmmapper / files-processing-config-pmmapper / files-processing-config-pmmapper.robot
1 *** Settings ***
2 Documentation     Testing PM Mapper functionality
3 Library           Collections
4 Library           OperatingSystem
5 Library           RequestsLibrary
6 Library           Process
7 Library           String
8 Library           libraries/DockerContainerManager.py
9 Library           libraries/LogReader.py
10
11 *** Variables ***
12
13 ${NR_VALID_METADATA_PATH}                %{WORKSPACE}/tests/dcaegen2-pmmapper/files-processing-config-pmmapper/assets/valid_metadata.json
14 ${CLI_EXEC_CLI_PM_LOG_CLEAR}             docker exec pmmapper /bin/sh -c "echo -n "" > /var/log/ONAP/dcaegen2/services/pm-mapper/pm-mapper_output.log"
15 ${PUBLISH_NODE_URL}                      https://${DR_NODE_IP}:8443/publish/1
16 ${CLI_EXEC_LOGS_LIST}                    docker exec datarouter-node /bin/sh -c "ls /opt/app/datartr/logs"
17 ${DOCKER_CLIENT_IMAGE}                   nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.pm-mapper:latest
18 ${CLIENT_CONTAINER_NAME}                 pmmapper
19 ${FILE_PATH}                             %{WORKSPACE}/tests/dcaegen2-pmmapper/files-processing-config-pmmapper/assets/ABigFile.xml
20 ${CONFIG_ENVS_1_1}                       %{WORKSPACE}/tests/dcaegen2-pmmapper/files-processing-config-pmmapper/assets/config_1_1.env
21 ${CONFIG_ENVS_4_1}                       %{WORKSPACE}/tests/dcaegen2-pmmapper/files-processing-config-pmmapper/assets/config_4_1.env
22 ${CONFIG_ENVS_10_1}                      %{WORKSPACE}/tests/dcaegen2-pmmapper/files-processing-config-pmmapper/assets/config_10_1.env
23 ${CONFIG_ENVS_1_10}                      %{WORKSPACE}/tests/dcaegen2-pmmapper/files-processing-config-pmmapper/assets/config_1_10.env
24
25 *** Test Cases ***
26
27 Verify that PM Mapper rejects 6-9 messages when limitRate is 1 and threads count is 1
28     [Tags]                          FILES_PROCESSING_CONFIG_PM_MAPPER_1
29     [Documentation]                 Verify that PM Mapper rejects 6-9/10 messages. Configuration: limitRate=1, threadsCount=1
30     [Timeout]                       15 minute
31
32     RestartPmmapper                 ${CONFIG_ENVS_1_1}
33
34     ${testname}=                    Set Variable                    Afirst-
35
36     SendFilesToDatarouter           ${testname}
37     ${alllogs}=                     GetLogsOutput
38     ${filtered_logs}=               GetFilteredLogs                 ${alllogs}                                    ${testname}
39     ${dropped_nr}=                  GetDroppedNumber                ${filtered_logs}
40
41     Sleep                           40s
42     ${isCorrectDroppedCount}=       Evaluate  ${5} < ${dropped_nr} < ${10}
43     SavePmMapperLogsAndDroppedCount  config_1_1  ${dropped_nr}
44     Should Be True                  ${isCorrectDroppedCount}  Pm-mapper drop: ${dropped_nr} messages. Expected drop count: 6-9
45     ClearLogs
46
47 Verify that PM Mapper rejects 0 messages when limitRate is 10 and threads count is 1
48     [Tags]                          FILES_PROCESSING_CONFIG_PM_MAPPER_2
49     [Documentation]                 Verify that PM Mapper rejects 0/10 messages. Configuration: limitRate=10, threadsCount=1
50     [Timeout]                       25 minute
51
52     RestartPmmapper                 ${CONFIG_ENVS_10_1}
53
54     ${testname}=                    Set Variable                    Athird-
55
56     SendFilesToDatarouter           ${testname}
57     ${alllogs}=                     GetLogsOutput
58     ${filtered_logs}=               GetFilteredLogs                 ${alllogs}                                    ${testname}
59     ${dropped_nr}=                  GetDroppedNumber                ${filtered_logs}
60
61     Sleep                           15s
62     SavePmMapperLogsAndDroppedCount  config_10_1  ${dropped_nr}
63     Should Be Equal As Numbers      ${dropped_nr}   0   Pm-mapper drop: ${dropped_nr} messages. Expected drop count: 0
64     ClearLogs
65
66 Verify that PM Mapper rejects 0 messages when limitRate is 1 and threads count is 10
67     [Tags]                          FILES_PROCESSING_CONFIG_PM_MAPPER_3
68     [Documentation]                 Verify that PM Mapper rejects 0/10 messages. Configuration: limitRate=1, threadsCount=10
69     [Timeout]                       25 minute
70
71     RestartPmmapper                 ${CONFIG_ENVS_1_10}
72
73     ${testname}=                    Set Variable                    Afourth-
74
75     SendFilesToDatarouter           ${testname}
76     ${alllogs}=                     GetLogsOutput
77     ${filtered_logs}=               GetFilteredLogs                 ${alllogs}                                    ${testname}
78     ${dropped_nr}=                  GetDroppedNumber                ${filtered_logs}
79
80     Sleep                           15s
81     SavePmMapperLogsAndDroppedCount  config_1_10  ${dropped_nr}
82     Should Be Equal As Numbers      ${dropped_nr}   0   Pm-mapper drop: ${dropped_nr} messages. Expected drop count: 0
83     ClearLogs
84
85 *** Keywords ***
86
87 SendFilesToDatarouter
88     [Arguments]                     ${testnr}
89     FOR                             ${i}                             IN RANGE                     10
90                                     SendToDatarouter                 ${FILE_PATH}                 ${NR_VALID_METADATA_PATH}                 X-ONAP-RequestID=${i}        ${testnr}         ${i}
91     END
92     Sleep                           20s
93
94 SendToDatarouter
95     [Arguments]                     ${filepath}                      ${metadatapath}            ${request_id}            ${testnr}      ${i}
96     ${pmdata}=                      Get File                         ${filepath}
97     ${metatdata}                    Get File                         ${metadatapath}
98     ${newFilename}                  Catenate                         SEPARATOR=                 ${testnr}               ${i}               .xml
99     ${resp}=                        PutCall                          ${PUBLISH_NODE_URL}/${newFilename}        ${request_id}    ${pmdata}    ${metatdata.replace("\n","")}    pmmapper
100     VerifyResponse                  ${resp.status_code}              204
101
102 PutCall
103     [Arguments]                     ${url}                           ${request_id}              ${data}            ${meta}          ${user}
104     ${headers}=                     Create Dictionary                X-ONAP-RequestID=${request_id}                X-DMAAP-DR-META=${meta}    Content-Type=application/octet-stream     X-DMAAP-DR-ON-BEHALF-OF=${user}    Authorization=Basic cG1tYXBwZXI6cG1tYXBwZXI=
105     ${resp}=                        Evaluate                         requests.put('${url}', data="""${data}""", headers=${headers}, verify=False, allow_redirects=False)    requests
106     [Return]                        ${resp}
107
108 VerifyResponse
109     [Arguments]                     ${actual_response_value}         ${expected_response_value}
110     Should Be Equal As Strings      ${actual_response_value}         ${expected_response_value}
111
112 ClearLogs
113     Run Process                     ${CLI_EXEC_CLI_PM_LOG_CLEAR}                     shell=yes
114
115 GetLogsOutput
116     ${filesString}=                   Run Process                      ${CLI_EXEC_LOGS_LIST}                     shell=yes
117     ${filesList}=                     Get Log Files List               ${filesString.stdout}
118     ${output}=                        Set Variable                     ${EMPTY}
119     FOR                               ${file}                          IN                                        @{filesList}
120                                       ${file_path}=                    Catenate                                  SEPARATOR=    "cat /opt/app/datartr/logs/      ${file}       "
121                                       ${exec}=                         Catenate                                  docker exec datarouter-node /bin/sh -c      ${file_path}
122                                       ${single_file}=                  Run Process                               ${exec}         shell=yes
123                                       ${output}=                       Catenate                                  SEPARATOR=\n         ${output}                  ${single_file.stdout}
124     END
125     [Return]                          ${output}
126
127 GetFilteredLogs
128     [Arguments]                       ${all_logs}                      ${testname}
129     ${filtered_logs}=                 Filter Unique                    ${all_logs}                               ${testname}
130     [Return]                          ${filtered_logs}
131
132 GetDroppedNumber
133     [Arguments]                       ${logs_output}
134     ${number}=                        Get Number Of Dropped Messages  ${logs_output}
135     [Return]                          ${number}
136
137 RestartPmmapper
138     [Arguments]                       ${envs}
139     Remove Container                  ${CLIENT_CONTAINER_NAME}
140     Sleep                             5s
141     Run Pmmapper Container            ${DOCKER_CLIENT_IMAGE}      ${CLIENT_CONTAINER_NAME}        ${envs}        ${DR_NODE_IP}          ${NODE_IP}
142     Sleep                             15s
143
144 SavePmMapperLogsAndDroppedCount
145     [Arguments]                       ${test_name}                ${dropped_count}
146     Run Process                      echo "Dropped: ${dropped_count}" > %{WORKSPACE}/archives/${test_name}_dropped_count.log  shell=yes
147     Run Process                      docker logs ${CLIENT_CONTAINER_NAME} > %{WORKSPACE}/archives/${test_name}_pm_mapper_container_logs.log  shell=yes
148