2 Documentation Test suite for Ring/Loop topology of size 3
3 Suite Setup Start Suite
4 Suite Teardown Utils.Stop Suite
5 Library RequestsLibrary
6 Resource ../../../libraries/Utils.robot
7 Variables ../../../variables/Variables.py
10 ${FORWARD} "stp-status-aware-node-connector:status":"forwarding"
11 ${DISCARD} "stp-status-aware-node-connector:status":"discarding"
14 Check Stats for node 1
15 [Documentation] Get the stats for a node
16 Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:1
18 Check Stats for node 2
19 [Documentation] Get the stats for a node
20 Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:2
22 Check Stats for node 3
23 [Documentation] Get the stats for a node
24 Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:3
27 [Documentation] Check all ports are present
28 @{list} Create List openflow:1:1 openflow:1:2 openflow:1:3 openflow:2:1 openflow:2:2
29 ... openflow:2:3 openflow:3:1 openflow:3:2 openflow:3:3
30 Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${OPERATIONAL_NODES_API} ${list}
32 Check Ports STP status
33 [Documentation] Check the stp status of the ports (forwarding/discarding)
34 Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${FORWARD} 4
35 Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${DISCARD} 2
38 [Documentation] Ping h1 to h2, verify no packet loss or duplicates
40 ${result} Read Until mininet>
41 Should Contain ${result} 1 received, 0% packet loss
42 Should Not Contain ${result} duplicates
45 [Documentation] Take link s1-s2 down and verify ping works
49 @{list} Create List ${DISCARD}
50 Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API} ${list}
52 ${result} Read Until mininet>
53 Should Contain ${result} received, 0% packet loss
54 Should Not Contain ${result} duplicates
57 [Documentation] Take link s1-s2 up and verify ping works
61 Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${FORWARD} 4
62 Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${DISCARD} 2
64 ${result} Read Until mininet>
65 Should Contain ${result} received, 0% packet loss
66 Should Not Contain ${result} duplicates
69 [Documentation] Remove port s1-eth2 and verify ping works
70 Write sh ovs-vsctl del-port s1 s1-eth2
72 @{list} Create List ${DISCARD}
73 Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API} ${list}
75 ${result} Read Until mininet>
76 Should Contain ${result} 64 bytes from 10.0.0.2
77 Should Not Contain ${result} duplicates
80 [Documentation] Add port s1-eth2 and verify ping works
81 Write sh ovs-vsctl add-port s1 s1-eth2 -- set interface s1-eth2 ofport=2
83 Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${FORWARD} 4
84 Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${DISCARD} 2
87 ${result} Read Until mininet>
88 Should Contain ${result} 64 bytes from 10.0.0.2
89 Should Not Contain ${result} duplicates
93 [Documentation] Open controller session & mininet connection and start mininet custom topo
94 Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
95 ${start}= Set Variable sudo mn --controller=remote,ip=${ODL_SYSTEM_IP} --custom customtopo.py --topo ring --switch ovsk,protocols=OpenFlow13
96 ${mininet_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} prompt=${DEFAULT_LINUX_PROMPT} timeout=30s
97 Set Suite Variable ${mininet_conn_id}
98 Login With Public Key ${TOOLS_SYSTEM_USER} ${USER_HOME}/.ssh/${SSH_KEY} any
99 Put File ${CURDIR}/../topologies/customtopo.py
100 Execute Command sudo ovs-vsctl set-manager ptcp:6644
101 Execute Command sudo mn -c