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