Initial works for OF cluster test
[integration/test.git] / csit / libraries / MininetKeywords.robot
1 *** Settings ***
2 Library           SSHLibrary
3 Resource          Utils.robot
4 Variables         ../variables/Variables.py
5
6 *** Keywords ***
7 Start Mininet Single Controller
8     [Arguments]    ${mininet}=${TOOLS_SYSTEM_IP}    ${controller}=${ODL_SYSTEM_IP}    ${options}=--topo tree,1 --switch ovsk,protocols=OpenFlow13    ${custom}=${EMPTY}    ${ofport}=6633
9     [Documentation]    Start Mininet with custom topology and connect to controller.
10     Log    Clear any existing mininet
11     Clean Mininet System    ${mininet}
12     ${mininet_conn_id}=    Open Connection    ${mininet}    prompt=${TOOLS_SYSTEM_PROMPT}    timeout=${DEFAULT_TIMEOUT}
13     Set Suite Variable    ${mininet_conn_id}
14     Flexible Mininet Login
15     Run Keyword If    '${custom}' != '${EMPTY}'    Put File    ${custom}
16     Log    Start mininet ${options} to ${controller}
17     Write    sudo mn --controller 'remote,ip=${controller},port=${ofport}' ${options}
18     Read Until    mininet>
19     ${output}=    Run Command On Mininet    ${mininet}    sudo ovs-vsctl show
20     Log    ${output}
21     [Return]    ${mininet_conn_id}
22
23 Start Mininet Multiple Controllers
24     [Arguments]    ${mininet}    ${controller_index_list}    ${options}=--topo tree,1 --switch ovsk,protocols=OpenFlow13    ${custom}=${EMPTY}    ${ofport}=6633
25     [Documentation]    Start Mininet with custom topology and connect to all controllers in the ${controller_index_list}.
26     Log    Clear any existing mininet
27     Clean Mininet System    ${mininet}
28     ${mininet_conn_id}=    Open Connection    ${mininet}    prompt=${TOOLS_SYSTEM_PROMPT}    timeout=${DEFAULT_TIMEOUT}
29     Set Suite Variable    ${mininet_conn_id}
30     Flexible Mininet Login
31     Run Keyword If    '${custom}' != '${EMPTY}'    Put File    ${custom}
32     Log    Start mininet ${options}
33     Write    sudo mn ${options}
34     Read Until    mininet>
35     Log    Create controller configuration
36     ${ovs_opt}=    Set Variable
37     : FOR    ${index}    IN    @{controller_index_list}
38     \    ${ovs_opt}=    Catenate    ${ovs_opt}    ${SPACE}tcp:${ODL_SYSTEM_${index}_IP}:${ofport}
39     \    Log    ${ovs_opt}
40     Log    Find Number of OVS bridges
41     ${num_bridges}    Run Command On Mininet    ${mininet}    sudo ovs-vsctl show | grep Bridge | wc -l
42     ${num_bridges}=    Convert To Integer    ${num_bridges}
43     Log    Configure OVS controllers ${ovs_opt} in all bridges
44     : FOR    ${i}    IN RANGE    1    ${num_bridges+1}
45     \    ${bridge}=    Run Command On Mininet    ${mininet}    sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1
46     \    Run Command On Mininet    ${mininet}    sudo ovs-vsctl set-controller ${bridge} ${ovs_opt}
47     Log    Check OVS configuratiom
48     ${output}=    Run Command On Mininet    ${mininet}    sudo ovs-vsctl show
49     Log    ${output}
50     [Return]    ${mininet_conn_id}
51
52 Send Mininet Command
53     [Arguments]    ${mininet_conn_id}    ${cmd}=help
54     [Documentation]    Sends Command ${cmd} to Mininet session ${mininet_conn_id} and returns read buffer response.
55     Switch Connection    ${mininet_conn_id}
56     SSHLibrary.Write    ${cmd}
57     ${output}=    Read Until    mininet>
58     [Return]    ${output}
59
60 Send Mininet Command Multiple Sessions
61     [Arguments]    ${mininet_conn_list}    ${cmd}=help
62     [Documentation]    Sends Command ${cmd} to Mininet sessions in ${mininet_conn_list} and returns list of read buffer responses.
63     ${output_list}=    Create List
64     : FOR    ${mininet_conn_id}    IN    @{mininet_conn_list}
65     \    ${output}=    Send Mininet Command    ${mininet_conn_id}    ${cmd}
66     \    Append To List    ${output_list}    ${output}
67     [Return]    ${output_list}
68
69 Stop Mininet And Exit
70     [Arguments]    ${mininet_conn_id}
71     [Documentation]    Stops Mininet and exits session ${mininet_conn_id}
72     Switch Connection    ${mininet_conn_id}
73     SSHLibrary.Write    exit
74     Read Until    ${TOOLS_SYSTEM_PROMPT}
75     Close Connection
76
77 Stop Mininet And Exit Multiple Sessions
78     [Arguments]    ${mininet_conn_list}
79     [Documentation]    Stops Mininet and exits sessions in ${mininet_conn_list}.
80     : FOR    ${mininet_conn_id}    IN    @{mininet_conn_list}
81     \    Stop Mininet And Exit    ${mininet_conn_id}