Get rid of deprecation warnings
[integration/test.git] / csit / libraries / GBP / DockerUtils.robot
1 *** Settings ***
2 Library     SSHLibrary
3
4
5 *** Keywords ***
6 Ping from Docker
7     [Documentation]    Sends ICMP requests from docker container to remote address.
8     [Arguments]    ${docker_name}    ${dest_address}    ${count}=1
9     ${output}    ${rc}    SSHLibrary.Execute Command
10     ...    docker exec ${docker_name} ping ${dest_address} -c ${count} >/dev/null 2>&1 && echo success
11     ...    return_stdout=True
12     ...    return_stderr=False
13     ...    return_rc=True
14     Should Contain    ${output}    success
15     Should Be Equal As Numbers    ${rc}    0
16
17 Start Endless Ping from Docker
18     [Documentation]    Starts endless ICMP pinging from docker container to remote address.
19     [Arguments]    ${docker_name}    ${dest_address}
20     Ping from Docker    ${docker_name}    ${dest_address}
21     SSHLibrary.Execute Command    docker exec -d ${docker_name} ping ${dest_address}
22
23 Start HTTP Service on Docker
24     [Documentation]    Starts SimpleHTTPServer on docker container. Service port should be idle.
25     [Arguments]    ${docker_name}    ${service_port}=80    ${timeout}=20s
26     ${stdout}    SSHLibrary.Execute Command
27     ...    docker exec ${docker_name} ps aux | grep 'SimpleHTTPServer ${service_port}'
28     ...    return_stdout=True
29     ...    return_stderr=False
30     ...    return_rc=False
31     Should Be Empty    ${stdout}
32     SSHLibrary.Write    docker exec ${docker_name} python -m SimpleHTTPServer ${service_port} &
33     Wait Until Keyword Succeeds    2 min    5 sec    Test Port On Docker    ${docker_name}    ${service_port}
34
35 Stop HTTP Service on Docker
36     [Documentation]    Stops SimpleHTTPServer on docker container. Service port should not be idle.
37     [Arguments]    ${docker_name}    ${service_port}=80
38     ${stdout}    SSHLibrary.Execute Command
39     ...    docker exec ${docker_name} ps aux | grep 'SimpleHTTPServer ${service_port}' | awk '{print $2}'
40     ...    return_stdout=True
41     ...    return_stderr=False
42     ...    return_rc=False
43     Should Not Be Empty    ${stdout}
44     ${stdout}    SSHLibrary.Execute Command
45     ...    docker exec ${docker_name} kill ${stdout}
46     ...    return_stdout=True
47     ...    return_stderr=False
48     ...    return_rc=False
49
50 Curl from Docker
51     [Documentation]    Sends HTTP request to remote server. Endless curl should not be running.
52     [Arguments]    ${docker_name}    ${dest_address}    ${service_port}=80    ${connect_timeout}=2    ${retry}=5x    ${retry_after}=1s
53     ${output}    SSHLibrary.Execute Command
54     ...    docker exec ${docker_name} ls | grep curl_running
55     ...    return_stdout=True
56     ...    return_stderr=False
57     ...    return_rc=False
58     Should Be Empty    ${output}
59     Wait Until Keyword Succeeds
60     ...    ${retry}
61     ...    ${retry_after}
62     ...    Execute Curl
63     ...    ${docker_name}
64     ...    ${dest_address}
65     ...    ${service_port}
66
67 Start Endless Curl from Docker
68     [Documentation]    Starts endless curl from docker container. Only one endless curl can be running on docker container.
69     [Arguments]    ${docker_name}    ${dest_address}    ${service_port}    ${retry_after}=1s    ${retry}=5    ${timeout}=20s
70     ...    ${sleep}=1
71     ${output}    SSHLibrary.Execute Command
72     ...    docker exec ${docker_name} ls | grep curl_running
73     ...    return_stdout=True
74     ...    return_stderr=False
75     ...    return_rc=False
76     Should Be Empty    ${output}
77     ${output}    SSHLibrary.Execute Command
78     ...    docker exec ${docker_name} touch curl_running && echo success
79     ...    return_stdout=True
80     ...    return_stderr=False
81     ...    return_rc=False
82     Should Contain    ${output}    success
83     Execute Curl    ${docker_name}    ${dest_address}    ${service_port}    endless="TRUE"
84
85 Stop Endless Curl from Docker
86     [Documentation]    Stops endless curl from docker container. Endless curl should be running before stopping it.
87     [Arguments]    ${docker_name}
88     ${output}    SSHLibrary.Execute Command
89     ...    docker exec ${docker_name} ls | grep curl_running
90     ...    return_stdout=True
91     ...    return_stderr=False
92     ...    return_rc=False
93     Should Not Be Empty    ${output}
94     ${output}    SSHLibrary.Execute Command
95     ...    docker exec ${docker_name} rm curl_running && echo success
96     ...    return_stdout=True
97     ...    return_stderr=False
98     ...    return_rc=False
99     Should Contain    ${output}    success
100
101 Stop Endless Ping from Docker to Address
102     [Documentation]    Stops endless ping from docker to remote address. Endless ping session should be running before stopping it.
103     [Arguments]    ${docker_name}    ${dest_address}
104     ${output}    SSHLibrary.Execute Command
105     ...    docker exec ${docker_name} ps aux | grep 'ping ${dest_address}' | grep -v grep | awk '{print $2}'
106     ...    return_stdout=True
107     ...    return_stderr=False
108     ...    return_rc=False
109     Should Not Be Empty    ${output}
110     SSHLibrary.Execute Command    docker exec ${docker_name} kill ${output}
111     ${output}    SSHLibrary.Execute Command
112     ...    docker exec ${docker_name} ps aux | grep 'ping ${dest_address}' | grep -v grep | awk '{print $2}'
113     Should Be Empty    ${output}
114
115 Test Port On Docker
116     [Documentation]    Tests if a service is running on service port.
117     [Arguments]    ${docker_name}    ${service_port}
118     ${out}    SSHLibrary.Execute Command
119     ...    docker exec ${docker_name} nc -z -w 5 127.0.0.1 ${service_port} && echo 'opened'
120     Should Not Be Empty    ${out}
121
122 Execute Curl
123     [Documentation]    Executes curl or curl loop for caller methods based on given parameters.
124     [Arguments]    ${docker_name}    ${dest_address}    ${service_port}    ${endless}="FALSE"    ${sleep}=1
125     IF    ${endless} == "TRUE"
126         SSHLibrary.Execute Command
127         ...    docker exec -d ${docker_name} /bin/sh -c "while [ -f curl_running ]; do curl ${dest_address}:${service_port} -m 1 && sleep ${sleep}; done"
128         RETURN
129     END
130     ${output}    SSHLibrary.Execute Command
131     ...    docker exec ${docker_name} curl ${dest_address}:${service_port} -m 5 >/dev/null 2>&1 && echo success
132     Should Contain    ${output}    success