--- /dev/null
+*** Settings ***\r
+Documentation Test suite for RESTCONF LACP inventory\r
+Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}\r
+Suite Teardown Delete All Sessions\r
+Library SSHLibrary\r
+Library Collections\r
+Library ../../../libraries/RequestsLibrary.py\r
+Library ../../../libraries/Common.py\r
+Variables ../../../variables/Variables.py\r
+\r
+*** Variables ***\r
+${node1} openflow:1\r
+${agg-id1} 1\r
+${agg-id2} 2\r
+${agg1-connector-id1} 1\r
+${agg1-connector-id2} 2\r
+${agg2-connector-id1} 3\r
+${agg2-connector-id2} 4\r
+\r
+*** Test Cases ***\r
+Get list of nodes and LACP reference on Inventory\r
+ [Documentation] Get the nodes data\r
+ ${resp} Get session ${OPERATIONAL_NODES_API}\r
+ Verify LACP RESTAPI Response Code for node\r
+ Verify LACP RESTAPI Aggregator and Tag Contents ${resp.content} non-lag-groupid\r
+ Verify LACP RESTAPI Aggregator and Tag Contents ${resp.content} lacp-aggregators\r
+\r
+Get the Specific Node Inventory and Lacp aggregator details\r
+ [Documentation] Get the lacp-aggregator data for specific node\r
+ ${resp} Get session ${OPERATIONAL_NODES_API}/node/${node1}\r
+ Verify LACP RESTAPI Response Code for node\r
+ Verify LACP RESTAPI Aggregator and Tag Contents ${resp.content} ${agg-id1}\r
+ Verify LACP RESTAPI Aggregator and Tag Contents ${resp.content} ${agg-id2}\r
+\r
+Get information of each lacp-aggregator for a node\r
+ [Documentation] Get each lacp-aggregator data for a node\r
+ ${resp} Get session ${OPERATIONAL_NODES_API}/node/${node1}/lacp-aggregators/${agg-id1}\r
+ Verify LACP RESTAPI Response Code for node\r
+ Verify LACP connector associated for aggregator ${resp.content} ${node1} ${agg1-connector-id1}\r
+ Verify LACP connector associated for aggregator ${resp.content} ${node1} ${agg1-connector-id2}\r
+ Verify LACP RESTAPI Aggregator and Tag Contents ${resp.content} lag-groupid\r
+ ${resp} Get session ${OPERATIONAL_NODES_API}/node/${node1}/lacp-aggregators/${agg-id2}\r
+ Verify LACP RESTAPI Response Code for node\r
+ Verify LACP connector associated for aggregator ${resp.content} ${node1} ${agg2-connector-id1}\r
+ Verify LACP connector associated for aggregator ${resp.content} ${node1} ${agg2-connector-id2}\r
+ Verify LACP RESTAPI Aggregator and Tag Contents ${resp.content} lag-groupid\r
+\r
+Get node connector data for node 1\r
+ [Documentation] Get the node connector inventory for node 1\r
+ ${resp} Get session ${OPERATIONAL_NODES_API}/node/${node1}/node-connector/${node1}:${agg1-connector-id1}\r
+ Verify LACP RESTAPI Response Code for node\r
+ Verify specific LACP node connector data for node ${resp.content} ${agg-id1} agg-id\r
+ ${resp} Get session ${OPERATIONAL_NODES_API}/node/${node1}/node-connector/${node1}:${agg1-connector-id2}\r
+ Verify LACP RESTAPI Response Code for node\r
+ Verify specific LACP node connector data for node ${resp.content} ${agg-id1} agg-id\r
+ ${resp} Get session ${OPERATIONAL_NODES_API}/node/${node1}/node-connector/${node1}:${agg2-connector-id1}\r
+ Verify LACP RESTAPI Response Code for node\r
+ Verify specific LACP node connector data for node ${resp.content} ${agg-id2} agg-id\r
+ ${resp} Get session ${OPERATIONAL_NODES_API}/node/${node1}/node-connector/${node1}:${agg2-connector-id2}\r
+ Verify LACP RESTAPI Response Code for node\r
+ Verify specific LACP node connector data for node ${resp.content} ${agg-id2} agg-id\r
+\r
+*** Keywords ***\r
+Verify LACP RESTAPI Response Code for node\r
+ [Documentation] Will check for the response code of the REST query\r
+ Should Be Equal As Strings ${resp.status_code} 200\r
+ Should Contain ${resp.content} ${node1}\r
+\r
+Verify LACP RESTAPI Aggregator and Tag Contents\r
+ [Arguments] ${resp.content} ${content-lookup}\r
+ [Documentation] Will check for the LACP Specific tags or Aggregator ID for node\r
+ Should Contain ${resp.content} ${content-lookup}\r
+\r
+Verify LACP connector associated for aggregator\r
+ [Arguments] ${resp.content} ${node} ${agg-connector-id}\r
+ [Documentation] Will check for the LACP connector info for each aggregator\r
+ Should Contain ${resp.content} ${node}:${agg-connector-id}\r
+\r
+Verify specific LACP node connector data for node\r
+ [Arguments] ${resp.content} ${agg-id} ${connector}\r
+ [Documentation] Will check for node connectory info for node\r
+ Should Contain ${resp.content} ${connector}='${agg-id}'\r
+++ /dev/null
-*** Settings ***
-Documentation Test suite for RESTCONF LACP inventory
-Suite Setup Create Session session http://${CONTROLLER}:8181 auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library robot.libraries.XML
-Variables ../../../variables/Variables.py
-
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-${node1} openflow:1
-${agg-id1} 1
-${agg-id2} 2
-${agg1-connector-id1} 1
-${agg1-connector-id2} 2
-${agg2-connector-id1} 3
-${agg2-connector-id2} 4
-${lacp-mac} 01:80:c2:00:00:02
-${lacp-ether-type} 0x8809
-
-*** Test Cases ***
-Get list of nodes and LACP reference on Inventory
- [Documentation] Get the nodes data
- ${resp} Get session ${REST_CONTEXT}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${node1}
- Should Contain ${resp.content} non-lag-groupid
- Should Contain ${resp.content} lacp-aggregators
-
-Get the Specific Node Inventory and Lacp aggregator details
- [Documentation] Get the lacp-aggregator data for specific node
- ${resp} Get session ${REST_CONTEXT}/node/${node1}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${node1}
- Should Contain ${resp.content} <agg-id>${agg-id1}</agg-id>
- Should Contain ${resp.content} <agg-id>${agg-id2}</agg-id>
- ${non-lag-group-id}= Get_Element ${resp} non-lag-groupid
-
-Get information of each lacp-aggregator for a node
- [Documentation] Get each lacp-aggregator data for a node
- ${resp} Get session ${REST_CONTEXT}/node/${node1}/lacp-aggregators/${agg-id1}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${agg-id1}
- Should Contain ${resp.content} ${node1}
- Should Contain ${resp.content} ${node1}:${agg1-connector-id1}
- Should Contain ${resp.content} ${node1}:${agg1-connector-id2}
- Should Contain ${resp.content} lag-groupid
- ${lag-group-id1}= Get_Element ${resp} lag-groupid
-
- ${resp} Get session ${REST_CONTEXT}/node/${node1}/lacp-aggregators/${agg-id2}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${agg-id2}
- Should Contain ${resp.content} ${node1}
- Should Contain ${resp.content} ${node1}:${agg2-connector-id1}
- Should Contain ${resp.content} ${node1}:${agg2-connector-id2}
- Should Contain ${resp.content} lag-groupid
- ${lag-group-id2}= Get_Element ${resp} lag-groupid
-
-Get node connector data for node 1
- [Documentation] Get the node connector inventory for node 1
- ${resp} Get session ${REST_CONTEXT}/node/${node1}/node-connector/${node1}:${agg1-connector-id1}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${node1}
- Should Contain ${resp.content} agg-id='${agg-id1}'
-
- ${resp} Get session ${REST_CONTEXT}/node/${node1}/node-connector/${node1}:${agg1-connector-id2}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${node1}
- Should Contain ${resp.content} agg-id='${agg-id1}'
-
- ${resp} Get session ${REST_CONTEXT}/node/${node1}/node-connector/${node1}:${agg2-connector-id1}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${node1}
- Should Contain ${resp.content} agg-id='${agg-id2}'
-
- ${resp} Get session ${REST_CONTEXT}/node/${node1}/node-connector/${node1}:${agg2-connector-id2}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${node1}
- Should Contain ${resp.content} agg-id='${agg-id2}'
-
-Verification of Switch(S1) Flow and Group tables
- [Documentation] Verification of Switch(S1) Flow and Group tables
- Verify Switch S1 Flow Table
- Verify Switch S1 Group Table
-
-*** Keywords ***
-Verify Switch S1 Flow Table for LACP flow
- Log OVS Switch(S1) Flow table Verification
- Open Connection ${MININET} prompt=>
- Login With Public Key ${MININET_USER} ${USER_HOME}/.ssh/id_rsa any
- Sleep 15
- Write clear
- Sleep 5
- Write sudo ovs-ofctl dump-flows s1 -O OpenFlow13
- Sleep 5
- ${s1_flow}= Read
- Should Contain ${s1_flow} dl_dst=${lacp-mac},dl_type=${lacp-ether-type} actions=CONTROLLER:65535
-
-Verify Switch S1 Group Table
- Log OVS Switch(S1) Group table Verification
- Open Connection ${MININET} prompt=>
- Login With Public Key ${MININET_USER} ${USER_HOME}/.ssh/id_rsa any
- Sleep 15
- Write clear
- Sleep 5
- Write sudo ovs-ofctl dump-groups s1 -O OpenFlow13
- Sleep 5
- $(s1_group}= Read
- Should Contain ${s1_group} group_id=${lag-group-id1},type=select
- Should Contain ${s1_group} group_id=${lag-group-id2},type=select
- Should Contain ${s1_group} group_id=${non-lag-group-id},type=all
-
-"""Custom LACP topology for LACP Module testing
+"""Custom LACP topology for LACP Module testing
-1.Two hosts(H1,H2) two interface each connected with Switch(S1)
+1.Two hosts(H1,H2) two interface each connected with Switch(S1)
2.Two hosts(H3,H4) one interface each connected with Switch(S1)
- - - -
| H2 |
- | |
+ | |
- - - -
| |
| |
- - - - - -
+ - - - - -
- - - eth1 | | - - -
| H1 |- - - - - - -| S1 |- - - - -| H3 |
| |- - - - - - -| | | |
- - - eth2 - - - - - - - -
|
- - - -
- | H4 |
- - - -
+ - - -
+ | H4 |
+ - - -
-Execute Custom topology:
+Execute Custom topology:
sudo mn --custom LACP_custom1.py --switch ovsk,protocols=OpenFlow13 --topo=lacp
Note:
1.remoteController IP will be replaced in LACP_custom1.py using sed command during the robot execution
2.bonding.conf will be copied the mininet server under /etc/modprobe.d
- 3.h1-bonding.sh h2-bonding.sh will be executed in respective h1,h2 host console
+ 3.h1-bonding.sh h2-bonding.sh will be executed in respective h1,h2 host console
"""
from mininet.cli import CLI
from mininet.net import Mininet
-from mininet.node import OVSController,RemoteController
+from mininet.node import RemoteController
from mininet.topo import Topo
from mininet.link import Link
-class LacpTopo( Topo):
+
+class LacpTopo(Topo):
net = Mininet(controller=RemoteController)
- c0 = net.addController('c0',controller=RemoteController,ip='CONTROLLER')
+ c0 = net.addController('c0', controller=RemoteController, ip='CONTROLLER')
s1 = net.addSwitch('s1')
- h1 = net.addHost('h1',mac='00:00:00:00:00:11')
- h2 = net.addHost('h2',mac='00:00:00:00:00:22')
- h3 = net.addHost('h3',mac='00:00:00:00:00:33',ip='10.1.1.3')
- h4 = net.addHost('h4',mac='00:00:00:00:00:44',ip='10.1.1.4')
+ h1 = net.addHost('h1', mac='00:00:00:00:00:11')
+ h2 = net.addHost('h2', mac='00:00:00:00:00:22')
+ h3 = net.addHost('h3', mac='00:00:00:00:00:33', ip='10.1.1.3')
+ h4 = net.addHost('h4', mac='00:00:00:00:00:44', ip='10.1.1.4')
Link(s1, h1)
Link(s1, h1)
CLI(net)
net.stop()
-topos = { 'lacp': (lambda: LacpTopo() ) }
-
+topos = {'lacp': (lambda: LacpTopo())}
--- /dev/null
+*** Settings ***
+Documentation Test suite for MD-SAL LACP mininet OF13
+Suite Setup Start Suite
+Suite Teardown Stop Suite
+Library SSHLibrary
+Variables ../../../variables/Variables.py
+
+*** Variables ***
+${start}= sudo mn --custom LACP_custom1.py --switch ovsk,protocols=OpenFlow13
+${bond}= "/etc/modprobe.d/bonding.conf"
+
+*** Keywords ***
+Start Suite
+ Log Start mininet
+ Open Connection ${MININET} prompt=${PROMPT}
+ Login With Public Key ${MININET_USER} ${USER_HOME}/.ssh/id_rsa any
+ Write sudo ovs-vsctl set-manager ptcp:6633
+ Write sudo mn -c
+ Read Until ${PROMPT}
+ Write sudo rm -rf ${bond}
+ Put File ${CURDIR}/LACP_custom1.py
+ Put File ${CURDIR}/h1-bond0.sh
+ Put File ${CURDIR}/h2-bond0.sh
+ Put File ${CURDIR}/m
+ Put File ${CURDIR}/bonding.conf
+ Write sudo cp bonding.conf ${bond}
+ Write sed -i -- 's/CONTROLLER/${CONTROLLER}/g' LACP_custom1.py
+ Write ${start}
+ Read Until mininet>
+
+Stop Suite
+ Log Stop mininet
+ Read
+ Write exit
+ Read Until ${PROMPT}
+ Write sed -i -- 's/${CONTROLLER}/CONTROLLER/g' LACP_custom1.py
+ Write sudo rm -rf ${bond}
+ Read Until ${PROMPT}
+ Close Connection
+++ /dev/null
-*** Settings ***
-Documentation Test suite for MD-SAL LACP mininet OF13
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-
-*** Variables ***
-${start}= sudo mn --custom LACP_custom1.py --switch ovsk,protocols=OpenFlow13
-${bond}= "/etc/modprobe.d/bonding.conf"
-
-** Keywords ***
-Start Suite
- Log Start mininet
- Open Connection ${MININET} prompt=>
- Login With Public Key ${MININET_USER} ${USER_HOME}/.ssh/id_rsa any
- Sleep 5
- Write sudo ovs-vsctl set-manager ptcp:6633
- Write sudo mn -c
- Sleep 2
- Write rm -rf ${bond}
- Sleep 2
- Write cp bonding.conf ${bond}
- Sleep 2
- Write sed -i -- 's/CONTROLLER/${CONTROLLER}/g' LACP_custom1.py
- Sleep 2
- Write ${start}
- Sleep 30
- Read
-Stop Suite
- Log Stop mininet
- Read
- Write exit
- Sleep 4
- Write sed -i -- 's/${CONTROLLER}/CONTROLLER/g' LACP_custom1.py
- Sleep 2
- Write rm -rf ${bond}
- Sleep 2
- Read
- Close Connection
-modprobe bonding
-ip link add bond0 type bond
-ip link set bond0 address 02:01:02:03:04:08
+sudo modprobe bonding
+sudo ip link add bond0 type bond
+sudo ip link set bond0 address 02:01:02:03:04:08
-ip link set h1-eth0 down
-ip link set h1-eth0 address 00:00:00:00:00:11
-ip link set h1-eth0 master bond0
-ip link set h1-eth1 down
-ip link set h1-eth1 address 00:00:00:00:00:12
-ip link set h1-eth1 master bond0
+sudo ip link set h1-eth0 down
+sudo ip link set h1-eth0 address 00:00:00:00:00:11
+sudo ip link set h1-eth0 master bond0
+sudo ip link set h1-eth1 down
+sudo ip link set h1-eth1 address 00:00:00:00:00:12
+sudo ip link set h1-eth1 master bond0
-ip addr add 10.1.1.1/8 dev bond0
-ip addr del 10.0.0.1/8 dev h1-eth0
-ip link set bond0 up
+sudo ip addr add 10.1.1.1/8 dev bond0
+sudo ip addr del 10.0.0.1/8 dev h1-eth0
+sudo ip link set bond0 up
-ifconfig
-
-cat /proc/net/bonding/bond0
+sudo ifconfig
+sudo cat /proc/net/bonding/bond0
-modprobe bonding
-ip link add bond0 type bond
-ip link set bond0 address 02:01:02:03:04:09
+sudo modprobe bonding
+sudo ip link add bond0 type bond
+sudo ip link set bond0 address 02:01:02:03:04:09
-ip link set h2-eth0 down
-ip link set h2-eth0 address 00:00:00:00:00:22
-ip link set h2-eth0 master bond0
-ip link set h2-eth1 down
-ip link set h2-eth1 address 00:00:00:00:00:23
-ip link set h2-eth1 master bond0
+sudo ip link set h2-eth0 down
+sudo ip link set h2-eth0 address 00:00:00:00:00:22
+sudo ip link set h2-eth0 master bond0
+sudo ip link set h2-eth1 down
+sudo ip link set h2-eth1 address 00:00:00:00:00:23
+sudo ip link set h2-eth1 master bond0
-ip addr add 10.1.1.2/8 dev bond0
-ip addr del 10.0.0.2/8 dev h2-eth0
-ip link set bond0 up
+sudo ip addr add 10.1.1.2/8 dev bond0
+sudo ip addr del 10.0.0.2/8 dev h2-eth0
+sudo ip link set bond0 up
-ifconfig
-
-cat /proc/net/bonding/bond0
+sudo ifconfig
+sudo cat /proc/net/bonding/bond0
RESTPORT = '8282'
RESTCONFPORT = '8181'
PREFIX = 'http://' + CONTROLLER + ':' + PORT
+PROMPT = '>'
CONTAINER = 'default'
USER = 'admin'
PWD = 'admin'