*** Test Cases ***
Check Stats for node 1
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:1
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:1
Check Stats for node 2
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:2
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:2
Check Stats for node 3
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:3
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:3
Check No Host Is Present
[Documentation] Get the invnetory, should not contain any host address
@{list} Create List ${IP_1} ${IP_2} ${IP_3}
- Wait Until Keyword Succeeds 30s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API} ${list}
+ Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API} ${list}
Ping All
[Documentation] Pingall, verify no packet loss
Check node 1 addresses
[Documentation] Get the address observations for node 1
@{list} Create List ${IP_2} ${IP_3}
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API}/node/openflow:1 ${IP_1} 1
- Wait Until Keyword Succeeds 30s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API}/node/openflow:1 ${list}
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API}/node/openflow:1 ${IP_1} 1
+ Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API}/node/openflow:1 ${list}
Check node 2 addresses
[Documentation] Get the address observations for node 2
@{list} Create List ${IP_1} ${IP_3}
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API}/node/openflow:2 ${IP_2} 1
- Wait Until Keyword Succeeds 30s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API}/node/openflow:2 ${list}
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API}/node/openflow:2 ${IP_2} 1
+ Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API}/node/openflow:2 ${list}
Check node 3 addresses
[Documentation] Get the address observations for node 3
@{list} Create List ${IP_1} ${IP_2}
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API}/node/openflow:3 ${IP_3} 1
- Wait Until Keyword Succeeds 30s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API}/node/openflow:3 ${list}
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API}/node/openflow:3 ${IP_3} 1
+ Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API}/node/openflow:3 ${list}
*** Test Cases ***
Check Stats for node 1
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:1
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:1
Check Stats for node 2
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:2
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:2
Check Stats for node 3
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:3
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:3
Check Flows
[Documentation] Check all flows are present
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} "output-node-connector" 21
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} "output-node-connector" 21
Ping All Test
[Documentation] Ping all, verify no packet loss or duplicates
*** Test Cases ***
Check Stats for node 1
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:1
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:1
Check Stats for node 2
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:2
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:2
Check Stats for node 3
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:3
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:3
Check Switch Links
[Documentation] Get the topology and check links
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} link-id 4
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} link-id 4
Check No Host Is Present
[Documentation] Get the network topology, should not contain any host address
@{list} Create List ${MAC_1} ${MAC_2} ${MAC_3}
- Wait Until Keyword Succeeds 30s 2s Check For Elements Not At URI ${OPERATIONAL_TOPO_API} ${list}
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} link-id 4
+ Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_TOPO_API} ${list}
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} link-id 4
Ping All
[Documentation] Pingall, verify no packet loss
Check Host Links
[Documentation] Get the topology and check links
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} link-id 10
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} link-id 10
Host Tracker host1
- [Documentation] Get the network topology,
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} "node-id":"host:${MAC_1}" 1
+ [Documentation] Get the network topology, should contain host1 one time
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} "node-id":"host:${MAC_1}" 1
Host Tracker host2
- [Documentation] Get the network topology,
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} "node-id":"host:${MAC_2}" 1
+ [Documentation] Get the network topology, should contain host 2 one time
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} "node-id":"host:${MAC_2}" 1
Host Tracker host3
- [Documentation] Get the network topology,
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} "node-id":"host:${MAC_3}" 1
+ [Documentation] Get the network topology, should contain hos 3 one time
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} "node-id":"host:${MAC_3}" 1
+
+Link Down
+ [Documentation] Take link s1-h1 down and verify host1 goes away
+ Write link s1 h1 down
+ Read Until mininet>
+ @{list} Create List "link-down":true
+ Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${OPERATIONAL_NODES_API}/node/openflow:1/node-connector/openflow:1:1 ${list}
+ @{list} Create List ${MAC_1}
+ Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_TOPO_API} ${list}
+
+Link Up
+ [Documentation] Take link s1-h1 up and verify host1 comes back
+ Write link s1 h1 up
+ Read Until mininet>
+ @{list} Create List "link-down":false
+ Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${OPERATIONAL_NODES_API}/node/openflow:1/node-connector/openflow:1:1 ${list}
+ Write pingall
+ Read Until mininet>
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} "node-id":"host:${MAC_1}" 1
+
+Remove Port
+ [Documentation] Remove port s1-eth1 and verify host1 goes away
+ Write sh ovs-vsctl del-port s1 s1-eth1
+ Read Until mininet>
+ @{list} Create List ${MAC_1}
+ Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_TOPO_API} ${list}
+
+Add Port
+ [Documentation] Add port s2-eth1 and verify host1 comes back
+ Write sh ovs-vsctl add-port s1 s1-eth1 -- set interface s1-eth1 ofport=1
+ Read Until mininet>
+ @{list} Create List "link-down":false
+ Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${OPERATIONAL_NODES_API}/node/openflow:1/node-connector/openflow:1:1 ${list}
+ Write pingall
+ Read Until mininet>
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_TOPO_API} "node-id":"host:${MAC_1}" 1
*** Test Cases ***
Check Stats for node 1
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:1
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:1
Check Stats for node 2
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:2
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:2
Check Stats for node 3
[Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Check Nodes Stats openflow:3
+ Wait Until Keyword Succeeds 10s 2s Check Nodes Stats openflow:3
Check Ports
[Documentation] Check all ports are present
@{list} Create List openflow:1:1 openflow:1:2 openflow:1:3 openflow:2:1 openflow:2:2
... openflow:2:3 openflow:3:1 openflow:3:2 openflow:3:3
- Wait Until Keyword Succeeds 30s 2s Check For Elements At URI ${OPERATIONAL_NODES_API} ${list}
+ Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${OPERATIONAL_NODES_API} ${list}
Check Ports STP status
[Documentation] Check the stp status of the ports (forwarding/discarding)
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${FORWARD} 4
- Wait Until Keyword Succeeds 30s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${DISCARD} 2
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${FORWARD} 4
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${DISCARD} 2
Ping Test
[Documentation] Ping h1 to h2, verify no packet loss or duplicates
Should Contain ${result} 1 received, 0% packet loss
Should Not Contain ${result} duplicates
+Link Down
+ [Documentation] Take link s1-s2 down and verify ping works
+ Write link s1 s2 down
+ Read Until mininet>
+ @{list} Create List ${DISCARD}
+ Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API} ${list}
+ Write h1 ping -w 1 h2
+ ${result} Read Until mininet>
+ Should Contain ${result} received, 0% packet loss
+ Should Not Contain ${result} duplicates
+
+Link Up
+ [Documentation] Take link s1-s2 up and verify ping works
+ Write link s1 s2 up
+ Read Until mininet>
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${FORWARD} 4
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${DISCARD} 2
+ Write h1 ping -w 1 h2
+ ${result} Read Until mininet>
+ Should Contain ${result} received, 0% packet loss
+ Should Not Contain ${result} duplicates
+
+Remove Port
+ [Documentation] Remove port s1-eth2 and verify ping works
+ Write sh ovs-vsctl del-port s1 s1-eth2
+ Read Until mininet>
+ @{list} Create List ${DISCARD}
+ Wait Until Keyword Succeeds 10s 2s Check For Elements Not At URI ${OPERATIONAL_NODES_API} ${list}
+ Write h1 ping -w 1 h2
+ ${result} Read Until mininet>
+ Should Contain ${result} received, 0% packet loss
+ Should Not Contain ${result} duplicates
+
+Add Port
+ [Documentation] Add port s1-eth2 and verify ping works
+ Write sh ovs-vsctl add-port s1 s1-eth2 -- set interface s1-eth2 ofport=2
+ Read Until mininet>
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${FORWARD} 4
+ Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${OPERATIONAL_NODES_API} ${DISCARD} 2
+ Sleep 1
+ Write h1 ping -w 1 h2
+ ${result} Read Until mininet>
+ Should Contain ${result} received, 0% packet loss
+ Should Not Contain ${result} duplicates
+
*** Keywords ***
Start Suite
[Documentation] Open controller session & mininet connection and start mininet custom topo