c43b5dca805d05c334088e8bffd06e4e1c14080c
[policy/docker.git] / csit / resources / tests / common-library.robot
1 *** Settings ***
2 Library    Collections
3 Library    RequestsLibrary
4 Library    OperatingSystem
5 Library    json
6
7 *** Keywords ***
8
9 PolicyAdminAuth
10     ${policyadmin}=   Create list   policyadmin    zb!XztG34
11     [return]  ${policyadmin}
12
13 PerformPostRequest
14     [Arguments]  ${domain}  ${url}  ${expectedstatus}  ${postjson}  ${params}  ${auth}
15     Log  Creating session http://${domain}
16     ${session}=  Create Session  policy  http://${domain}  auth=${auth}
17     ${headers}=  Create Dictionary  Accept=application/json  Content-Type=application/json
18     ${resp}=  POST On Session  policy  ${url}  data=${postjson}  params=${params}  headers=${headers}  expected_status=${expectedstatus}
19     Log  Received response from policy ${resp.text}
20     [return]  ${resp}
21
22 PerformPutRequest
23     [Arguments]  ${domain}  ${url}  ${expectedstatus}  ${params}  ${auth}
24     Log  Creating session http://${domain}
25     ${session}=  Create Session  policy  http://${domain}  auth=${auth}
26     ${headers}=  Create Dictionary  Accept=application/json  Content-Type=application/json
27     ${resp}=  PUT On Session  policy  ${url}  params=${params}  headers=${headers}  expected_status=${expectedstatus}
28     Log  Received response from policy ${resp.text}
29     [return]  ${resp}
30
31 PerformGetRequest
32     [Arguments]  ${domain}  ${url}  ${expectedstatus}  ${params}  ${auth}
33     Log  Creating session http://${domain}
34     ${session}=  Create Session  policy  http://${domain}  auth=${auth}
35     ${headers}=  Create Dictionary  Accept=application/json  Content-Type=application/json
36     ${resp}=  GET On Session  policy  ${url}  params=${params}  headers=${headers}  expected_status=${expectedstatus}
37     Log  Received response from policy ${resp.text}
38     [return]  ${resp}
39
40 PerformDeleteRequest
41     [Arguments]  ${domain}  ${url}  ${expectedstatus}  ${auth}
42     Log  Creating session http://${domain}
43     ${session}=  Create Session  policy  http://${domain}  auth=${auth}
44     ${headers}=  Create Dictionary  Accept=application/json  Content-Type=application/json
45     ${resp}=  DELETE On Session  policy  ${url}  headers=${headers}  expected_status=${expectedstatus}
46     Log  Received response from policy ${resp.text}
47
48 CreatePolicy
49     [Arguments]  ${url}  ${expectedstatus}  ${postjson}  ${policyname}  ${policyversion}
50     [Documentation]  Create the specific policy
51     ${policyadmin}=  PolicyAdminAuth
52     ${resp}=  PerformPostRequest  ${POLICY_API_IP}  ${url}  ${expectedstatus}  ${postjson}  null  ${policyadmin}
53     Run Keyword If  ${expectedstatus}==200  Dictionary Should Contain Key  ${resp.json()['topology_template']['policies'][0]}  ${policyname}
54     Run Keyword If  ${expectedstatus}==200  Should Be Equal As Strings  ${resp.json()['topology_template']['policies'][0]['${policyname}']['version']}  ${policyversion}
55
56 CreateNodeTemplate
57     [Arguments]  ${url}  ${expectedstatus}  ${postjson}  ${nodeTemplateListLength}
58     [Documentation]  Create the node templates
59     ${policyadmin}=  PolicyAdminAuth
60     ${resp}=  PerformPostRequest  ${POLICY_API_IP}  ${url}  ${expectedstatus}  ${postjson}  \  ${policyadmin}
61     Run Keyword If  ${expectedstatus}==200  Length Should Be  ${resp.json()['topology_template']['node_templates']}  ${nodeTemplateListLength}
62
63
64 QueryPdpGroups
65     [Documentation]    Verify pdp group query - suphosts upto 2 groups
66     [Arguments]  ${groupsLength}  ${group1Name}  ${group1State}  ${policiesLengthInGroup1}  ${group2Name}  ${group2State}  ${policiesLengthInGroup2}
67     ${policyadmin}=  PolicyAdminAuth
68     ${resp}=  PerformGetRequest  ${POLICY_PAP_IP}  /policy/pap/v1/pdps  200  null  ${policyadmin}
69     Length Should Be  ${resp.json()['groups']}  ${groupsLength}
70     Should Be Equal As Strings  ${resp.json()['groups'][0]['name']}  ${group1Name}
71     Should Be Equal As Strings  ${resp.json()['groups'][0]['pdpGroupState']}  ${group1State}
72     Length Should Be  ${resp.json()['groups'][0]['pdpSubgroups'][0]['policies']}  ${policiesLengthInGroup1}
73     Run Keyword If  ${groupsLength}>1  Should Be Equal As Strings  ${resp.json()['groups'][1]['name']}  ${group2Name}
74     Run Keyword If  ${groupsLength}>1  Should Be Equal As Strings  ${resp.json()['groups'][1]['pdpGroupState']}  ${group2State}
75     Run Keyword If  ${groupsLength}>1  Length Should Be  ${resp.json()['groups'][1]['pdpSubgroups'][0]['policies']}  ${policiesLengthInGroup2}
76
77 QueryPolicyAudit
78     [Arguments]  ${url}  ${expectedstatus}  ${pdpGroup}  ${pdpType}  ${policyName}  ${expectedAction}
79     ${policyadmin}=  PolicyAdminAuth
80     ${resp}=  PerformGetRequest  ${POLICY_PAP_IP}  ${url}  ${expectedstatus}  recordCount=2   ${policyadmin}
81     Log  Received response from queryPolicyAudit ${resp.text}
82     FOR    ${responseEntry}    IN    @{resp.json()}
83     Exit For Loop IF      '${responseEntry['policy']['name']}'=='${policyName}'
84     END
85     Should Be Equal As Strings    ${responseEntry['pdpGroup']}  ${pdpGroup}
86     Should Be Equal As Strings    ${responseEntry['pdpType']}  ${pdpType}
87     Should Be Equal As Strings    ${responseEntry['policy']['name']}  ${policyName}
88     Should Be Equal As Strings    ${responseEntry['policy']['version']}  1.0.0
89     Should Be Equal As Strings    ${responseEntry['action']}  ${expectedAction}
90     Should Be Equal As Strings    ${responseEntry['user']}  policyadmin
91
92 QueryPolicyStatus
93     [Documentation]    Verify policy deployment status
94     [Arguments]  ${policyName}  ${pdpGroup}  ${pdpType}  ${pdpName}  ${policyTypeName}
95     ${policyadmin}=  PolicyAdminAuth
96     ${resp}=  PerformGetRequest  ${POLICY_PAP_IP}  /policy/pap/v1/policies/status  200  null   ${policyadmin}
97     FOR    ${responseEntry}    IN    @{resp.json()}
98     Exit For Loop IF      '${responseEntry['policy']['name']}'=='${policyName}'
99     END
100     Should Be Equal As Strings    ${resp.status_code}     200
101     Should Be Equal As Strings    ${responseEntry['pdpGroup']}  ${pdpGroup}
102     Should Be Equal As Strings    ${responseEntry['pdpType']}  ${pdpType}
103     Should Be Equal As Strings    ${responseEntry['pdpId']}  ${pdpName}
104     Should Be Equal As Strings    ${responseEntry['policy']['name']}  ${policyName}
105     Should Be Equal As Strings    ${responseEntry['policy']['version']}  1.0.0
106     Should Be Equal As Strings    ${responseEntry['policyType']['name']}  ${policyTypeName}
107     Should Be Equal As Strings    ${responseEntry['policyType']['version']}  1.0.0
108     Should Be Equal As Strings    ${responseEntry['deploy']}  True
109     Should Be Equal As Strings    ${responseEntry['state']}  SUCCESS
110
111 GetMetrics
112     [Arguments]  ${domain}  ${auth}  ${context_path}
113     Log  Creating session http://${domain}
114     ${session}=  Create Session  policy  http://${domain}  auth=${auth}
115     ${resp}=  GET On Session  policy  ${context_path}metrics  expected_status=200
116     Log  Received response from policy ${resp.text}
117     [return]  ${resp}
118
119 QueryPrometheus
120     [Arguments]  ${query}
121     ${params}=  Create Dictionary  query=${query}
122     ${resp}=  GET  http://${PROMETHEUS_IP}/api/v1/query  ${params}
123     Status Should Be    OK
124     Log  Received response from Prometheus ${resp.text}
125     [return]  ${resp.json()}
126
127 ValidateResponseTime
128     [Arguments]  ${job}  ${uri}  ${method}  ${timeLimit}
129     [Documentation]  Check if uri response is under the required time
130     ${resp}=  QueryPrometheus  http_server_requests_seconds_sum{uri="${uri}",method="${method}",job="${job}"}/http_server_requests_seconds_count{uri="${uri}",method="${method}",job="${job}"}
131     ${rawNumber}=  Evaluate  ${resp['data']['result'][0]['value'][1]}
132     ${actualTime}=   Set Variable  ${rawNumber * ${1000}}
133     Should Be True   ${actualTime} <= ${timeLimit}
134
135 GetTopic
136     [Arguments]    ${topic}
137     Create Session   session  http://${DMAAP_IP}   max_retries=1
138     ${params}=  Create Dictionary    limit    1    timeout    0
139     ${resp}=    GET On Session    session    /events/${topic}/script/1    ${params}
140     Status Should Be    OK    ${resp}
141
142 CheckTopic
143     [Arguments]    ${topic}    ${expected_status}
144     Create Session   session  http://${DMAAP_IP}   max_retries=1
145     ${params}=  Create Dictionary    limit    1
146     ${resp}=    GET On Session    session    /events/${topic}/script/1    ${params}
147     Log  Received response from dmaap ${resp.text}
148     Status Should Be    OK    ${resp}
149     Should Contain    ${resp.text}    ${expected_status}
150     [Return]    ${resp.text}