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