2 Documentation Mininet library. This library is useful for tests using mininet tool to simulate devices.
5 Variables ../variables/Variables.py
8 Start Mininet Single Controller
9 [Arguments] ${mininet}=${TOOLS_SYSTEM_IP} ${controller}=${ODL_SYSTEM_IP} ${options}=--topo tree,1 --switch ovsk,protocols=OpenFlow13 ${custom}=${EMPTY} ${ofport}=6633
10 [Documentation] Start Mininet with custom topology and connect to controller.
11 Log Clear any existing mininet
12 Clean Mininet System ${mininet}
13 ${mininet_conn_id}= Open Connection ${mininet} prompt=${TOOLS_SYSTEM_PROMPT} timeout=${DEFAULT_TIMEOUT}
14 Set Suite Variable ${mininet_conn_id}
15 Flexible Mininet Login
16 Run Keyword If '${custom}' != '${EMPTY}' Put File ${custom}
17 Log Start mininet ${options} to ${controller}
18 Write sudo mn --controller 'remote,ip=${controller},port=${ofport}' ${options}
20 ${output}= Run Command On Mininet ${mininet} sudo ovs-vsctl show
22 [Return] ${mininet_conn_id}
24 Start Mininet Multiple Controllers
25 [Arguments] ${mininet} ${controller_index_list} ${options}=--topo tree,1 --switch ovsk,protocols=OpenFlow13 ${custom}=${EMPTY} ${ofport}=6633
26 [Documentation] Start Mininet with custom topology and connect to all controllers in the ${controller_index_list}.
27 Log Clear any existing mininet
28 Clean Mininet System ${mininet}
29 ${mininet_conn_id}= Open Connection ${mininet} prompt=${TOOLS_SYSTEM_PROMPT} timeout=${DEFAULT_TIMEOUT}
30 Set Suite Variable ${mininet_conn_id}
31 Flexible Mininet Login
32 Run Keyword If '${custom}' != '${EMPTY}' Put File ${custom}
33 Log Start mininet ${options}
34 Write sudo mn ${options}
36 Log Create controller configuration
37 ${ovs_opt}= Set Variable
38 : FOR ${index} IN @{controller_index_list}
39 \ ${ovs_opt}= Catenate ${ovs_opt} ${SPACE}tcp:${ODL_SYSTEM_${index}_IP}:${ofport}
41 Log Find Number of OVS bridges
42 ${num_bridges} Run Command On Mininet ${mininet} sudo ovs-vsctl show | grep Bridge | wc -l
43 ${num_bridges}= Convert To Integer ${num_bridges}
44 Log Configure OVS controllers ${ovs_opt} in all bridges
45 : FOR ${i} IN RANGE 1 ${num_bridges+1}
46 \ ${bridge}= Run Command On Mininet ${mininet} sudo ovs-vsctl show | grep Bridge | cut -c 12- | sort | head -${i} | tail -1
47 \ Run Command On Mininet ${mininet} sudo ovs-vsctl set-controller ${bridge} ${ovs_opt}
48 Log Check OVS configuratiom
49 ${output}= Run Command On Mininet ${mininet} sudo ovs-vsctl show
51 [Return] ${mininet_conn_id}
53 Add Multiple Managers to OVS
54 [Arguments] ${mininet} ${controller_index_list} ${ovs_mgr_port}=6640
55 [Documentation] Start Mininet with custom topology and connect to all controllers in the ${controller_index_list}.
56 Log Clear any existing mininet
57 Clean Mininet System ${mininet}
58 ${mininet_conn_id}= Open Connection ${mininet} prompt=${TOOLS_SYSTEM_PROMPT} timeout=${DEFAULT_TIMEOUT}
59 Set Suite Variable ${mininet_conn_id}
60 Flexible Mininet Login
61 ${ovs_opt}= Set Variable
62 : FOR ${index} IN @{controller_index_list}
63 \ ${ovs_opt}= Catenate ${ovs_opt} ${SPACE}tcp:${ODL_SYSTEM_${index}_IP}:${ovs_mgr_port}
65 Log Configure OVS Managers in the OVS
66 Run Command On Mininet ${mininet} sudo ovs-vsctl set-manager ${ovs_opt}
67 Log Check OVS configuratiom
68 ${output}= Run Command On Mininet ${mininet} sudo ovs-vsctl show
70 [Return] ${mininet_conn_id}
73 [Arguments] ${mininet_conn_id} ${cmd}=help
74 [Documentation] Sends Command ${cmd} to Mininet session ${mininet_conn_id} and returns read buffer response.
75 Switch Connection ${mininet_conn_id}
76 SSHLibrary.Write ${cmd}
77 ${output}= Read Until mininet>
80 Send Mininet Command Multiple Sessions
81 [Arguments] ${mininet_conn_list} ${cmd}=help
82 [Documentation] Sends Command ${cmd} to Mininet sessions in ${mininet_conn_list} and returns list of read buffer responses.
83 ${output_list}= Create List
84 : FOR ${mininet_conn_id} IN @{mininet_conn_list}
85 \ ${output}= Send Mininet Command ${mininet_conn_id} ${cmd}
86 \ Append To List ${output_list} ${output}
87 [Return] ${output_list}
90 [Arguments] ${mininet_conn_id}
91 [Documentation] Stops Mininet and exits session ${mininet_conn_id}
92 Switch Connection ${mininet_conn_id}
94 Read Until ${TOOLS_SYSTEM_PROMPT}
97 Stop Mininet And Exit Multiple Sessions
98 [Arguments] ${mininet_conn_list}
99 [Documentation] Stops Mininet and exits sessions in ${mininet_conn_list}.
100 : FOR ${mininet_conn_id} IN @{mininet_conn_list}
101 \ Stop Mininet And Exit ${mininet_conn_id}