3 Resource ../Utils.robot
10 [Arguments] ${docker_name} ${dest_address} ${count}=1
11 [Documentation] Sends ICMP requests from docker container to remote address.
12 ${output} ${rc} SSHLibrary.Execute Command
13 ... docker exec ${docker_name} ping ${dest_address} -c ${count} >/dev/null 2>&1 && echo success
14 ... return_stdout=True return_stderr=False return_rc=True
15 Should Contain ${output} success
16 Should Be Equal As Numbers ${rc} 0
18 Start Endless Ping from Docker
19 [Arguments] ${docker_name} ${dest_address}
20 [Documentation] Starts endless ICMP pinging from docker container to remote address.
21 Ping from Docker ${docker_name} ${dest_address}
23 SSHLibrary.Execute Command docker exec -d ${docker_name} ping ${dest_address}
25 Start HTTP Service on Docker
26 [Arguments] ${docker_name} ${service_port}=80 ${timeout}=20s
27 [Documentation] Starts SimpleHTTPServer on docker container. Service port should be idle.
28 ${stdout} SSHLibrary.Execute Command docker exec ${docker_name} ps aux | grep 'SimpleHTTPServer ${service_port}'
29 ... return_stdout=True return_stderr=False return_rc=False
30 Should Be Empty ${stdout}
31 SSHLibrary.Write docker exec ${docker_name} python -m SimpleHTTPServer ${service_port} &
32 Wait Until Keyword Succeeds 2 min 5 sec Test Port On Docker ${docker_name} ${service_port}
34 Stop HTTP Service on Docker
35 [Arguments] ${docker_name} ${service_port}=80
36 [Documentation] Stops SimpleHTTPServer on docker container. Service port should not be idle.
37 ${stdout} SSHLibrary.Execute Command
38 ... docker exec ${docker_name} ps aux | grep 'SimpleHTTPServer ${service_port}' | awk '{print $2}'
39 ... return_stdout=True return_stderr=False return_rc=False
40 Should Not Be Empty ${stdout}
41 ${stdout} SSHLibrary.Execute Command docker exec ${docker_name} kill ${stdout}
42 ... return_stdout=True return_stderr=False return_rc=False
45 [Arguments] ${docker_name} ${dest_address} ${service_port}=80 ${connect_timeout}=2 ${retry}=3x ${retry_after}=1s
46 [Documentation] Sends HTTP request to remote server. Endless curl should not be running.
47 ${output} SSHLibrary.Execute Command docker exec ${docker_name} ls | grep curl_running
48 ... return_stdout=True return_stderr=False return_rc=False
49 Should Be Empty ${output}
50 Wait Until Keyword Succeeds ${retry} ${retry_after} Execute Curl ${docker_name} ${dest_address} ${service_port}
52 Start Endless Curl from Docker
53 [Arguments] ${docker_name} ${dest_address} ${service_port} ${retry_after}=1s ${retry}=5 ${timeout}=20s ${sleep}=1
54 [Documentation] Starts endless curl from docker container. Only one endless curl can be running on docker container.
55 ${output} SSHLibrary.Execute Command docker exec ${docker_name} ls | grep curl_running
56 ... return_stdout=True return_stderr=False return_rc=False
57 Should Be Empty ${output}
58 ${output} SSHLibrary.Execute Command docker exec ${docker_name} touch curl_running && echo success
59 ... return_stdout=True return_stderr=False return_rc=False
60 Should Contain ${output} success
61 Wait Until Keyword Succeeds ${retry} ${retry_after} Execute Curl
62 ... ${docker_name} ${dest_address} ${service_port} endless="TRUE" sleep=${sleep}
64 Stop Endless Curl from Docker
65 [Arguments] ${docker_name}
66 [Documentation] Stops endless curl from docker container. Endless curl should be running before stopping it.
67 ${output} SSHLibrary.Execute Command docker exec ${docker_name} ls | grep curl_running
68 ... return_stdout=True return_stderr=False return_rc=False
69 Should Not Be Empty ${output}
70 ${output} SSHLibrary.Execute Command docker exec ${docker_name} rm curl_running && echo success
71 ... return_stdout=True return_stderr=False return_rc=False
72 Should Contain ${output} success
74 Stop Endless Ping from Docker to Address
75 [Arguments] ${docker_name} ${dest_address}
76 [Documentation] Stops endless ping from docker to remote address. Endless ping session should be running before stopping it.
78 ${output} SSHLibrary.Execute Command docker exec ${docker_name} ps aux | grep 'ping ${dest_address}' | grep -v grep | awk '{print $2}'
79 ... return_stdout=True return_stderr=False return_rc=False
80 Should Not Be Empty ${output}
81 SSHLibrary.Execute Command docker exec ${docker_name} kill ${output}
82 ${output} SSHLibrary.Execute Command docker exec ${docker_name} ps aux | grep 'ping ${dest_address}' | grep -v grep | awk '{print $2}'
83 Should Be Empty ${output}
86 [Arguments] ${docker_name} ${service_port}
87 [Documentation] Tests if a service is running on service port.
88 ${out} SSHLibrary.Execute Command docker exec ${docker_name} nc -z -w 5 127.0.0.1 ${service_port} && echo 'opened'
89 Should Not Be Empty ${out}
92 [Arguments] ${docker_name} ${dest_address} ${service_port} ${endless}="FALSE" ${sleep}=1
93 [Documentation] Executes curl or curl loop for caller methods based on given parameters.
94 ${output} SSHLibrary.Execute Command docker exec ${docker_name} curl ${dest_address}:${service_port} >/dev/null 2>&1 && echo success
95 Should Contain ${output} success
96 Run Keyword If ${endless} == "TRUE"
97 ... SSHLibrary.Execute Command
98 ... docker exec -d ${docker_name} /bin/sh -c "while [ -f curl_running ]; do curl ${dest_address}:${service_port} ; sleep ${sleep}; done"