+++ /dev/null
-*** Settings ***
-Documentation Test suite for RESTCONF inventory
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-@{node_list} openflow:1 openflow:2 openflow:3
-
-*** Test Cases ***
-Get list of nodes
- [Documentation] Get the inventory
- Log ${start}
- Wait Until Keyword Succeeds 30s 2s Ensure All Nodes Are In Response ${REST_CONTEXT} ${node_list}
-
-Get nodeconnector for a node 1
- [Documentation] Get the inventory for a node
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/node/openflow:1
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:1:1
- Should Contain ${resp.content} openflow:1:2
-
-Get nodeconnector for a node 2
- [Documentation] Get the inventory for a node
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/node/openflow:2
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:2:1
- Should Contain ${resp.content} openflow:2:2
- Should Contain ${resp.content} openflow:2:3
-
-Get nodeconnector for a node 3
- [Documentation] Get the inventory for a node
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/node/openflow:3
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:3:1
- Should Contain ${resp.content} openflow:3:2
- Should Contain ${resp.content} openflow:3:3
+++ /dev/null
-*** Settings ***
-Documentation Test suite for RESTCONF Topology
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${topology1} "flow:1"
-${node1} "openflow:1"
-${node2} "openflow:2"
-${node3} "openflow:3"
-@{node_list} openflow:1 openflow:2 openflow:3
-${key} link
-${REST_CONTEXT_1} /restconf/operational/network-topology:network-topology
-${REST_CONTEXT_2} /restconf/operational/network-topology:network-topology/topology/flow:1
-${REST_CONTEXT_3} /restconf/config/network-topology:network-topology/topology/flow:1/link/userlink
-
-*** Test Cases ***
-Get RESTCONF Topology
- [Documentation] Get RESTCONF Topology and validate the result.
- [Tags] get
- Wait Until Keyword Succeeds 30s 2s Ensure All Nodes Are In Response ${REST_CONTEXT_1} ${node_list}
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_1}
- Should Be Equal As Strings ${resp.status_code} 200
- Log ${resp.content}
- Should Contain ${resp.content} ${topology1}
-
-List all the links
- [Documentation] List all the links in the topology.
- [Tags] get
- ${body1} Create Dictionary dest-node=openflow:1 dest-tp=openflow:1:2
- ${body2} Create Dictionary source-node=openflow:3 source-tp=openflow:3:3
- ${link2} Create Dictionary link-id=openflow:3:3 destination=${body1} source=${body2}
- ${body1} Create Dictionary dest-node=openflow:1 dest-tp=openflow:1:1
- ${body2} Create Dictionary source-node=openflow:2 source-tp=openflow:2:3
- ${link1} Create Dictionary link-id=openflow:2:3 destination=${body1} source=${body2}
- ${body1} Create Dictionary dest-node=openflow:3 dest-tp=openflow:3:3
- ${body2} Create Dictionary source-node=openflow:1 source-tp=openflow:1:2
- ${link4} Create Dictionary link-id=openflow:1:2 destination=${body1} source=${body2}
- ${body1} Create Dictionary dest-node=openflow:2 dest-tp=openflow:2:3
- ${body2} Create Dictionary source-node=openflow:1 source-tp=openflow:1:1
- ${link3} Create Dictionary link-id=openflow:1:1 destination=${body1} source=${body2}
- ${links} Create List ${link1} ${link2} ${link3} ${link4}
- Wait Until Keyword Succeeds 30s 2s Verify Links ${links}
-
-Add a link
- [Documentation] Add a link, list to validate the result.
- [Tags] add
- ${body1} Create Dictionary dest-node=openflow:3 dest-tp=openflow:3:1
- ${body2} Create Dictionary source-node=openflow:2 source-tp=openflow:2:1
- ${body3} Create Dictionary link-id=userlink destination=${body1} source=${body2}
- ${links} Create List ${body3}
- ${body} Create Dictionary link=${links}
- ${resp} RequestsLibrary.Put session ${REST_CONTEXT_3} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_3}
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${link} Get From Dictionary ${result} link
- Lists Should be Equal ${link} ${links}
-
-Remove a link
- [Documentation] Remove a link, list to validate the result.
- [Tags] remove
- ${resp} RequestsLibrary.Delete session ${REST_CONTEXT_3}
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_3}
- Should Be Equal As Strings ${resp.status_code} 404
-
-*** Keywords ***
-Verify Links
- [Arguments] ${expected_links}
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_2}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- Log ${result}
- ${content} Get From Dictionary ${result} topology
- ${topology} Get From List ${content} 0
- ${link} Get From Dictionary ${topology} link
- Sort List ${link}
- Lists Should be Equal ${link} ${expected_links}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for RESTCONF statistics
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-@{node_list} openflow:1 openflow:2 openflow:3
-
-*** Test Cases ***
-Get Stats for all nodes
- [Documentation] Get the stats for all nodes
- Wait Until Keyword Succeeds 30s 2s Ensure All Nodes Are In Response ${REST_CONTEXT} ${node_list}
-Get Stats for node 1
- [Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 60s 2s Check Nodes Stats openflow:1
-
-Get Stats for node 2
- [Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 60s 2s Check Nodes Stats openflow:2
-
-Get Stats for node 3
- [Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 60s 2s Check Nodes Stats openflow:3
+++ /dev/null
-*** Settings ***
-Documentation Test suite for RESTCONF FRM
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${BODY2} <flow xmlns="urn:opendaylight:flow:inventory"><priority>2</priority><flow-name>Foo</flow-name><match><ethernet-match><ethernet-type><type>2048</type></ethernet-type></ethernet-match><ipv4-destination>10.0.20.1/32</ipv4-destination></match><id>152</id><table_id>0</table_id><instructions><instruction><order>0</order><apply-actions><action><order>0</order><output-action><output-node-connector>openflow:1:1</output-node-connector></output-action></action></apply-actions></instruction></instructions></flow>
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/0/flow/152 data=${BODY2}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} RequestsLibrary.Get session ${REST_CON}/node/openflow:1/table/0
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} 152
-
-Verify after adding flow operational - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${elements}= Create List 10.0.20.1
- Wait Until Keyword Succeeds 60s 2s Check For Elements At URI ${REST_OPR}/node/openflow:1/table/0 ${elements}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} RequestsLibrary.Delete session ${REST_CON}/node/openflow:1/table/0/flow/152
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} RequestsLibrary.Get session ${REST_CON}/node/openflow:1/table/0
- Should Be Equal As Strings ${resp.status_code} 200
- Should Not Contain ${resp.content} 152
- # Standing bug #368 - This has been fixed
-
-Verify after deleting flow operational - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${elements}= Create List 10.0.20.1
- Wait Until Keyword Succeeds 60s 2s Check For Elements Not At URI ${REST_OPR}/node/openflow:1/table/0 ${elements}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for MD-SAL NSF
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${start} sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2
+++ /dev/null
-*** Settings ***
-Documentation Test suite for RESTCONF inventory
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-@{node_list} openflow:1 openflow:2 openflow:3
-
-*** Test Cases ***
-Get list of nodes
- [Documentation] Get the inventory
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}
- Wait Until Keyword Succeeds 30s 2s Ensure All Nodes Are In Response ${REST_CONTEXT} ${node_list}
-
-Get nodeconnector for a node 1
- [Documentation] Get the inventory for a node
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/node/openflow:1
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:1:1
- Should Contain ${resp.content} openflow:1:2
-
-Get nodeconnector for a node 2
- [Documentation] Get the inventory for a node
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/node/openflow:2
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:2:1
- Should Contain ${resp.content} openflow:2:2
- Should Contain ${resp.content} openflow:2:3
-
-Get nodeconnector for a node 3
- [Documentation] Get the inventory for a node
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/node/openflow:3
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:3:1
- Should Contain ${resp.content} openflow:3:2
- Should Contain ${resp.content} openflow:3:3
+++ /dev/null
-*** Settings ***
-Documentation Test suite RESTCONF Topology
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${topology1} "flow:1"
-${node1} "openflow:1"
-${node2} "openflow:2"
-${node3} "openflow:3"
-@{node_list} openflow:1 openflow:2 openflow:3
-${key} link
-${REST_CONTEXT_1} /restconf/operational/network-topology:network-topology
-${REST_CONTEXT_2} /restconf/operational/network-topology:network-topology/topology/flow:1
-${REST_CONTEXT_3} /restconf/config/network-topology:network-topology/topology/flow:1/link/userlink
-
-*** Test Cases ***
-Get RESTCONF Topology
- [Documentation] Get RESTCONF Topology and validate the result.
- [Tags] get
- Wait Until Keyword Succeeds 30s 2s Ensure All Nodes Are In Response ${REST_CONTEXT_1} ${node_list}
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_1}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} ${topology1}
-
-List all the links
- [Documentation] List all the links in the topology.
- [Tags] get
- ${body1} Create Dictionary dest-node=openflow:1 dest-tp=openflow:1:2
- ${body2} Create Dictionary source-node=openflow:3 source-tp=openflow:3:3
- ${link2} Create Dictionary link-id=openflow:3:3 destination=${body1} source=${body2}
- ${body1} Create Dictionary dest-node=openflow:1 dest-tp=openflow:1:1
- ${body2} Create Dictionary source-node=openflow:2 source-tp=openflow:2:3
- ${link1} Create Dictionary link-id=openflow:2:3 destination=${body1} source=${body2}
- ${body1} Create Dictionary dest-node=openflow:3 dest-tp=openflow:3:3
- ${body2} Create Dictionary source-node=openflow:1 source-tp=openflow:1:2
- ${link4} Create Dictionary link-id=openflow:1:2 destination=${body1} source=${body2}
- ${body1} Create Dictionary dest-node=openflow:2 dest-tp=openflow:2:3
- ${body2} Create Dictionary source-node=openflow:1 source-tp=openflow:1:1
- ${link3} Create Dictionary link-id=openflow:1:1 destination=${body1} source=${body2}
- ${links} Create List ${link1} ${link2} ${link3} ${link4}
- Wait Until Keyword Succeeds 30s 2s Verify Links ${links}
-
-Add a link
- [Documentation] Add a link, list to validate the result.
- [Tags] add
- ${body1} Create Dictionary dest-node=openflow:3 dest-tp=openflow:3:1
- ${body2} Create Dictionary source-node=openflow:2 source-tp=openflow:2:1
- ${body3} Create Dictionary link-id=userlink destination=${body1} source=${body2}
- ${links} Create List ${body3}
- ${body} Create Dictionary link=${links}
- ${resp} RequestsLibrary.Put session ${REST_CONTEXT_3} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_3}
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${link} Get From Dictionary ${result} link
- Lists Should be Equal ${link} ${links}
-
-Remove a link
- [Documentation] Remove a link, list to validate the result.
- [Tags] remove
- ${resp} RequestsLibrary.Delete session ${REST_CONTEXT_3}
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_3}
- Should Be Equal As Strings ${resp.status_code} 404
-
-*** Keywords ***
-Verify Links
- [Arguments] ${expected_links}
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_2}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- Log ${result}
- ${content} Get From Dictionary ${result} topology
- ${topology} Get From List ${content} 0
- ${link} Get From Dictionary ${topology} link
- Sort List ${link}
- Lists Should be Equal ${link} ${expected_links}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for RESTCONF statistics
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-@{node_list} openflow:1 openflow:2 openflow:3
-
-*** Test Cases ***
-Get Stats for all nodes
- [Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 30s 2s Ensure All Nodes Are In Response ${REST_CONTEXT} ${node_list}
-Get Stats for node 1
- [Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 60s 2s Check Nodes Stats openflow:1
-
-Get Stats for node 2
- [Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 60s 2s Check Nodes Stats openflow:2
-
-Get Stats for node 3
- [Documentation] Get the stats for a node
- Wait Until Keyword Succeeds 60s 2s Check Nodes Stats openflow:3
+++ /dev/null
-*** Settings ***
-Documentation Test suite for RESTCONF FRM
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${BODY1} <flow xmlns="urn:opendaylight:flow:inventory"><priority>2</priority><flow-name>Foo</flow-name><match><ethernet-match><ethernet-type><type>2048</type></ethernet-type></ethernet-match><ipv4-destination>10.0.10.1/32</ipv4-destination></match><id>139</id><table_id>2</table_id><instructions><instruction><order>0</order><apply-actions><action><order>0</order><dec-nw-ttl/></action></apply-actions></instruction></instructions></flow>
-${BODY2} <flow xmlns="urn:opendaylight:flow:inventory"><priority>2</priority><flow-name>Foo</flow-name><match><ethernet-match><ethernet-type><type>2048</type></ethernet-type></ethernet-match><ipv4-destination>10.0.20.1/32</ipv4-destination></match><id>139</id><table_id>2</table_id><instructions><instruction><order>0</order><apply-actions><action><order>0</order><output-action><output-node-connector>1</output-node-connector><max-length>60</max-length></output-action></action></apply-actions></instruction></instructions></flow>
-
-*** Test Cases ***
-Add a flow - Sending IPv4 Dest Address and Eth type
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/2/flow/139 data=${BODY1}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Sending IPv4 Dest Address and Eth type
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} RequestsLibrary.Get session ${REST_CON}/node/openflow:1/table/2
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} 139
-
-Verify after adding flow operational - Sending IPv4 Dest Address and Eth type
- [Documentation] Verify the flow
- [Tags] Get
- ${elements}= Create List 10.0.10.1
- Wait Until Keyword Succeeds 60s 2s Check For Elements At URI ${REST_OPR}/node/openflow:1/table/2 ${elements}
-
-Modify a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/2/flow/139 data=${BODY2}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after modifying flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} RequestsLibrary.Get session ${REST_CON}/node/openflow:1/table/2
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} 10.0.20.1
-
-Verify after modifying flow operational - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${elements}= Create List 10.0.20.1
- Wait Until Keyword Succeeds 90s 2s Check For Elements At URI ${REST_OPR}/node/openflow:1/table/2/flow/139 ${elements}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} RequestsLibrary.Delete session ${REST_CON}/node/openflow:1/table/2/flow/139
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} RequestsLibrary.Get session ${REST_CON}/node/openflow:1/table/2
- Should Be Equal As Strings ${resp.status_code} 200
- Should Not Contain ${resp.content} 139
-
-Verify after deleting flow operational - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${elements}= Create List 10.0.20.1
- Wait Until Keyword Succeeds 60s 2s Check For Elements Not At URI ${REST_OPR}/node/openflow:1/table/2 ${elements}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for MD-SAL NSF mininet OF13
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2 --switch ovsk,protocols=OpenFlow13
-
-** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Switch Manager
-Suite Setup Create Session ${ODL_CONTROLLER_SESSION} http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library RequestsLibrary
-Library ../../../libraries/Common.py
-Library ../../../libraries/SwitchManager.py
-Variables ../../../variables/Variables.py
-Library ../../../libraries/Topology.py
-
-*** Variables ***
-${REST_CONTEXT} /controller/nb/v2/switchmanager
-
-*** Test Cases ***
-List all nodes
- [Documentation] List all nodes and their properties in the network.
- [Tags] adsal
- Log ${TOPO_TREE_LEVEL}
- ${topo_nodes} Get Nodes From Topology ${TOPO_TREE_LEVEL}
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/nodes
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${jsondata}= To JSON ${resp.content}
- ${nodes} Extract All Nodes ${jsondata}
- List Should Contain Sublist ${nodes} ${topo_nodes}
-
-Check node 1 connectors
- [Documentation] List node connectors and verify all connectors are there
- [Tags] adsal
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/node/OF/00:00:00:00:00:00:00:01
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- Should Contain ${resp.content} s1-eth1
- Should Contain ${resp.content} s1-eth2
-
-Check node 2 connectors
- [Documentation] List node connectors and verify all connectors are there
- [Tags] adsal
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/node/OF/00:00:00:00:00:00:00:02
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- Should Contain ${resp.content} s2-eth1
- Should Contain ${resp.content} s2-eth2
- Should Contain ${resp.content} s2-eth3
-
-Check node 3 connectors
- [Documentation] List node connectors and verify all connectors are there
- [Tags] adsal
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/node/OF/00:00:00:00:00:00:00:03
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- Should Contain ${resp.content} s3-eth1
- Should Contain ${resp.content} s3-eth2
- Should Contain ${resp.content} s3-eth3
-
-Add property to node
- [Documentation] Add a property to node
- [Tags] adsal
- Add property to node OF 00:00:00:00:00:00:00:02 description Switch2
- Node property should exist OF 00:00:00:00:00:00:00:02 description Switch2
- #Remove property from node
- # [Documentation] Remove a property from node
- # Remove property from node OF 00:00:00:00:00:00:00:02 description
- # Node property should not exist OF 00:00:00:00:00:00:00:02 description Switch2
-
-Add property to nodeconnector
- [Documentation] Add a property to nodeconnector
- [Tags] adsal
- Add property to nodeconnector OF 00:00:00:00:00:00:00:02 OF 2 bandwidth 1000
- Nodeconnector property should exist OF 00:00:00:00:00:00:00:02 OF 2 bandwidth ${1000}
-
-Remove property from nodeconnector
- [Documentation] Remove a property from nodeconnector
- [Tags] adsal
- Remove property from nodeconnector OF 00:00:00:00:00:00:00:02 OF 2 bandwidth
- Nodeconnector property should not exist OF 00:00:00:00:00:00:00:02 OF 2 bandwidth ${1000}
-
-*** Keywords ***
-Get node
- [Arguments] ${node_id} ${node_type}
- [Documentation] Get a specific node
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodes
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} TO JSON ${resp.content}
- ${node} Create Dictionary id ${node_id} type ${node_type}
- ${content} Extract All Nodes ${result}
- Log ${content}
- List Should Contain Value ${content} ${node}
-
-Add property to node
- [Arguments] ${node_type} ${node_id} ${property} ${value}
- [Documentation] Add property to node
- ${resp} RequestsLibrary.Put ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id}/property/${property}/${value}
- Should Be Equal As Strings ${resp.status_code} 201 Response status code error
-
-Remove property from node
- [Arguments] ${node_type} ${node_id} ${property}
- [Documentation] Remove property from node
- ${resp} RequestsLibrary.Delete ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id}/property/${property}
- Should Be Equal As Strings ${resp.status_code} 204 Response status code error
-
-Add property to nodeconnector
- [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property} ${value}
- [Documentation] Add property to nodeconnector
- ${resp} RequestsLibrary.Put ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodeconnector/${node_type}/${node_id}/${nc_type}/${nc_id}/property/${property}/${value}
- Should Be Equal As Strings ${resp.status_code} 201 Response status code error
-
-Remove property from nodeconnector
- [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property}
- [Documentation] Remove property from nodeconnector
- ${resp} RequestsLibrary.Delete ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodeconnector/${node_type}/${node_id}/${nc_type}/${nc_id}/property/${property}
- Should Be Equal As Strings ${resp.status_code} 204 Response status code error
-
-Node property should exist
- [Arguments] ${node_type} ${node_id} ${property} ${value}
- [Documentation] Property of node should exist
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodes
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} TO JSON ${resp.content}
- Log ${result}
- ${nodes} Extract All Nodes ${result}
- ${property_values} Extract Node Property Values ${result} ${property}
- ${node} Create Dictionary id ${node_id} type ${node_type}
- ${property_value} Create Dictionary value ${value}
- Log ${property_value}
- List Should Contain Value ${nodes} ${node}
- List Should Contain Value ${property_values} ${property_value}
-
-Node property should not exist
- [Arguments] ${node_type} ${node_id} ${property} ${value}
- [Documentation] Property of node should not exist
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodes
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} TO JSON ${resp.content}
- Log ${result}
- ${nodes} Extract All Nodes ${result}
- ${properties} Extract Node Property Values ${result} ${property}
- ${node} Create Dictionary id ${node_id} type ${node_type}
- ${property} Create Dictionary value ${value}
- Log ${property}
- List Should Contain Value ${nodes} ${node}
- List Should Not Contain Value ${properties} ${property}
-
-Nodeconnector property should exist
- [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property} ${value}
- [Documentation] Property of nodeconnector should exist
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id}
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} TO JSON ${resp.content}
- Log ${result}
- ${property_values} Extract Nodeconnector Property Values ${result} ${property}
- Log ${property_values}
- ${property_value} Create Dictionary value ${value}
- List Should Contain Value ${property_values} ${property_value}
-
-Nodeconnector property should not exist
- [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property} ${value}
- [Documentation] Property of nodeconnector should not exist
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id}
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} TO JSON ${resp.content}
- Log ${result}
- ${property_values} Extract Nodeconnector Property Values ${result} ${property}
- Log ${property_values}
- ${property_value} Create Dictionary value ${value}
- List Should not Contain Value ${property_values} ${property_value}
-
-List all nodeconnectors of node
- [Arguments] ${node_type} ${node_id}
- [Documentation] List all nodeconnectors and properties of node
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Topology Manager
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${node1} "00:00:00:00:00:00:00:01"
-${node2} "00:00:00:00:00:00:00:02"
-${node3} "00:00:00:00:00:00:00:03"
-${name} test_userlink1
-${key} userLinks
-${REST_CONTEXT} /controller/nb/v2/topology
-
-*** Test Cases ***
-Get Topology
- [Documentation] Get Topology and validate the result.
- [Tags] adsal
- Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${REST_CONTEXT}/${CONTAINER} ${node1} 4
- Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${REST_CONTEXT}/${CONTAINER} ${node1} 4
- Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${REST_CONTEXT}/${CONTAINER} ${node1} 4
-
-Add a userlink
- [Documentation] Add a userlink, list to validate the result.
- [Tags] adsal
- ${body} Create Dictionary name ${name} status Success srcNodeConnector
- ... OF|1@OF|00:00:00:00:00:00:00:02 dstNodeConnector OF|1@OF|00:00:00:00:00:00:00:03
- ${resp} RequestsLibrary.Put session ${REST_CONTEXT}/${CONTAINER}/userLink/${name} data=${body}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/userLinks
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
-
-Remove a userlink
- [Documentation] Remove a userlink, list to validate the result.
- [Tags] adsal
- ${body} Create Dictionary name ${name} status Success srcNodeConnector
- ... OF|1@OF|00:00:00:00:00:00:00:02 dstNodeConnector OF|1@OF|00:00:00:00:00:00:00:03
- ${resp} RequestsLibrary.Delete session ${REST_CONTEXT}/${CONTAINER}/userLink/${name}
- Should Be Equal As Strings ${resp.status_code} 204
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/userLinks
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Statistics Manager
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${node1} "00:00:00:00:00:00:00:01"
-${node2} "00:00:00:00:00:00:00:02"
-${node3} "00:00:00:00:00:00:00:03"
-@{macaddr_list} ${node1} ${node2} ${node3}
-@{node_list} openflow:1 openflow:2 openflow:3
-${key} portStatistics
-${REST_CONTEXT} /controller/nb/v2/statistics
-
-*** Test Cases ***
-
-get port stats
- [Documentation] Show port stats and validate result
- [Tags] adsal
- Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${REST_CONTEXT}/${CONTAINER}/port ${macaddr_list}
- Wait Until Keyword Succeeds 60s 2s Check That Port Count Is Ok ${node1} 4
- Wait Until Keyword Succeeds 60s 1s Check That Port Count Is Ok ${node2} 5
- Wait Until Keyword Succeeds 60s 1s Check That Port Count Is Ok ${node3} 5
-
-get flow stats
- [Documentation] Show flow stats and validate result
- [Tags] adsal
- Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${REST_CONTEXT}/${CONTAINER}/flow ${macaddr_list}
-
-get table stats
- [Documentation] Show flow stats and validate result
- [Tags] adsal
- Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${REST_CONTEXT}/${CONTAINER}/table ${macaddr_list}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Flow Programmer
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${name} flow1
-${key} flowConfig
-${node_id} 00:00:00:00:00:00:00:02
-${REST_CONTEXT} /controller/nb/v2/flowprogrammer
-${REST_CONTEXT_ST} /controller/nb/v2/statistics
-
-*** Test Cases ***
-Add a flow
- [Documentation] Add a flow, list to validate the result.
- [Tags] adsal
- ${node} Create Dictionary type OF id ${node_id}
- ${actions} Create List OUTPUT=1
- ${body} Create Dictionary name ${name} installInHw true node
- ... ${node} priority 1 etherType 0x800 nwDst
- ... 10.0.0.1/32 actions ${actions}
- ${resp} RequestsLibrary.Put session ${REST_CONTEXT}/${CONTAINER}/node/OF/${node_id}/staticFlow/${name} data=${body}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
-
-Check flow in flow stats
- [Documentation] Show flow stats and validate result
- [Tags] adsal
- ${elements}= Create List 10.0.0.1
- Wait Until Keyword Succeeds 90s 2s Check For Elements At URI ${REST_CONTEXT_ST}/${CONTAINER}/flow ${elements}
-
-Remove a flow
- [Documentation] Remove a flow, list to validate the result.
- [Tags] adsal
- ${node} Create Dictionary type OF id ${node_id}
- ${actions} Create List OUTPUT=1
- ${body} Create Dictionary name ${name} installInHw true node
- ... ${node} priority 1 etherType 0x800 nwDst
- ... 10.0.0.1/32 actions ${actions}
- ${resp} RequestsLibrary.Delete session ${REST_CONTEXT}/${CONTAINER}/node/OF/${node_id}/staticFlow/${name}
- Should Be Equal As Strings ${resp.status_code} 204
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
-
-Check flow is not in flow stats
- [Documentation] Show flow stats and validate result
- [Tags] adsal
- ${elements}= Create List 10.0.0.1
- Wait Until Keyword Succeeds 60s 2s Check For Elements Not At URI ${REST_CONTEXT_ST}/${CONTAINER}/flow ${elements}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for AD-SAL NSF
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2
-
-** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Switch Manager
-Suite Setup Create Session ${ODL_CONTROLLER_SESSION} http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library RequestsLibrary
-Library ../../../libraries/Common.py
-Library ../../../libraries/SwitchManager.py
-Variables ../../../variables/Variables.py
-Library ../../../libraries/Topology.py
-
-*** Variables ***
-${REST_CONTEXT} /controller/nb/v2/switchmanager
-
-*** Test Cases ***
-List all nodes
- [Documentation] List all nodes and their properties in the network.
- [Tags] adsal
- Log ${TOPO_TREE_LEVEL}
- ${topo_nodes} Get Nodes From Topology ${TOPO_TREE_LEVEL}
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/nodes
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${jsondata}= To JSON ${resp.content}
- ${nodes} Extract All Nodes ${jsondata}
- List Should Contain Sublist ${nodes} ${topo_nodes}
-
-Check node 1 connectors
- [Documentation] List node connectors and verify all connectors are there
- [Tags] adsal
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/node/OF/00:00:00:00:00:00:00:01
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- Should Contain ${resp.content} s1-eth1
- Should Contain ${resp.content} s1-eth2
-
-Check node 2 connectors
- [Documentation] List node connectors and verify all connectors are there
- [Tags] adsal
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/node/OF/00:00:00:00:00:00:00:02
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- Should Contain ${resp.content} s2-eth1
- Should Contain ${resp.content} s2-eth2
- Should Contain ${resp.content} s2-eth3
-
-Check node 3 connectors
- [Documentation] List node connectors and verify all connectors are there
- [Tags] adsal
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/node/OF/00:00:00:00:00:00:00:03
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- Should Contain ${resp.content} s3-eth1
- Should Contain ${resp.content} s3-eth2
- Should Contain ${resp.content} s3-eth3
-
-Add property to node
- [Documentation] Add a property to node
- [Tags] adsal
- Add property to node OF 00:00:00:00:00:00:00:02 description Switch2
- Node property should exist OF 00:00:00:00:00:00:00:02 description Switch2
- #Remove property from node
- # [Documentation] Remove a property from node
- # Remove property from node OF 00:00:00:00:00:00:00:02 description
- # Node property should not exist OF 00:00:00:00:00:00:00:02 description Switch2
-
-Add property to nodeconnector
- [Documentation] Add a property to nodeconnector
- [Tags] adsal
- Add property to nodeconnector OF 00:00:00:00:00:00:00:02 OF 2 bandwidth 1000
- Nodeconnector property should exist OF 00:00:00:00:00:00:00:02 OF 2 bandwidth ${1000}
-
-Remove property from nodeconnector
- [Documentation] Remove a property from nodeconnector
- [Tags] adsal
- Remove property from nodeconnector OF 00:00:00:00:00:00:00:02 OF 2 bandwidth
- Nodeconnector property should not exist OF 00:00:00:00:00:00:00:02 OF 2 bandwidth ${1000}
-
-*** Keywords ***
-Get node
- [Arguments] ${node_id} ${node_type}
- [Documentation] Get a specific node
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodes
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} TO JSON ${resp.content}
- ${node} Create Dictionary id ${node_id} type ${node_type}
- ${content} Extract All Nodes ${result}
- Log ${content}
- List Should Contain Value ${content} ${node}
-
-Add property to node
- [Arguments] ${node_type} ${node_id} ${property} ${value}
- [Documentation] Add property to node
- ${resp} RequestsLibrary.Put ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id}/property/${property}/${value}
- Should Be Equal As Strings ${resp.status_code} 201 Response status code error
-
-Remove property from node
- [Arguments] ${node_type} ${node_id} ${property}
- [Documentation] Remove property from node
- ${resp} RequestsLibrary.Delete ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id}/property/${property}
- Should Be Equal As Strings ${resp.status_code} 204 Response status code error
-
-Add property to nodeconnector
- [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property} ${value}
- [Documentation] Add property to nodeconnector
- ${resp} RequestsLibrary.Put ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodeconnector/${node_type}/${node_id}/${nc_type}/${nc_id}/property/${property}/${value}
- Should Be Equal As Strings ${resp.status_code} 201 Response status code error
-
-Remove property from nodeconnector
- [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property}
- [Documentation] Remove property from nodeconnector
- ${resp} RequestsLibrary.Delete ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodeconnector/${node_type}/${node_id}/${nc_type}/${nc_id}/property/${property}
- Should Be Equal As Strings ${resp.status_code} 204 Response status code error
-
-Node property should exist
- [Arguments] ${node_type} ${node_id} ${property} ${value}
- [Documentation] Property of node should exist
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodes
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} TO JSON ${resp.content}
- Log ${result}
- ${nodes} Extract All Nodes ${result}
- ${property_values} Extract Node Property Values ${result} ${property}
- ${node} Create Dictionary id ${node_id} type ${node_type}
- ${property_value} Create Dictionary value ${value}
- Log ${property_value}
- List Should Contain Value ${nodes} ${node}
- List Should Contain Value ${property_values} ${property_value}
-
-Node property should not exist
- [Arguments] ${node_type} ${node_id} ${property} ${value}
- [Documentation] Property of node should not exist
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodes
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} TO JSON ${resp.content}
- Log ${result}
- ${nodes} Extract All Nodes ${result}
- ${properties} Extract Node Property Values ${result} ${property}
- ${node} Create Dictionary id ${node_id} type ${node_type}
- ${property} Create Dictionary value ${value}
- Log ${property}
- List Should Contain Value ${nodes} ${node}
- List Should Not Contain Value ${properties} ${property}
-
-Nodeconnector property should exist
- [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property} ${value}
- [Documentation] Property of nodeconnector should exist
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id}
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} TO JSON ${resp.content}
- Log ${result}
- ${property_values} Extract Nodeconnector Property Values ${result} ${property}
- Log ${property_values}
- ${property_value} Create Dictionary value ${value}
- List Should Contain Value ${property_values} ${property_value}
-
-Nodeconnector property should not exist
- [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property} ${value}
- [Documentation] Property of nodeconnector should not exist
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id}
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} TO JSON ${resp.content}
- Log ${result}
- ${property_values} Extract Nodeconnector Property Values ${result} ${property}
- Log ${property_values}
- ${property_value} Create Dictionary value ${value}
- List Should not Contain Value ${property_values} ${property_value}
-
-List all nodeconnectors of node
- [Arguments] ${node_type} ${node_id}
- [Documentation] List all nodeconnectors and properties of node
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Topology Manager
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${node1} "00:00:00:00:00:00:00:01"
-${node2} "00:00:00:00:00:00:00:02"
-${node3} "00:00:00:00:00:00:00:03"
-${name} test_userlink1
-${key} userLinks
-${REST_CONTEXT} /controller/nb/v2/topology
-
-*** Test Cases ***
-Get Topology
- [Documentation] Get Topology and validate the result.
- [Tags] adsal
- Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${REST_CONTEXT}/${CONTAINER} ${node1} 4
- Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${REST_CONTEXT}/${CONTAINER} ${node1} 4
- Wait Until Keyword Succeeds 10s 2s Check For Specific Number Of Elements At URI ${REST_CONTEXT}/${CONTAINER} ${node1} 4
-
-Add a userlink
- [Documentation] Add a userlink, list to validate the result.
- [Tags] adsal
- ${body} Create Dictionary name ${name} status Success srcNodeConnector
- ... OF|1@OF|00:00:00:00:00:00:00:02 dstNodeConnector OF|1@OF|00:00:00:00:00:00:00:03
- ${resp} RequestsLibrary.Put session ${REST_CONTEXT}/${CONTAINER}/userLink/${name} data=${body}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/userLinks
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
-
-Remove a userlink
- [Documentation] Remove a userlink, list to validate the result.
- [Tags] adsal
- ${body} Create Dictionary name ${name} status Success srcNodeConnector
- ... OF|1@OF|00:00:00:00:00:00:00:02 dstNodeConnector OF|1@OF|00:00:00:00:00:00:00:03
- ${resp} RequestsLibrary.Delete session ${REST_CONTEXT}/${CONTAINER}/userLink/${name}
- Should Be Equal As Strings ${resp.status_code} 204
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/userLinks
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Statistics Manager
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${node1} "00:00:00:00:00:00:00:01"
-${node2} "00:00:00:00:00:00:00:02"
-${node3} "00:00:00:00:00:00:00:03"
-@{macaddr_list} ${node1} ${node2} ${node3}
-@{node_list} openflow:1 openflow:2 openflow:3
-${key} portStatistics
-${REST_CONTEXT} /controller/nb/v2/statistics
-
-*** Test Cases ***
-
-get port stats
- [Documentation] Show port stats and validate result
- [Tags] adsal
- Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${REST_CONTEXT}/${CONTAINER}/port ${macaddr_list}
- Wait Until Keyword Succeeds 60s 2s Check That Port Count Is Ok ${node1} 4
- Wait Until Keyword Succeeds 60s 1s Check That Port Count Is Ok ${node2} 5
- Wait Until Keyword Succeeds 60s 1s Check That Port Count Is Ok ${node3} 5
-
-get flow stats
- [Documentation] Show flow stats and validate result
- [Tags] adsal
- Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${REST_CONTEXT}/${CONTAINER}/flow ${macaddr_list}
-
-get table stats
- [Documentation] Show flow stats and validate result
- [Tags] adsal
- Wait Until Keyword Succeeds 10s 2s Check For Elements At URI ${REST_CONTEXT}/${CONTAINER}/table ${macaddr_list}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Flow Programmer
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${name} flow1
-${key} flowConfig
-${node_id} 00:00:00:00:00:00:00:02
-${REST_CONTEXT} /controller/nb/v2/flowprogrammer
-${REST_CONTEXT_ST} /controller/nb/v2/statistics
-
-*** Test Cases ***
-Add a flow
- [Documentation] Add a flow, list to validate the result.
- [Tags] adsal
- ${node} Create Dictionary type OF id ${node_id}
- ${actions} Create List OUTPUT=1
- ${body} Create Dictionary name ${name} installInHw true node
- ... ${node} priority 1 etherType 0x800 nwDst
- ... 10.0.0.1/32 actions ${actions}
- ${resp} RequestsLibrary.Put session ${REST_CONTEXT}/${CONTAINER}/node/OF/${node_id}/staticFlow/${name} data=${body}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
-
-Check flow in flow stats
- [Documentation] Show flow stats and validate result
- [Tags] adsal
- ${elements}= Create List 10.0.0.1
- Wait Until Keyword Succeeds 90s 2s Check For Elements At URI ${REST_CONTEXT_ST}/${CONTAINER}/flow ${elements}
-
-Remove a flow
- [Documentation] Remove a flow, list to validate the result.
- [Tags] adsal
- ${node} Create Dictionary type OF id ${node_id}
- ${actions} Create List OUTPUT=1
- ${body} Create Dictionary name ${name} installInHw true node
- ... ${node} priority 1 etherType 0x800 nwDst
- ... 10.0.0.1/32 actions ${actions}
- ${resp} RequestsLibrary.Delete session ${REST_CONTEXT}/${CONTAINER}/node/OF/${node_id}/staticFlow/${name}
- Should Be Equal As Strings ${resp.status_code} 204
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
-
-Check flow is not in flow stats
- [Documentation] Show flow stats and validate result
- [Tags] adsal
- ${elements}= Create List 10.0.0.1
- Wait Until Keyword Succeeds 60s 2s Check For Elements Not At URI ${REST_CONTEXT_ST}/${CONTAINER}/flow ${elements}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for AD-SAL NSF mininet OF13
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2 --switch ovsk,protocols=OpenFlow13
-
-** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Host Tracker
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${name} 10.0.1.4
-${key} hostConfig
-${REST_CONTEXT} /controller/nb/v2/hosttracker
-${REST_CONTEXT_ST} /controller/nb/v2/statistics
-${FLOW} "10.0.1.4"
-
-*** Test Cases ***
-Add a host
- [Documentation] Add a host, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary nodeType OF dataLayerAddress 5e:bf:79:84:10:a6 vlan
- ... 1 nodeId 00:00:00:00:00:00:00:03 nodeConnectorId 2 networkAddress
- ... 10.0.1.4 staticHost ${True} nodeConnectorType OF
- ${resp} RequestsLibrary.Put session ${REST_CONTEXT}/${CONTAINER}/address/${name} data=${body}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/hosts/active
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
-
-Check flow in flow stats
- [Documentation] Show flow stats and validate result
- [Tags] apps
- Sleep 30
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_ST}/${CONTAINER}/flow
- Should Be Equal As Strings ${resp.status_code} 200
- Log ${resp.content}
- Should Contain X Times ${resp.content} ${FLOW} 3
-
-Remove a host
- [Documentation] Remove a host, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary nodeType OF dataLayerAddress 5e:bf:79:84:10:a6 vlan
- ... 1 nodeId 00:00:00:00:00:00:00:03 nodeConnectorId 2 networkAddress
- ... 10.0.1.4 staticHost ${True} nodeConnectorType OF
- ${resp} RequestsLibrary.Delete session ${REST_CONTEXT}/${CONTAINER}/address/${name}
- Should Be Equal As Strings ${resp.status_code} 204
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/hosts/inactive
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
-
-Check flow is not in flow stats
- [Documentation] Show flow stats and validate result
- [Tags] apps
- Sleep 30
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_ST}/${CONTAINER}/flow
- Should Be Equal As Strings ${resp.status_code} 200
- Log ${resp.content}
- Should Not Contain ${resp.content} ${FLOW}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Static Route
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${name} test_route1
-${key} staticRoute
-${REST_CONTEXT} /controller/nb/v2/staticroute
-${REST_CONTEXT_HT} /controller/nb/v2/hosttracker
-
-*** Test Cases ***
-Add a static route
- [Documentation] Add a static route, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary name ${name} prefix 192.168.1.0/24 nextHop
- ... 10.0.0.2
- ${resp} RequestsLibrary.Put session ${REST_CONTEXT}/${CONTAINER}/route/${name} data=${body}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/routes
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
- Sleep 30
- # This works locally but NOT in OpenDaylight
- #Check flow in flow stats
- # [Documentation] Show flow stats and validate result
- # [Tags] apps
- # ${resp} Get session ${REST_CONTEXT_ST}/${CONTAINER}/flow
- # Should Be Equal As Strings ${resp.status_code} 200
- # Log ${resp.content}
- # Should Contain X Times ${resp.content} 10.0.0.2 3
-
-Remove a static route
- [Documentation] Remove a static route, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary name ${name} prefix 192.168.1.0/24 nextHop
- ... 10.0.0.2
- ${resp} RequestsLibrary.Delete session ${REST_CONTEXT}/${CONTAINER}/route/${name}
- Should Be Equal As Strings ${resp.status_code} 204
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/routes
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Subnet Gateway
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${name} test
-${key} subnetConfig
-${REST_CONTEXT} /controller/nb/v2/subnetservice
-${REST_CONTEXT_HT} /controller/nb/v2/hosttracker
-
-*** Test Cases ***
-List Subnets
- [Documentation] List subnets and verify default is there
- [Tags] apps
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/subnets
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${subnet} Get From Dictionary ${result} ${key}
- ${content} Get From List ${subnet} 0
- Dictionary Should Contain Value ${content} 0.0.0.0/0
-
-Ping h1 to h4
- [Documentation] Ping h1 to h4, verify no packet loss
- [Tags] apps
- Write h1 ping -w 6 h4
- Sleep 6
- Write h4 ping -w 6 h1
- Sleep 6
- ${result} Read
- Should Contain ${result} 64 bytes
-
-List hosts
- [Documentation] List hosts and verify h1 and h4
- [Tags] apps
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT_HT}/${CONTAINER}/hosts/active
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} 10.0.0.1
- Should Contain ${resp.content} 10.0.0.4
-
-Add a subnet
- [Documentation] Add a subnet, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary name ${name} subnet 11.0.0.254/8
- ${resp} RequestsLibrary.Put session ${REST_CONTEXT}/${CONTAINER}/subnet/${name} data=${body}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/subnets
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
-
-Remove a subnet
- [Documentation] Remove a subnet, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary name ${name} subnet 11.0.0.254/8
- ${resp} RequestsLibrary.Delete session ${REST_CONTEXT}/${CONTAINER}/subnet/${name}
- Should Be Equal As Strings ${resp.status_code} 204
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/subnets
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for AD-SAL Applications
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2
-
-** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Host Tracker
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${name} 10.0.1.4
-${key} hostConfig
-${REST_CONTEXT} /controller/nb/v2/hosttracker
-${REST_CONTEXT_ST} /controller/nb/v2/statistics
-${FLOW} "10.0.1.4"
-
-*** Test Cases ***
-Add a host
- [Documentation] Add a host, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary nodeType OF dataLayerAddress 5e:bf:79:84:10:a6 vlan
- ... 1 nodeId 00:00:00:00:00:00:00:03 nodeConnectorId 2 networkAddress
- ... 10.0.1.4 staticHost ${True} nodeConnectorType OF
- ${resp} Put session ${REST_CONTEXT}/${CONTAINER}/address/${name} data=${body}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Get session ${REST_CONTEXT}/${CONTAINER}/hosts/active
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
-Check flow in flow stats
- [Documentation] Show flow stats and validate result
- [Tags] apps
- Sleep 30
- ${resp} Get session ${REST_CONTEXT_ST}/${CONTAINER}/flow
- Should Be Equal As Strings ${resp.status_code} 200
- Log ${resp.content}
- Should Contain X Times ${resp.content} ${FLOW} 3
-Remove a host
- [Documentation] Remove a host, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary nodeType OF dataLayerAddress 5e:bf:79:84:10:a6 vlan
- ... 1 nodeId 00:00:00:00:00:00:00:03 nodeConnectorId 2 networkAddress
- ... 10.0.1.4 staticHost ${True} nodeConnectorType OF
- ${resp} Delete session ${REST_CONTEXT}/${CONTAINER}/address/${name}
- Should Be Equal As Strings ${resp.status_code} 204
- ${resp} Get session ${REST_CONTEXT}/${CONTAINER}/hosts/inactive
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
-Check flow is not in flow stats
- [Documentation] Show flow stats and validate result
- [Tags] apps
- Sleep 30
- ${resp} Get session ${REST_CONTEXT_ST}/${CONTAINER}/flow
- Should Be Equal As Strings ${resp.status_code} 200
- Log ${resp.content}
- Should Not Contain ${resp.content} ${FLOW}
-
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Static Route
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${name} test_route1
-${key} staticRoute
-${REST_CONTEXT} /controller/nb/v2/staticroute
-${REST_CONTEXT_HT} /controller/nb/v2/hosttracker
-
-*** Test Cases ***
-Add a static route
- [Documentation] Add a static route, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary name ${name} prefix 192.168.1.0/24 nextHop
- ... 10.0.0.2
- ${resp} Put session ${REST_CONTEXT}/${CONTAINER}/route/${name} data=${body}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Get session ${REST_CONTEXT}/${CONTAINER}/routes
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
- Sleep 30
-# This works locally but NOT in OpenDaylight
-#Check flow in flow stats
-# [Documentation] Show flow stats and validate result
-# [Tags] apps
-# ${resp} Get session ${REST_CONTEXT_ST}/${CONTAINER}/flow
-# Should Be Equal As Strings ${resp.status_code} 200
-# Log ${resp.content}
-# Should Contain X Times ${resp.content} 10.0.0.2 3
-Remove a static route
- [Documentation] Remove a static route, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary name ${name} prefix 192.168.1.0/24 nextHop
- ... 10.0.0.2
- ${resp} Delete session ${REST_CONTEXT}/${CONTAINER}/route/${name}
- Should Be Equal As Strings ${resp.status_code} 204
- ${resp} Get session ${REST_CONTEXT}/${CONTAINER}/routes
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
-
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Subnet Gateway
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${name} test
-${key} subnetConfig
-${REST_CONTEXT} /controller/nb/v2/subnetservice
-${REST_CONTEXT_HT} /controller/nb/v2/hosttracker
-
-*** Test Cases ***
-List Subnets
- [Documentation] List subnets and verify default is there
- [Tags] apps
- ${resp} Get session ${REST_CONTEXT}/${CONTAINER}/subnets
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${subnet} Get From Dictionary ${result} ${key}
- ${content} Get From List ${subnet} 0
- Dictionary Should Contain Value ${content} 0.0.0.0/0
-Ping h1 to h4
- [Documentation] Ping h1 to h4, verify no packet loss
- [Tags] apps
- Write h1 ping -w 6 h4
- Sleep 6
- Write h4 ping -w 6 h1
- Sleep 6
- ${result} Read
- Should Contain ${result} 64 bytes
-List hosts
- [Documentation] List hosts and verify h1 and h4
- [Tags] apps
- ${resp} Get session ${REST_CONTEXT_HT}/${CONTAINER}/hosts/active
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} 10.0.0.1
- Should Contain ${resp.content} 10.0.0.4
-Add a subnet
- [Documentation] Add a subnet, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary name ${name} subnet 11.0.0.254/8
- ${resp} Put session ${REST_CONTEXT}/${CONTAINER}/subnet/${name} data=${body}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Get session ${REST_CONTEXT}/${CONTAINER}/subnets
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
-Remove a subnet
- [Documentation] Remove a subnet, list to validate the result.
- [Tags] apps
- ${body} Create Dictionary name ${name} subnet 11.0.0.254/8
- ${resp} Delete session ${REST_CONTEXT}/${CONTAINER}/subnet/${name}
- Should Be Equal As Strings ${resp.status_code} 204
- ${resp} Get session ${REST_CONTEXT}/${CONTAINER}/subnets
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
-
+++ /dev/null
-*** Settings ***
-Documentation Test suite for AD-SAL Applications mininet OF13
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2 --switch ovsk,protocols=OpenFlow13
-
-** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for pushing/verify/remove a flow through RESTCONF
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f1.xml
-${FLOW} 124
-${TABLE} 2
-@{FLOWELMENTS} nw_dst=10.0.1.0 table=2 dec_ttl
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} RequestsLibrary.get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} RequestsLibrary.Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} RequestsLibrary.Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for pushing/verify/remove a flow through RESTCONF
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f2.xml
-${FLOW} 125
-${TABLE} 2
-@{FLOWELMENTS} nw_src=10.0.0.1 table=2 drop
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for pushing/verify/remove a flow through RESTCONF
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f3.xml
-${FLOW} 126
-${TABLE} 2
-@{FLOWELMENTS} dl_src=00:00:00:00:00:01 table=2 drop
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for IP,Ethernet and port
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f5.xml
-${FLOW} 128
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=ff:ff:ff:ff:ff:ff table=2 dec_ttl dl_src=00:00:00:00:23:ae nw_src=10.1.2.0 nw_dst=20.4.0.0 in_port=0
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch mpls-ttl
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation OF1.3 Suite to cover TTL Actions
-... - Set IP TTL
-... - Decrement IP TTL
-... - Copy TTL outwards
-... - Copy TTL inwards
-... - Set MPLS TTL
-... - Decrement MPLS TTL
-...
-... NOTE: for OVS, it appears that set_ttl, and both copy in/out are not supported, so need to skip those checks for now.
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Test Template Create And Remove Flow
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library String
-Library XML
-Resource ../../../libraries/FlowLib.txt
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${GENERIC_ACTION_FLOW_FILE} ${CURDIR}/../../../variables/xmls/genericActionFlow.xml
-${ipv4_src} 10.1.2.0/24
-${ipv4_dst} 40.4.0.0/16
-${eth_type} 0x800
-${eth_src} 00:00:00:01:23:ae
-${eth_dst} ff:ff:ff:ff:ff:ff
-${node_id} openflow:1
-${set_ip_ttl_doc} OF1.3: \ OFPAT_SET_NW_TTL = 23, /* IP TTL. */\n(currently not supported on OVS)
-${dec_ttl_doc} OF1.3: \ OFPAT_DEC_NW_TTL = 24, /* Decrement IP TTL. */
-${copy_ttl_in_doc} OFPAT_COPY_TTL_IN = 12, /* Copy TTL "inwards" -- from outermost to\nnext-to-outermost */\n(currently NOT supported in OVS)\n
-${copy_ttl_out_doc} OFPAT_COPY_TTL_OUT = 11, /* Copy TTL "outwards" -- from next-to-outermost\nto outermost */\n(currently NOT suported in OVS)
-${set_mpls_ttl_doc} OFPAT_SET_MPLS_TTL = 15, /* MPLS TTL */
-${dec_mpls_ttl_doc} OFPAT_DEC_MPLS_TTL = 16, /* Decrement MPLS TTL */
-
-*** Test Cases *** ODL flow action action key action value tableID flowID verify OVS? OVS specific string?
-Set_IP_TTL [Documentation] ${set_ip_ttl_doc}
- [Tags] ttl set
- set-nw-ttl-action nw-ttl 1 2 101 no set_ttl
-
-Dec_TTL [Documentation] ${dec_ttl_doc}
- [Tags] ttl dec
- dec-nw-ttl none none 3 305 yes dec_ttl
-
-Copy_TTL_In [Documentation] ${copy_ttl_in_doc}
- [Tags] ttl copyin
- copy-ttl-in none none 9 202 no copy_ttl_in
-
-Copy_TTL_Out [Documentation] ${copy_ttl_out_doc}
- [Tags] ttl copyout
- copy-ttl-out none none 8 909 no copy_ttl_out
-
-Set_MPLS_TTL [Documentation] ${set_mpls_ttl_doc}
- [Tags] ttl setmpls
- set-mpls-ttl-action mpls-ttl 1 4 505 yes set_mpls_ttl
-
-Dec_MPLS_TTL [Documentation] ${dec_mpls_ttl_doc}
- [Tags] ttl decmpls
- dec-mpls-ttl none none 2 1001 yes dec_mpls_ttl
-
-*** Keywords ***
-Create And Remove Flow
- [Arguments] ${flow_action} ${action_key} ${action_value} ${table_id} ${flow_id} ${verify_switch_flag}
- ... ${additional_ovs_flowelements}
- @{OVS_FLOWELEMENTS} Create List dl_dst=${eth_dst} table=${table_id} dl_src=${eth_src} nw_src=${ipv4_src} nw_dst=${ipv4_dst}
- ... ${additional_ovs_flowelements}
- ##The dictionaries here will be used to populate the match and action elements of the flow mod
- ${ethernet_match_dict}= Create Dictionary type=${eth_type} destination=${eth_dst} source=${eth_src}
- ${ipv4_match_dict}= Create Dictionary source=${ipv4_src} destination=${ipv4_dst}
- ##flow is a python Object to build flow details, including the xml format to send to controller
- ${flow}= Create Inventory Flow
- Set "${flow}" "table_id" With "${table_id}"
- Set "${flow}" "id" With "${flow_id}"
- Clear Flow Actions ${flow}
- Set Flow Action ${flow} 0 0 ${flow_action}
- Set Flow Ethernet Match ${flow} ${ethernet_match_dict}
- Set Flow IPv4 Match ${flow} ${ipv4_match_dict}
- ##If the ${flow_action} contains the string "set" we need to include a deeper action detail (e.g. set-ttl needs a element to indicate the value to set it to)
- Run Keyword If "set" in "${flow_action}" Add Flow XML Element ${flow} ${action_key} ${action_value} instructions/instruction/apply-actions/action/${flow_action}
- Log Flow XML is ${flow.xml}
- Add Flow To Controller And Verify ${flow.xml} ${node_id} ${flow.table_id} ${flow.id}
- Run Keyword If "${verify_switch_flag}" == "yes" Verify Flow On Mininet Switch ${OVS_FLOWELEMENTS}
- Remove Flow From Controller And Verify ${flow.xml} ${node_id} ${flow.table_id} ${flow.id}
- Run Keyword If "${verify_switch_flag}" == "yes" Verify Flow Does Not Exist On Mininet Switch ${OVS_FLOWELEMENTS}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for IP,Ethernet,DSCP and Action dec TTL
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f7.xml
-${FLOW} 130
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=ff:ff:ff:ff:ff:aa table=2 nw_ecn=1 dl_src=00:00:00:11:23:ae nw_src=10.1.2.0 nw_dst=20.4.0.0 dec_ttl
-... nw_proto=56 nw_tos=60
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch ${EMPTY}
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for IP,Ethernet,QoS, TCP dst/src port and Action dec MPLS TTL
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f8.xml
-${FLOW} 131
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=ff:ff:29:01:19:61 table=2 nw_ecn=2 dl_src=00:00:00:11:23:ae nw_src=17.0.0.0 nw_dst=172.168.0.0 dec_ttl
-... tcp nw_tos=8 in_port=0 tp_dst=8080 tp_src=25364
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch ${EMPTY}
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for IP,Ethernet,QoS, TCP dst/src port and Action dec MPLS TTL
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f9.xml
-${FLOW} 132
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=20:14:29:01:19:61 table=2 nw_ecn=3 dl_src=00:00:00:11:23:ae nw_src=19.1.0.0 nw_dst=172.168.5.0 dec_ttl
-... udp nw_tos=32 in_port=0 tp_dst=8080 tp_src=25364
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for IP,Ethernet,QoS, SCTP dst/src port and Action dec TTL
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f10.xml
-${FLOW} 133
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=ff:ff:29:01:19:61 table=2 nw_ecn=0 dl_src=00:00:00:11:23:ae nw_src=17.0.0.0 nw_dst=172.168.0.0 dec_ttl
-... sctp nw_tos=0 in_port=0 tp_dst=384 tp_src=768
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for IP,Ethernet,QoS, SCTP dst/src port and Action dec TTL
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f11.xml
-${FLOW} 134
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=ff:ff:29:01:19:61 table=2 nw_ecn=3 dl_src=00:00:00:11:23:ae nw_src=17.0.0.0 nw_dst=172.168.0.0 dec_ttl
-... icmp nw_tos=108 in_port=0 icmp_type=6 icmp_code=3
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Ethernet,QoS, ARP and Action drop
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f12.xml
-${FLOW} 135
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=ff:ff:ff:ff:ff:ff table=2 dl_src=00:00:00:01:23:ae drop arp arp_op=1
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Ethernet,QoS, ARP and Action drop
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f13.xml
-${FLOW} 136
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=ff:ff:ff:ff:ff:ff table=2 dl_src=00:00:00:01:23:ae drop arp arp_op=1 arp_spa=192.168.4.1
-... arp_tpa=10.21.22.23
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Ethernet,QoS, ARP and Action drop
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f14.xml
-${FLOW} 137
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=ff:ff:ff:ff:ff:ff table=2 dl_src=00:00:fc:01:23:ae CONTROLLER:60 arp arp_op=1 arp_spa=192.168.4.1
-... arp_tpa=10.21.22.23 arp_tha=fe:dc:ba:98:76:54 arp_sha=12:34:56:78:98:ab
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Ethernet,QoS, ARP and Action drop
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f15.xml
-${FLOW} 138
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=ff:ff:29:01:19:61 table=2 dl_src=00:00:00:11:23:ae dec_mpls_ttl mpls dl_vlan=78
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Time our values and Vlan and PCP Vlan
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f16.xml
-${FLOW} 139
-${TABLE} 2
-@{FLOWELMENTS} table=2 idle_timeout=300 hard_timeout=600 priority=16 dl_vlan=78 dl_vlan_pcp=3
-... dl_src=00:00:00:11:23:ae dl_dst=ff:ff:29:01:19:61 dec_ttl
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${switchoutput} Read Until mininet>
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchoutput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${switchoutput} Read Until mininet>
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchoutput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Ethernet,QoS, ARP and Action drop
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f17.xml
-${FLOW} 140
-${TABLE} 2
-@{FLOWELMENTS} dl_dst=ff:ff:29:01:19:61 table=2 dl_src=00:00:00:11:23:ae dec_mpls_ttl mpls mpls_label=567 mpls_tc=3
-... mpls_bos=1 # mpls_label=567,mpls_tc=3,mpls_bos=1
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for IPv6
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f18.xml
-${FLOW} 141
-${TABLE} 2
-@{FLOWELMENTS} ipv6 ipv6_src=fe80::2acf:e9ff:fe21:6431, ipv6_dst=aabb:1234:2acf:e9ff::/64 dec_ttl
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for metadata
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f19.xml
-${FLOW} 142
-${TABLE} 2
-@{FLOWELMENTS} metadata=0x3039 IN_PORT
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for metadata and mask
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f20.xml
-${FLOW} 143
-${TABLE} 2
-@{FLOWELMENTS} metadata=0x1010/0x12d692 LOCAL
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for metadata and mask
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f21.xml
-${FLOW} 144
-${TABLE} 2
-@{FLOWELMENTS} metadata=0x3039 udp6 ipv6 ipv6_dst=fe80::2acf:e9ff:fe21:6431 nw_tos=32 nw_ecn=3 tp_src=25364
-... tp_dst=8080 ipv6_src=1234:5678:9abc:def0:fdc0::/76 dec_ttl
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for metadata and mask
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f22.xml
-${FLOW} 145
-${TABLE} 2
-@{FLOWELMENTS} metadata=0x3039 tcp6 ipv6 ipv6_dst=fe80:2acf:e9ff:fe21::/94 nw_tos=240 nw_ecn=3 tp_src=183
-... tp_dst=8080 ipv6_src=1234:5678:9abc:def0:fdc0::/76 dec_ttl
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for IPv6 flow labelk
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f23.xml
-${FLOW} 146
-${TABLE} 2
-@{FLOWELMENTS} metadata=0x3039 tcp6 ipv6 ipv6_dst=fe80:2acf:e9ff:fe21::/94 nw_tos=240 nw_ecn=3 tp_src=183
-... tp_dst=8080 ipv6_src=1234:5678:9abc:def0:fdc0::/76 dec_ttl ipv6_label=0x00021
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Tunnel ID
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f24.xml
-${FLOW} 147
-${TABLE} 2
-@{FLOWELMENTS} tun_id=0xa1f TABLE
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for IPv6 Flow label and ICMP type
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library OperatingSystem
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${FILE} ${CURDIR}/../../../variables/xmls/f25.xml
-${FLOW} 148
-${TABLE} 2
-@{FLOWELMENTS} icmp6 metadata=0x3039 ipv6_src=1234:5678:9abc:def0:fdc0::/76 ipv6_dst=fe80:2acf:e9ff:fe21::/94 dec_ttl ipv6_label=0x00021 nw_tos=240
-... nw_ecn=3 icmp_type=6 icmp_code=3 # ipv6_dst=fe80:2acf:e9ff:fe21::/94
-
-*** Test Cases ***
-Add a flow - Output to physical port#
- [Documentation] Push a flow through REST-API
- [Tags] Push
- ${body} OperatingSystem.Get File ${FILE}
- Set Suite Variable ${body}
- ${resp} Putxml session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} data=${body}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after adding flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} get session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW} headers=${ACCEPT_XML}
- Should Be Equal As Strings ${resp.status_code} 200
- compare xml ${body} ${resp.content}
-
-Verify flows after adding flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Contain ${switchouput} ${flowElement}
-
-Remove a flow - Output to physical port#
- [Documentation] Remove a flow
- [Tags] remove
- ${resp} Delete session ${REST_CON}/node/openflow:1/table/${TABLE}/flow/${FLOW}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Verify after deleting flow config - Output to physical port#
- [Documentation] Verify the flow
- [Tags] Get
- ${resp} Get session ${REST_CON}/node/openflow:1/table/${TABLE}
- Should Not Contain ${resp.content} ${FLOW}
-
-Verify flows after deleting flow config on OVS
- [Documentation] Checking Flows on switch
- [Tags] Switch
- Sleep 1
- write dpctl dump-flows -O OpenFlow13
- ${body} OperatingSystem.Get File ${FILE}
- ${switchouput} Read Until >
- : FOR ${flowElement} IN @{FLOWELMENTS}
- \ should Not Contain ${switchouput} ${flowElement}
+++ /dev/null
-*** Settings ***
-Documentation Flow test suite for the OpenDaylight karaf-compatible feature set
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-
-*** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Stats Manager flows collection
-Suite Setup Initialization Phase
-Suite Teardown Teardown Phase
-Library OperatingSystem
-Library Collections
-Library XML
-Library ../../../libraries/XmlComparator.py
-Variables ../../../variables/Variables.py
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-
-*** Variables ***
-${XmlsDir} ${CURDIR}/../../../variables/xmls
-${switch_idx} 1
-${switch_name} s${switch_idx}
-@{xml_files} f1.xml f2.xml f3.xml f5.xml f7.xml f8.xml f9.xml
-... f10.xml f11.xml f12.xml f13.xml f14.xml f17.xml f19.xml
-... f24.xml
-
-*** Test Cases ***
-Test Add Flows
- [Documentation] Add all flows and waits for SM to collect data
- : FOR ${flowfile} IN @{xml_files}
- \ Log ${flowfile}
- \ Init Flow Variables ${flowfile}
- \ Run Keyword And Continue On Failure Add Flow
-
-Test Is Flow 1 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f1.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 2 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f2.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 3 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f3.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 5 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f5.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 7 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f7.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 8 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f8.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 9 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f9.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 10 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f10.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 11 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f11.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 12 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f12.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 13 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f13.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 14 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f14.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 17 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f17.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 19 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f19.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Is Flow 24 Added
- [Documentation] Checks if flow is configured and operational
- Init Flow Variables f24.xml
- Check Config Flow ${True}
- Check Operational Table ${True}
-
-Test Delete Flows
- [Documentation] Delete all flows and waits for SM to collect data
- : FOR ${flowfile} IN @{xml_files}
- \ Log ${flowfile}
- \ Init Flow Variables ${flowfile}
- \ Run Keyword And Continue On Failure Delete Flow
-
-Test Is Flow 1 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f1.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 2 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f2.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 3 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f3.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 5 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f5.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 7 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f7.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 8 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f8.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 9 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f9.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 10 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f10.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 11 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f11.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 12 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f12.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 13 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f13.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 14 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f14.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 17 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f17.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 19 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f19.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-Test Is Flow 24 Deleted
- [Documentation] Checks if flow is not configured and operational
- Init Flow Variables f24.xml
- Check Config Flow ${False}
- Check Operational Table ${False}
-
-*** Keywords ***
-Init Flow Variables
- [Arguments] ${file}
- ${data}= Get File ${XmlsDir}/${file}
- ${xmlroot}= Parse Xml ${XmlsDir}/${file}
- ${table_id}= Get Element Text ${xmlroot} table_id
- ${flow_id}= Get Element Text ${xmlroot} id
- ${flow_priority}= Get Element Text ${xmlroot} priority
- Set Suite Variable ${table_id}
- Set Suite Variable ${flow_id}
- Set Suite Variable ${flow_priority}
- Set Suite Variable ${data}
- Set Suite Variable ${xmlroot}
-
-Check Config Flow
- [Arguments] ${expected}
- Wait Until Keyword Succeeds 40s 2s Check Config Flow Presence ${expected}
-
-Check Config Flow Presence
- [Arguments] ${expected}
- ${presence_flow} ${msg}= Flow Presence Config Flow
- ${msgf}= Get Presence Failure Message config ${expected} ${presence_flow} ${msg}
- Should Be Equal ${expected} ${presence_flow} msg=${msgf}
-
-Flow Presence Config Flow
- ${headers}= Create Dictionary Accept application/xml
- ${resp}= RequestsLibrary.Get session /restconf/config/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id}/flow/${flow_id} headers=${headers}
- Log ${resp}
- Log ${resp.content}
- Return From Keyword If ${resp.status_code}!=200 ${False} ${EMPTY}
- ${pres} ${msg}= Is Flow Configured ${data} ${resp.content}
- Run Keyword If '''${msg}'''!='${EMPTY}' Log ${msg}
- Return From Keyword ${pres} ${msg}
-
-Check Operational Table
- [Arguments] ${expected}
- Wait Until Keyword Succeeds 120s 2s Check Operational Table Presence ${expected}
-
-Check Operational Table Presence
- [Arguments] ${expected}
- ${presence_table} ${msg}= Flow Presence Operational Table
- ${msgf}= Get Presence Failure Message config ${expected} ${presence_table} ${msg}
- Should Be Equal ${expected} ${presence_table} msg=${msgf}
-
-Flow Presence Operational Table
- ${headers}= Create Dictionary Accept application/xml
- ${resp}= RequestsLibrary.Get session /restconf/operational/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id} headers=${headers}
- Log ${resp}
- Log ${resp.content}
- Return From Keyword If ${resp.status_code}!=200 ${False} ${EMPTY}
- ${pres} ${msg}= Is Flow Operational2 ${data} ${resp.content}
- Run Keyword If '''${msg}'''!='${EMPTY}' Log ${msg}
- Return From Keyword ${pres} ${msg}
-
-Add Flow
- Log ${data}
- ${resp}= Putxml session /restconf/config/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id}/flow/${flow_id} data=${data}
- ${msg}= Set Variable Adding flow for /restconf/config/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id}/flow/${flow_id} failed, http response ${resp.status_code} received.
- Should Be Equal As Strings ${resp.status_code} 200 msg=${msg}
-
-Delete Flow
- ${resp}= Delete session /restconf/config/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id}/flow/${flow_id}
- ${msg}= Set Variable Delete flow for /restconf/config/opendaylight-inventory:nodes/node/openflow:${switch_idx}/table/${table_id}/flow/${flow_id} failed, http response ${resp.status_code} received.
- Should Be Equal As Strings ${resp.status_code} 200 msg=${msg}
-
-Delete All Flows
- [Documentation] Deletes all flows
- : FOR ${flowfile} IN @{xml_files}
- \ Log ${flowfile}
- \ Init Flow Variables ${flowfile}
- \ Delete Flow
-
-Initialization Phase
- [Documentation] Initiate tcp connection with controller
- Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-
-Teardown Phase
- [Documentation] Closes tcp connection with controller and removes flows
- Delete All Sessions
-
-Get Presence Failure Message
- [Arguments] ${ds} ${expected} ${presence} ${diffmsg}
- Return From Keyword If '''${diffmsg}'''!='${EMPTY}' Flow found in ${ds} data store but: ${diffmsg}
- ${msgf}= Set Variable If ${expected}==${True} The flow is expected in operational data store, but The flow is not expected in operational data store, but
- ${msgp}= Set Variable If ${presence}==${True} it is present. it is not present.
- Return From Keyword ${msgf} ${msgp}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for the OpenDaylight base edition with of13, aimed for statistics manager
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-
-*** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for OVSDB Bridge Domain
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topology.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${key} node
-${REST_CONTEXT_CM} /controller/nb/v2/connectionmanager
-${REST_CONTEXT_BD} /controller/nb/v2/networkconfig/bridgedomain
-
-*** Test Cases ***
-List connections
- [Documentation] Get node connections and validate result
- [Tags] ovsdb
- ${topo_nodes} Get Nodes From Topology ${TOPO_TREE_LEVEL}
- ${resp} Get session ${REST_CONTEXT_CM}/nodes
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${nodes} Get From Dictionary ${result} ${key}
- List Should Contain Sublist ${nodes} ${topo_nodes}
-Connect to mininet
- [Documentation] Connect to mininet, list the nodes and validate result
- [Tags] ovsdb
- ${body} Create Dictionary type OVS id MININET
- ${resp} Put session ${REST_CONTEXT_CM}/node/MININET/address/${MININET}/port/6644
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- Dictionaries Should Be Equal ${result} ${body}
- ${resp} Get session ${REST_CONTEXT_CM}/nodes
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
- Sleep 2
-Add bridge s4
- [Documentation] Add bridge s4
- [Tags] ovsdb
- ${resp} Post session ${REST_CONTEXT_BD}/bridge/OVS/MININET/s4 data={}
- Should Be Equal As Strings ${resp.status_code} 201
-Delete s1 ports
- [Documentation] Delete s1 connected ports
- [Tags] ovsdb
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s1/s1-eth1
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s1/s1-eth2
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s2/s2-eth3
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s3/s3-eth3
- Should Be Equal As Strings ${resp.status_code} 200
-Add s4 ports
- [Documentation] Add s4 connected ports
- [Tags] ovsdb
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s4/s4-eth1
- ... data={"type":"patch", "CUSTOM":{"peer":"s2-eth3"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s4/s4-eth2
- ... data={"type":"patch", "CUSTOM":{"peer":"s3-eth3"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s2/s2-eth3
- ... data={"type":"patch", "CUSTOM":{"peer":"s4-eth1"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s3/s3-eth3
- ... data={"type":"patch", "CUSTOM":{"peer":"s4-eth2"}}
- Should Be Equal As Strings ${resp.status_code} 201
-Ping h1 to h4
- [Documentation] Ping h1 to h4, verify no packet loss
- [Tags] ovsdb
- Sleep 5
- Write h1 ping -w 10 h4
- Sleep 10
- Write h4 ping -w 10 h1
- Sleep 10
- ${result} Read
- Should Contain ${result} 64 bytes
-Delete s4 ports
- [Documentation] Delete s4 connected ports
- [Tags] ovsdb
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s4/s4-eth1
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s4/s4-eth2
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s2/s2-eth3
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s3/s3-eth3
- Should Be Equal As Strings ${resp.status_code} 200
-Add s1 ports
- [Documentation] Add s1 connected ports
- [Tags] ovsdb
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s1/s1-eth1
- ... data={"type":"patch", "CUSTOM":{"peer":"s2-eth3"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s1/s1-eth2
- ... data={"type":"patch", "CUSTOM":{"peer":"s3-eth3"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s2/s2-eth3
- ... data={"type":"patch", "CUSTOM":{"peer":"s1-eth1"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s3/s3-eth3
- ... data={"type":"patch", "CUSTOM":{"peer":"s1-eth2"}}
- Should Be Equal As Strings ${resp.status_code} 201
-Delete bridge s4
- [Documentation] Delete bridge s4
- [Tags] ovsdb
- ${resp} Delete session ${REST_CONTEXT_BD}/bridge/OVS/MININET/s4
- Should Be Equal As Strings ${resp.status_code} 200
-Disconnect mininet
- [Documentation] Disconnect mininet, list the nodes and validate result
- [Tags] ovsdb
- ${body} Create Dictionary type OVS id MININET
- ${resp} Delete session ${REST_CONTEXT_CM}/node/OVS/MININET
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Get session ${REST_CONTEXT_CM}/nodes
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for OVSDB
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2
-
-** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for OVSDB Bridge Domain
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topology.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${key} node
-${REST_CONTEXT_CM} /controller/nb/v2/connectionmanager
-${REST_CONTEXT_BD} /controller/nb/v2/networkconfig/bridgedomain
-
-*** Test Cases ***
-List connections
- [Documentation] Get node connections and validate result
- [Tags] ovsdb
- ${topo_nodes} Get Nodes From Topology ${TOPO_TREE_LEVEL}
- ${resp} Get session ${REST_CONTEXT_CM}/nodes
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${nodes} Get From Dictionary ${result} ${key}
- List Should Contain Sublist ${nodes} ${topo_nodes}
-Connect to mininet
- [Documentation] Connect to mininet, list the nodes and validate result
- [Tags] ovsdb
- ${body} Create Dictionary type OVS id MININET
- ${resp} Put session ${REST_CONTEXT_CM}/node/MININET/address/${MININET}/port/6644
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- Dictionaries Should Be Equal ${result} ${body}
- ${resp} Get session ${REST_CONTEXT_CM}/nodes
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Contain Value ${content} ${body}
- Sleep 2
-Add bridge s4
- [Documentation] Add bridge s4
- [Tags] ovsdb
- ${resp} Post session ${REST_CONTEXT_BD}/bridge/OVS/MININET/s4 data={}
- Should Be Equal As Strings ${resp.status_code} 201
-Delete s1 ports
- [Documentation] Delete s1 connected ports
- [Tags] ovsdb
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s1/s1-eth1
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s1/s1-eth2
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s2/s2-eth3
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s3/s3-eth3
- Should Be Equal As Strings ${resp.status_code} 200
-Add s4 ports
- [Documentation] Add s4 connected ports
- [Tags] ovsdb
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s4/s4-eth1
- ... data={"type":"patch", "CUSTOM":{"peer":"s2-eth3"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s4/s4-eth2
- ... data={"type":"patch", "CUSTOM":{"peer":"s3-eth3"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s2/s2-eth3
- ... data={"type":"patch", "CUSTOM":{"peer":"s4-eth1"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s3/s3-eth3
- ... data={"type":"patch", "CUSTOM":{"peer":"s4-eth2"}}
- Should Be Equal As Strings ${resp.status_code} 201
-Ping h1 to h4
- [Documentation] Ping h1 to h4, verify no packet loss
- [Tags] ovsdb
- Sleep 5
- Write h1 ping -w 10 h4
- Sleep 10
- Write h4 ping -w 10 h1
- Sleep 10
- ${result} Read
- Should Contain ${result} 64 bytes
-Delete s4 ports
- [Documentation] Delete s4 connected ports
- [Tags] ovsdb
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s4/s4-eth1
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s4/s4-eth2
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s2/s2-eth3
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Delete session ${REST_CONTEXT_BD}/port/OVS/MININET/s3/s3-eth3
- Should Be Equal As Strings ${resp.status_code} 200
-Add s1 ports
- [Documentation] Add s1 connected ports
- [Tags] ovsdb
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s1/s1-eth1
- ... data={"type":"patch", "CUSTOM":{"peer":"s2-eth3"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s1/s1-eth2
- ... data={"type":"patch", "CUSTOM":{"peer":"s3-eth3"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s2/s2-eth3
- ... data={"type":"patch", "CUSTOM":{"peer":"s1-eth1"}}
- Should Be Equal As Strings ${resp.status_code} 201
- ${resp} Post session ${REST_CONTEXT_BD}/port/OVS/MININET/s3/s3-eth3
- ... data={"type":"patch", "CUSTOM":{"peer":"s1-eth2"}}
- Should Be Equal As Strings ${resp.status_code} 201
-Delete bridge s4
- [Documentation] Delete bridge s4
- [Tags] ovsdb
- ${resp} Delete session ${REST_CONTEXT_BD}/bridge/OVS/MININET/s4
- Should Be Equal As Strings ${resp.status_code} 200
-Disconnect mininet
- [Documentation] Disconnect mininet, list the nodes and validate result
- [Tags] ovsdb
- ${body} Create Dictionary type OVS id MININET
- ${resp} Delete session ${REST_CONTEXT_CM}/node/OVS/MININET
- Should Be Equal As Strings ${resp.status_code} 200
- ${resp} Get session ${REST_CONTEXT_CM}/nodes
- Should Be Equal As Strings ${resp.status_code} 200
- ${result} To JSON ${resp.content}
- ${content} Get From Dictionary ${result} ${key}
- List Should Not Contain Value ${content} ${body}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for OVSDB mininet OF13
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2 --switch ovsk,protocols=OpenFlow13
-
-** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for NETCONF
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library Collections
-Library OperatingSystem
-Library String
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${FILE} ${CURDIR}/../../../variables/xmls/netconf.xml
-${REST_CONT_CONF} /restconf/config/opendaylight-inventory:nodes
-${REST_CONT_OPER} /restconf/operational/opendaylight-inventory:nodes
-${REST_NTPR_CONF} node/controller-config/yang-ext:mount/config:modules
-${REST_NTPR_MOUNT} node/netopeer/yang-ext:mount/
-
-*** Test Cases ***
-Add NetConf device
- [Documentation] Add NetConf device using REST
- [Tags] netconf
- ${XML1} Get File ${FILE}
- ${XML2} Replace String ${XML1} 127.0.0.1 ${MININET}
- ${body} Replace String ${XML2} mininet ${MININET_USER}
- Log ${body}
- ${resp} Post session ${REST_CONT_CONF}/${REST_NTPR_CONF} data=${body}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 204
-
-Get Controller Inventory
- [Documentation] Get Controller operational inventory
- [Tags] netconf
- Wait Until Keyword Succeeds 10s 2s Get Inventory
-
-Pull External Device configuration
- [Documentation] Pull Netopeer configuration
- [Tags] netconf
- ${resp} Get session ${REST_CONT_CONF}/${REST_NTPR_MOUNT}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} {}
-
-Verify Device Operational data
- [Documentation] Verify Netopeer operational data
- [Tags] netconf
- ${resp} Get session ${REST_CONT_OPER}/${REST_NTPR_MOUNT}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} schema
- Should Contain ${resp.content} statistics
- Should Contain ${resp.content} datastores
-
-*** Keywords ***
-Get Inventory
- ${resp} Get session ${REST_CONT_OPER}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} "id":"netopeer"
- Should Contain ${resp.content} "netconf-node-inventory:connected":true
- Should Contain ${resp.content} "netconf-node-inventory:initial-capability"
-
+++ /dev/null
-*** Settings ***
-Documentation Test suite for RESTCONF inventory
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-
-*** Test Cases ***
-Get list of nodes
- [Documentation] Get the inventory
- ${TOPO_TREE_DEPTH} Convert To Integer ${TOPO_TREE_DEPTH}
- ${TOPO_TREE_FANOUT} Convert To Integer ${TOPO_TREE_FANOUT}
- ${numnodes} Num Of Nodes ${TOPO_TREE_DEPTH} ${TOPO_TREE_FANOUT}
- Wait Until Keyword Succeeds 30s 2s Check Every Nodes ${numnodes}
-
-Get nodeconnector for the root node
- [Documentation] Get the inventory for the root node
- ${TOPO_TREE_FANOUT} Convert To Integer ${TOPO_TREE_FANOUT}
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/node/openflow:1
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- Wait Until Keyword Succeeds 30s 2s Check conn loop ${TOPO_TREE_FANOUT} 1 ${resp.content}
-
-Get nodeconnector for a node
- [Documentation] Get the inventory for a node
- ${TOPO_TREE_DEPTH} Convert To Integer ${TOPO_TREE_DEPTH}
- ${TOPO_TREE_FANOUT} Convert To Integer ${TOPO_TREE_FANOUT}
- ${numnodes} Num Of Nodes ${TOPO_TREE_DEPTH} ${TOPO_TREE_FANOUT}
- Wait Until Keyword Succeeds 30s 2s Check Every Nodes Nodeconnector ${numnodes}
-
-Get Stats for a node
- [Documentation] Get the stats for a node
- ${TOPO_TREE_DEPTH} Convert To Integer ${TOPO_TREE_DEPTH}
- ${TOPO_TREE_FANOUT} Convert To Integer ${TOPO_TREE_FANOUT}
- ${numnodes} Num Of Nodes ${TOPO_TREE_DEPTH} ${TOPO_TREE_FANOUT}
- Wait Until Keyword Succeeds 120s 2s Check Every Nodes Stats ${numnodes}
-
-*** Keywords ***
-Check Every Nodes
- [Arguments] ${numnodes}
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}
- Should Be Equal As Strings ${resp.status_code} 200
- : FOR ${IND} IN RANGE 1 ${numnodes+1}
- \ Should Contain ${resp.content} openflow:${IND}
-
-Check Every Nodes Stats
- [Arguments] ${numnodes}
- : FOR ${IND} IN RANGE 1 ${numnodes+1}
- \ ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/node/openflow:${IND}
- \ Log ${resp.content}
- \ Should Be Equal As Strings ${resp.status_code} 200
- \ Should Contain ${resp.content} flow-capable-node-connector-statistics
- \ Should Contain ${resp.content} flow-table-statistics
-
-Check Every Nodes Nodeconnector
- [Arguments] ${numnodes}
- : FOR ${IND} IN RANGE 2 ${numnodes+1}
- \ ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/node/openflow:${IND}
- \ Log ${resp.content}
- \ Should Be Equal As Strings ${resp.status_code} 200
- \ Check conn loop ${TOPO_TREE_FANOUT+1} ${IND} ${resp.content}
-
-Check conn loop
- [Arguments] ${arg} ${outerind} ${content}
- : FOR ${var} IN RANGE 1 ${arg+1}
- \ Should Contain ${content} openflow:${outerind}:${var}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for RESTCONF topology
-Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library Collections
-Library XML
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/network-topology:network-topology/topology/flow:1
-
-*** Test Cases ***
-Get Nodes Count
- [Documentation] Checks the number of switches
- ${TOPO_TREE_DEPTH} Convert To Integer ${TOPO_TREE_DEPTH}
- ${TOPO_TREE_FANOUT} Convert To Integer ${TOPO_TREE_FANOUT}
- ${numnodes} Num Of Nodes ${TOPO_TREE_DEPTH} ${TOPO_TREE_FANOUT}
- Wait Until Keyword Succeeds 60s 2s Verify Element Count ${REST_CONTEXT} node ${numnodes}
-
-Get Links Count
- [Documentation] Checks the number of links
- ${TOPO_TREE_DEPTH} Convert To Integer ${TOPO_TREE_DEPTH}
- ${TOPO_TREE_FANOUT} Convert To Integer ${TOPO_TREE_FANOUT}
- ${numnodes} Num Of Nodes ${TOPO_TREE_DEPTH} ${TOPO_TREE_FANOUT}
- ${numlinks} Evaluate (${numnodes}-1)*2
- Wait Until Keyword Succeeds 60s 2s Verify Element Count ${REST_CONTEXT} link ${numlinks}
-
-*** Keywords ***
-Verify Element Count
- [Arguments] ${URI} ${xpath_location} ${expected_count}
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT} headers=${ACCEPT_XML}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- ${count}= Get Element Count ${resp.content} xpath=${xpath_location}
- Should Be Equal As Numbers ${count} ${expected_count}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Switch Manager
-Suite Setup Create Session ${ODL_CONTROLLER_SESSION} http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library RequestsLibrary
-Library ../../../libraries/Common.py
-Library ../../../libraries/SwitchManager.py
-Variables ../../../variables/Variables.py
-Library ../../../libraries/Topologynew.py
-
-*** Variables ***
-${REST_CONTEXT} /controller/nb/v2/switchmanager
-
-*** Test Cases ***
-List all nodes
- [Documentation] List all nodes and their properties in the network.
- [Tags] adsal
- Log ${TOPO_TREE_LEVEL}
- ${topo_nodes} Get Nodes From Tree Topo (${TOPO_TREE_DEPTH},${TOPO_TREE_FANOUT})
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/nodes
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${jsondata}= To JSON ${resp.content}
- ${nodes} Extract All Nodes ${jsondata}
- List Should Contain Sublist ${nodes} ${topo_nodes}
-
-Check root node connectors
- [Documentation] List node connectors and verify all connectors are there
- [Tags] adsal
- ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/node/OF/00:00:00:00:00:00:00:01
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200 Response status code error
- ${TOPO_TREE_FANOUT} Convert To Integer ${TOPO_TREE_FANOUT}
- Check conn loop ${TOPO_TREE_FANOUT} 1 ${resp.content}
-
-Check node i connectors
- [Documentation] List node connectors and verify all connectors are there
- [Tags] adsal
- ${topo_nodes} Get Nodes From Tree Topo (${TOPO_TREE_DEPTH},${TOPO_TREE_FANOUT}) 1
- Wait Until Keyword Succeeds 30s 2s Check Every Nodes Connectors ${topo_nodes}
-
-*** Keywords ***
-Check Every Nodes Connectors
- [Arguments] ${topo_nodes}
- : FOR ${ITEM} IN @{topo_nodes}
- \ ${IND} Get From Dictionary ${ITEM} id
- \ ${resp} RequestsLibrary.Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/default/node/OF/${IND}
- \ Log ${resp.content}
- \ Should Be Equal As Strings ${resp.status_code} 200
- \ Check conn loop ${TOPO_TREE_FANOUT+1} ${IND} ${resp.content}
-
-Check conn loop
- [Arguments] ${arg} ${outerind} ${content}
- : FOR ${var} IN RANGE 0 ${arg+1}
- \ Should Contain ${content} "id":"${var}"
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Statistics Manager
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topologynew.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${nodeprefix} openflow:
-${key} portStatistics
-${REST_CONTEXT} /controller/nb/v2/statistics
-
-*** Test Cases ***
-get port stats
- [Documentation] Show port stats and validate result
- [Tags] adsal
- ${topo_nodes} Get Nodes From Tree Topo (${TOPO_TREE_DEPTH},${TOPO_TREE_FANOUT}) 1
- @{node_list} Create Nodes List ${topo_nodes}
- Wait Until Keyword Succeeds 70s 2s Check For Elements At URI ${REST_CONTEXT}/${CONTAINER}/port ${node_list}
-
-get flow stats
- [Documentation] Show flow stats and validate result
- [Tags] adsal
- ${topo_nodes} Get Nodes From Tree Topo (${TOPO_TREE_DEPTH},${TOPO_TREE_FANOUT})
- @{node_list} Create Nodes List ${topo_nodes}
- Wait Until Keyword Succeeds 70s 2s Check For Elements At URI ${REST_CONTEXT}/${CONTAINER}/flow ${node_list}
-
-get table stats
- [Documentation] Show flow stats and validate result
- [Tags] adsal
- ${topo_nodes} Get Nodes From Tree Topo (${TOPO_TREE_DEPTH},${TOPO_TREE_FANOUT})
- @{node_list} Create Nodes List ${topo_nodes}
- Wait Until Keyword Succeeds 70s 2s Check For Elements At URI ${REST_CONTEXT}/${CONTAINER}/table ${node_list}
-
-*** Keywords ***
-Check For Correct Number Of Nodes At URI
- [Arguments] ${uri} ${topo_nodes}
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/${uri}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain X Times ${resp.content} "00:00:00:00:00:00:00:01" ${TOPO_TREE_FANOUT+2}
- : FOR ${ITEM} IN @{topo_nodes}
- \ ${IND} Get From Dictionary ${ITEM} id
- \ Should Contain X Times ${resp.content} "${IND}" ${TOPO_TREE_FANOUT+3}
-
-Check For All Nodes At URI
- [Arguments] ${uri} ${topo_nodes}
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}/${uri}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- : FOR ${ITEM} IN @{topo_nodes}
- \ ${IND} Get From Dictionary ${ITEM} id
- \ Should Contain ${resp.content} "${IND}"
-
-Create Nodes List
- [Arguments] ${topo_dict}
- ##init list
- @{node_list}= Create List
- : FOR ${ITEM} IN @{topo_dict}
- \ ${IND} Get From Dictionary ${ITEM} id
- \ Append To List ${node_list} ${IND}
- [Return] @{node_list}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Topology Manager
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topologynew.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${nodeprefix} openflow:
-${REST_CONTEXT} /controller/nb/v2/topology
-
-*** Test Cases ***
-Get Topology
- [Documentation] Get Topology and validate the result.
- [Tags] adsal
- ${TOPO_TREE_DEPTH} Convert To Integer ${TOPO_TREE_DEPTH}
- ${TOPO_TREE_FANOUT} Convert To Integer ${TOPO_TREE_FANOUT}
- ${leaflist} Get Ids Of Leaf Nodes ${TOPO_TREE_FANOUT} ${TOPO_TREE_DEPTH}
- ${topo_nodes} Get Nodes From Tree Topo (${TOPO_TREE_DEPTH},${TOPO_TREE_FANOUT}) 1
- Wait Until Keyword Succeeds 30s 2s Check Link Counts For Each Node ${topo_nodes} ${leaflist}
-
-*** Keywords ***
-Check Link Counts For Each Node
- [Arguments] ${topo_nodes} ${leaflist}
- ${resp} RequestsLibrary.Get session ${REST_CONTEXT}/${CONTAINER}
- Log ${resp.content}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain X Times ${resp.content} "00:00:00:00:00:00:00:01" ${TOPO_TREE_FANOUT*2}
- : FOR ${ITEM} IN @{topo_nodes}
- \ ${IND} Get From Dictionary ${ITEM} id
- \ ${linkcnt} Num Of Links For Node ${IND} ${leaflist} ${TOPO_TREE_FANOUT}
- \ Should Contain X Times ${resp.content} "${IND}" ${linkcnt*2}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for do pingall test
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-
-*** Test Cases ***
-Ping all
- [Documentation] Do ping all test, verify no packet loss
- [Tags] pingall
- ${TOPO_TREE_DEPTH} Convert To Integer ${TOPO_TREE_DEPTH}
- ${TOPO_TREE_FANOUT} Convert To Integer ${TOPO_TREE_FANOUT}
- ${numnodes} Num Of Nodes ${TOPO_TREE_DEPTH} ${TOPO_TREE_FANOUT}
- Write pingall
- Sleep ${numnodes}
- ${result} Read
- Should Not Contain ${result} X
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Inventory Scalability
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${start} sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,${TOPO_TREE_DEPTH},${TOPO_TREE_FANOUT}
-
-*** Keywords ***
-Start Suite
- Log Start mininet
- ${TOPO_TREE_DEPTH} Convert To Integer ${TOPO_TREE_DEPTH}
- ${TOPO_TREE_FANOUT} Convert To Integer ${TOPO_TREE_FANOUT}
- ${numnodes} Num Of Nodes ${TOPO_TREE_DEPTH} ${TOPO_TREE_FANOUT}
- Open Connection ${MININET} prompt=> timeout=${numnodes*2}
- Login With Public Key ${MININET_USER} ${USER_HOME}/.ssh/id_rsa any
- Write sudo ovs-vsctl set-manager ptcp:6644
- Write sudo mn -c
- Read Until >
- Write ${start}
- Read Until mininet>
-
-Stop Suite
- Log Stop mininet
- Read
- Write exit
- Read Until >
- Close Connection
+++ /dev/null
-*** Settings ***
-Documentation TODO
-Suite Setup Switch Qualification Suite Setup
-Suite Teardown Switch Qualification Suite Teardown
-Test Timeout 5m
-Library Collections
-Library OperatingSystem
-Resource ../../../libraries/SwitchUtils.txt
-Resource ../../../libraries/Utils.txt
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/SwitchClasses/${SWITCH_CLASS}.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${SWITCH_CLASS} Ovs
-${SWITCH_IP} ${MININET}
-${CONTROLLER} null
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-
-*** Test Cases ***
-OF1.3 Connection Between Switch and Controller
- [Tags] switch_qualification
- Configure OpenFlow ${test_switch}
- Enable OpenFlow ${test_switch}
- ${datapath_id_from_switch}= Get Switch Datapath ID ${test_switch}
- Verify Switch In Operational Data Store ${test_switch}
- Disable OpenFlow ${test_switch}
- Verify Switch Not In Operational Data Store ${test_switch}
- ##MORE CHECKS TO ADD ON SWITCH AND OPERATIONAL DATA STORE
- ##- proper OF version
- ##- proper default flow rules
- ##- ???
-
-*** Keywords ***
-Switch Qualification Suite Setup
- ${test_switch}= Get Switch ${SWITCH_CLASS}
- Set Suite Variable ${test_switch}
- Call Method ${test_switch} set_mgmt_ip ${SWITCH_IP}
- Call Method ${test_switch} set_controller_ip ${CONTROLLER}
- Log MAKE: ${test_switch.make}\n MODEL: ${test_switch.model}\n IP: ${test_switch.mgmt_ip}\n PROMPT: ${test_switch.mgmt_prompt}\n CONTROLLER_IP: ${test_switch.of_controller_ip}\n MGMT_PROTOCOL: ${test_switch.mgmt_protocol}
- Ping ${test_switch.mgmt_ip}
- Initialize Switch ${test_switch}
- Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-
-Switch Qualification Suite Teardown
- Cleanup Switch ${test_switch}
- SSHLibrary.Close All Connections
- Telnet.Close All Connections
+++ /dev/null
-*** Settings ***
-Documentation OF1.3 Suite for flow actions
-... - output ALL
-... - output CONTROLLER
-... - output TABLE
-... - output INPORT
-... - output LOCAL
-... - output NORMAL
-... - output FLOOD
-... - output ANY
-...
-... NOTE: for OVS, INPORT does not appear to be supported
-Suite Setup OpenFlow Actions Suite Setup
-Suite Teardown OpenFlow Actions Suite Teardown
-Test Template Create And Remove Flow
-Library Collections
-Library OperatingSystem
-Library String
-Library XML
-Resource ../../../libraries/FlowLib.txt
-Resource ../../../libraries/SwitchUtils.txt
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-Library ../../../libraries/SwitchClasses/${SWITCH_CLASS}.py
-
-*** Variables ***
-${SWITCH_CLASS} Ovs
-${SWITCH_IP} ${MININET}
-${CONTROLLER} null
-${REST_CON} /restconf/config/opendaylight-inventory:nodes
-${REST_OPR} /restconf/operational/opendaylight-inventory:nodes
-${ipv4_src} 11.3.0.0/16
-${ipv4_dst} 99.0.0.0/8
-${eth_type} 0x800
-${eth_src} 00:ab:cd:ef:01:23
-${eth_dst} ff:ff:ff:ff:ff:ff
-##documentation strings
-${INPORT_doc} OF1.3: OFPP_INPORT = 0xfffffff8, /* Send the packet out the input port. This\nreserved port must be explicitly used\nin order to send back out of the input\nport. */\n
-${TABLE_doc} OF1.3: OFPP_TABLE = 0xfffffff9, /* Submit the packet to the first flow table NB: This destination port can only be used in packet-out messages. */
-${NORMAL_doc} OF1.3 OFPP_NORMAL = 0xfffffffa, /* Process with normal L2/L3 switching. */
-${FLOOD_doc} OF1.3 OFPP_FLOOD = 0xfffffffb, /* All physical ports in VLAN, except input port and those blocked or link down. */
-${ALL_doc} OF1.3: OFPP_ALL = 0xfffffffc, /* All physical ports except input port. */
-${CONTROLLER_doc} OF1.3 OFPP_CONTROLLER = 0xfffffffd, /* Send to controller. */
-${LOCAL_doc} OF1.3 OFPP_LOCAL = 0xfffffffe, /* Local openflow "port". */
-${ANY_doc} OF1.3 OFPP_ANY = 0xffffffff /* Wildcard port used only for flow mod (delete) and flow stats requests. Selects all flows regardless of output port (including flows with no output port). */
-
-*** Test Cases *** output port tableID flowID
-INPORT [Documentation] ${INPORT_doc}
- [Tags] inport
- ${TEST_NAME} 200 161
-
-TABLE [Documentation] ${TABLE_doc}
- [Tags] table
- ${TEST_NAME} 200 261
-
-NORMAL [Documentation] ${NORMAL_doc}
- [Tags] normal
- ${TEST_NAME} 200 361
-
-FLOOD [Documentation] ${FLOOD_doc}
- [Tags] flood
- ${TEST_NAME} 200 81
-
-ALL [Documentation] ${ALL_doc}
- [Tags] all
- ${TEST_NAME} 200 88
-
-CONTROLLER [Documentation] ${CONTROLLER_doc}
- [Tags] controller
- ${TEST_NAME} 200 21
-
-LOCAL [Documentation] ${LOCAL_doc}
- [Tags] local
- ${TEST_NAME} 200 32
-
-ANY [Documentation] ${ANY_doc}
- [Tags] any
- ${TEST_NAME} 200 111
-
-*** Keywords ***
-Create And Remove Flow
- [Arguments] ${output_port} ${table_id} ${flow_id}
- ##The dictionaries here will be used to populate the match and action elements of the flow mod
- ${ethernet_match_dict}= Create Dictionary type=${eth_type} destination=${eth_dst} source=${eth_src}
- ${ipv4_match_dict}= Create Dictionary source=${ipv4_src} destination=${ipv4_dst}
- ##flow is a python Object to build flow details, including the xml format to send to controller
- ${flow}= Create Inventory Flow
- Set "${flow}" "table_id" With "${table_id}"
- Set "${flow}" "id" With "${flow_id}"
- Clear Flow Actions ${flow}
- Set Flow Output Action ${flow} 0 0 ${output_port}
- Set Flow Ethernet Match ${flow} ${ethernet_match_dict}
- Set Flow IPv4 Match ${flow} ${ipv4_match_dict}
- Log Flow XML is ${flow.xml}
- Call Method ${test_switch} create_flow_match_elements ${flow.xml}
- Log ${test_switch.flow_validations}
- ${dpid_id}= Get Switch Datapath ID ${test_switch}
- Add Flow To Controller And Verify ${flow.xml} openflow:${dpid_id} ${flow.table_id} ${flow.id}
- Validate Switch Output ${test_switch} ${test_switch.dump_all_flows} ${test_switch.flow_validations}
- Remove Flow From Controller And Verify ${flow.xml} openflow:${dpid_id} ${flow.table_id} ${flow.id}
- Validate Switch Output ${test_switch} ${test_switch.dump_all_flows} ${test_switch.flow_validations} false
-
-OpenFlow Actions Suite Setup
- ${test_switch}= Get Switch ${SWITCH_CLASS}
- Set Suite Variable ${test_switch}
- Call Method ${test_switch} set_mgmt_ip ${SWITCH_IP}
- Call Method ${test_switch} set_controller_ip ${CONTROLLER}
- Log MAKE: ${test_switch.make}\n MODEL: ${test_switch.model}\n IP: ${test_switch.mgmt_ip}\n PROMPT: ${test_switch.mgmt_prompt}\n CONTROLLER_IP: ${test_switch.of_controller_ip}\n MGMT_PROTOCOL: ${test_switch.mgmt_protocol}
- Ping ${test_switch.mgmt_ip}
- Initialize Switch ${test_switch}
- Configure OpenFlow ${test_switch}
- Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
-
-OpenFlow Actions Suite Teardown
- Cleanup Switch ${test_switch}
- SSHLibrary.Close All Connections
- Telnet.Close All Connections
+++ /dev/null
-*** Settings ***
-Documentation AAA System Tests
-Suite Setup Credential Authentication Suite Setup
-Suite Teardown Credential Authentication Suite Teardown
-Library Collections
-Library OperatingSystem
-Library String
-Library HttpLibrary.HTTP
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Resource ../../../libraries/Utils.txt
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/AAAKeywords.txt
-
-*** Variables ***
-
-*** Test Cases ***
-Get Token With Valid Username And Password
- [Documentation] Sanity test to ensure default user/password can get a token
- ${auth_token}= Get Auth Token
- Should Be String ${auth_token}
- Log Token: ${auth_token}
- Validate Token Format ${auth_token}
-
-Fail To Get Token With Invalid Username And Password
- [Documentation] Negative test to verify invalid user/password is denied a token
- ${bad_user}= Set Variable notTheAdmin
- ${auth_data}= Create Auth Data ${bad_user} notTheAdminPassword
- ${resp}= AAA Login ${CONTROLLER} ${auth_data}
- Should Be Equal As Strings ${resp.status_code} 401
- Log ${resp.content}
- ${error_msg}= Extract Value From Content ${resp.content} /error strip
- Should Be Equal As Strings ${error_msg} User :${bad_user} does not exist
-
-Create Token with Client Authorization
- [Documentation] Get a token using client domain
- ${auth_token}= Get Auth Token ${USER} ${PWD} ${SCOPE} dlux secrete
- Should Be String ${auth_token}
- Log Token: ${auth_token}
- Validate Token Format ${auth_token}
-
-Token Authentication In REST Request
- [Documentation] Use a token to make a successful REST transaction
- ${auth_token}= Get Auth Token
- Make REST Transaction 200 ${auth_token}
-
-Revoke Token And Verify Transaction Fails
- [Documentation] negative test to revoke valid token and check that REST transaction fails
- ${auth_token}= Get Auth Token
- Make REST Transaction 200 ${auth_token}
- Revoke Auth Token ${auth_token}
- Make REST Transaction 401 ${auth_token}
-
-Disable Authentication And Re-Enable Authentication
- [Documentation] Toggles authentication off and verifies that no login credentials are needed for REST transactions
- Disable Authentication On Controller ${CONTROLLER}
- Wait Until Keyword Succeeds 10s 1s Make REST Transaction 200
- Enable Authentication On Controller ${CONTROLLER}
- Wait Until Keyword Succeeds 20s 1s Validate That Authentication Fails With Wrong Token
- ${auth_token}= Get Auth Token
- Make REST Transaction 200 ${auth_token}
-
-*** Keywords ***
-Validate That Authentication Fails With Wrong Token
- ${bad_token}= Set Variable notARealToken
- Make REST Transaction 401 ${bad_token}
-
-Make REST Transaction
- [Arguments] ${expected_status_code} ${auth_data}=${EMPTY}
- Create Session ODL_SESSION http://${CONTROLLER}:8181
- ${headers}= Create Dictionary Content-Type application/x-www-form-urlencoded
- Run Keyword If "${auth_data}" != "${EMPTY}" Set To Dictionary ${headers} Authorization Bearer ${auth_data}
- ${resp}= RequestsLibrary.GET ODL_SESSION ${OPERATIONAL_NODES_API} headers=${headers}
- Log STATUS_CODE: ${resp.status_code} CONTENT: ${resp.content}
- Should Be Equal As Strings ${resp.status_code} ${expected_status_code}
- Should Contain ${resp.content} nodes
-
-Credential Authentication Suite Setup
- Log Suite Setup
-
-Credential Authentication Suite Teardown
- Log Suite Teardown
- Delete All Sessions
+++ /dev/null
-*** Settings ***
-Documentation tmp
-Suite Setup Identity Management Suite Setup
-Suite Teardown Identity Management Suite Teardown
-Library Collections
-Library OperatingSystem
-Library String
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-
-*** Test Cases ***
-
-*** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for AddressObservations in RESTCONF inventory
-Suite Setup Create Session session http://${CONTROLLER}:${PORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-${IP_1} "10.0.0.1"
-${IP_2} "10.0.0.2"
-${IP_3} "10.0.0.3"
-
-*** Test Cases ***
-Get list of nodes
- [Documentation] Get the inventory, should not contain address observations
- ${resp} Get session ${REST_CONTEXT}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:1
- Should Contain ${resp.content} openflow:2
- Should Contain ${resp.content} openflow:3
- Should Contain X Times ${resp.content} forwarding 4
- Should Not Contain ${resp.content} ${IP_1}
- Should Not Contain ${resp.content} ${IP_2}
- Should Not Contain ${resp.content} ${IP_3}
-
-Ping All
- [Documentation] Pingall, verify no packet loss
- [Tags] Get
- Write pingall
- ${result} Read Until mininet>
- Should Contain ${result} 0% dropped
- Should Not Contain ${result} X
- Sleep 3
-
-Get node 1 addresses
- [Documentation] Get the address observations for node 1
- ${resp} Get session ${REST_CONTEXT}/node/openflow:1
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:1:1
- Should Contain ${resp.content} openflow:1:2
- Should Contain ${resp.content} addresses
- Should Contain X Times ${resp.content} ${IP_1} 1
- Should Not Contain ${resp.content} ${IP_2}
- Should Not Contain ${resp.content} ${IP_3}
-
-Get node 2 addresses
- [Documentation] Get the address observations for node 2
- ${resp} Get session ${REST_CONTEXT}/node/openflow:2
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:2:1
- Should Contain ${resp.content} openflow:2:2
- Should Contain ${resp.content} openflow:2:3
- Should Contain ${resp.content} addresses
- Should Not Contain ${resp.content} ${IP_1}
- Should Contain X Times ${resp.content} ${IP_2} 1
- Should Not Contain ${resp.content} ${IP_3}
-
-Get node 3 addresses
- [Documentation] Get the address observations for node 3
- ${resp} Get session ${REST_CONTEXT}/node/openflow:3
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:3:1
- Should Contain ${resp.content} openflow:3:2
- Should Contain ${resp.content} addresses
- Should Not Contain ${resp.content} ${IP_1}
- Should Not Contain ${resp.content} ${IP_2}
- Should Contain X Times ${resp.content} ${IP_3} 1
+++ /dev/null
-*** Settings ***
-Documentation Test suite for L2switch's Address Tracking using mininet OF13
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo=linear,3 --switch ovsk,protocols=OpenFlow13
-
-** Keywords ***
-Start Suite
- Log Start mininet
- Open Connection ${MININET} prompt=> timeout=20
- Login With Public Key ${MININET_USER} ${USER_HOME}/.ssh/id_rsa any
- Write sudo ovs-vsctl set-manager ptcp:6644
- Write sudo mn -c
- Read Until >
- Write ${start}
- Read Until mininet>
- Sleep 30
-Stop Suite
- Log Stop mininet
- Read
- Write exit
- Read Until >
- Close Connection
+++ /dev/null
-** Settings ***
-Documentation Test suite for FlowProgramming in RESTCONF inventory
-Suite Setup Create Session session http://${CONTROLLER}:${PORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-
-*** Test Cases ***
-Get flows before ping through console
- [Documentation] Dump flows should list initial flows (drop, arp, lldp, flood per port)
- Write sh ovs-ofctl dump-flows s1 -O OpenFlow13
- ${result} Read Until mininet>
- Should Contain X Times ${result} actions 4
- Write sh ovs-ofctl dump-flows s2 -O OpenFlow13
- ${result} Read Until mininet>
- Should Contain X Times ${result} actions 5
- Write sh ovs-ofctl dump-flows s3 -O OpenFlow13
- ${result} Read Until mininet>
- Should Contain X Times ${result} actions 4
-
-# Get flows before ping through restconf
-# [Documentation] Get the inventory, should not contain flows
-# ${resp} Get session ${REST_CONTEXT}/node/openflow:1/table/0
-# Should Be Equal As Strings ${resp.status_code} 200
-# Should Not Contain ${resp.content} flow
-
-Ping All
- [Documentation] Pingall, verify no packet loss
- [Tags] Get
- Write pingall
- ${result} Read Until mininet>
- Should Contain ${result} 0% dropped
- Should Not Contain ${result} X
-
-#Get flows after ping through console
-# [Documentation] Dump flows should list flows
-# Write sh ovs-ofctl dump-flows s1 -O OpenFlow13
-# ${result} Read Until mininet>
-# Should Contain X Times ${result} actions 4
-# Write sh ovs-ofctl dump-flows s2 -O OpenFlow13
-# Sleep 5
-# ${result} Read Until mininet>
-# Should Contain X Times ${result} actions 6
-# Write sh ovs-ofctl dump-flows s3 -O OpenFlow13
-# Sleep 5
-# ${result} Read Until mininet>
-# Should Contain X Times ${result} actions 4
-
-
-#Get flows after ping through restconf
-# [Documentation] Get the inventory, should not contain flows
-# ${resp} Get session ${REST_CONTEXT}/node/openflow:1/table/0
-# Should Be Equal As Strings ${resp.status_code} 200
+++ /dev/null
-*** Settings ***
-Documentation Test suite for L2switch's Flow Programming using mininet OF13
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo=linear,3 --switch ovsk,protocols=OpenFlow13
-
-** Keywords ***
-Start Suite
- Log Start mininet
- Open Connection ${MININET} prompt=> timeout=10
- Login With Public Key ${MININET_USER} ${USER_HOME}/.ssh/id_rsa any
- Write sudo ovs-vsctl set-manager ptcp:6644
- Write sudo mn -c
- Read Until >
- Write ${start}
- Read Until mininet>
- Sleep 15
-Stop Suite
- Log Stop mininet
- Read
- Write exit
- Read Until >
- Close All Connections
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Ring/Loop topology of size 3
-Suite Setup Create Session session http://${CONTROLLER}:${PORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-
-*** Test Cases ***
-Get opendaylight-inventory
- [Documentation] Get all nodes and all link states (forwarding/discarding)
- ${resp} Get session ${REST_CONTEXT}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:1
- Should Contain ${resp.content} openflow:2
- Should Contain ${resp.content} openflow:3
- Should Contain X Times ${resp.content} forwarding 4
- Should Contain X Times ${resp.content} discarding 2
-
-Get nodeconnectors for node 1
- [Documentation] Get the inventory for node 1
- ${resp} Get session ${REST_CONTEXT}/node/openflow:1
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:1:1
- Should Contain ${resp.content} openflow:1:2
- Should Contain ${resp.content} openflow:1:3
-
-Get nodeconnectors for node 2
- [Documentation] Get the inventory for node 2
- ${resp} Get session ${REST_CONTEXT}/node/openflow:2
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:2:1
- Should Contain ${resp.content} openflow:2:2
- Should Contain ${resp.content} openflow:2:3
-
-Get nodeconnectors for node 3
- [Documentation] Get the inventory for node 3
- ${resp} Get session ${REST_CONTEXT}/node/openflow:3
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:3:1
- Should Contain ${resp.content} openflow:3:2
- Should Contain ${resp.content} openflow:3:3
-
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Pinging in Ring/Loop topology of size 3
-Suite Setup Create Session session http://${CONTROLLER}:${PORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes
-
-*** Test Cases ***
-Ping All
- [Documentation] Pingall, verify no packet loss
- [Tags] Get
- Write pingall
- ${result} Read Until mininet>
- Should Contain ${result} 0% dropped
- Should Contain X Times ${result} h1 3
- Should Contain X Times ${result} h2 3
- Should Contain X Times ${result} h3 3
- Should Not Contain ${result} X
-
-
-Ping h1 to h2
- [Documentation] Ping h1 to h2, verify no packet loss or duplicates
- [Tags] Get
- Write h1 ping -w 6 h2
- Read Until mininet>
- Write h2 ping -w 6 h1
- ${result} Read Until mininet>
- Should Contain ${result} 0% packet loss
- Should Not Contain ${result} duplicates
-
+++ /dev/null
-*** Settings ***
-Documentation Test suite for L2switch's LoopRemoval using mininet OF13
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Library OperatingSystem
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --custom customtopo.py --topo ring --switch ovsk,protocols=OpenFlow13
-
-** Keywords ***
-Start Suite
- Log Start mininet
- Open Connection ${MININET} prompt=> timeout=10
- Login With Public Key ${MININET_USER} ${USER_HOME}/.ssh/id_rsa any
- Write sudo ovs-vsctl set-manager ptcp:6644
- Write sudo mn -c
- Read Until >
- Put File ${CURDIR}/../topologies/customtopo.py
- Write ${start}
- Read Until mininet>
- Sleep 10
-Stop Suite
- Log Stop mininet
- Read
- Write exit
- Read Until >
- Read
- Close Connection
+++ /dev/null
-*** Settings ***
-Documentation Test suite for Address in RESTCONF topology
-Suite Setup Create Session session http://${CONTROLLER}:${PORT} auth=${AUTH} headers=${HEADERS_XML}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_TOPO} /restconf/operational/network-topology:network-topology
-${MAC_1} 00:00:00:00:00:01
-${MAC_2} 00:00:00:00:00:02
-${MAC_3} 00:00:00:00:00:03
-${IP_1} 10.0.0.1
-${IP_2} 10.0.0.2
-${IP_3} 10.0.0.3
-
-*** Test Cases ***
-Get list of host from network topology
- [Documentation] Get the network topology, should not contain any host address
- ${resp} Get session ${REST_TOPO}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Contain ${resp.content} openflow:1
- Should Contain ${resp.content} openflow:2
- Should Contain ${resp.content} openflow:3
- Should Contain X Times ${resp.content} link-id 4
- Should Not Contain ${resp.content} ${MAC_1}
- Should Not Contain ${resp.content} ${MAC_2}
- Should Not Contain ${resp.content} ${MAC_3}
-
-Ping All
- [Documentation] Pingall, verify no packet loss
- [Tags] Get
- Write pingall
- ${result} Read Until mininet>
- Should Contain ${result} 0% dropped
- Should Not Contain ${result} X
- Sleep 3
-
-Host Tracker
- [Documentation] Get the network topology,
- ${resp} Get session ${REST_TOPO}/topology/flow:1
- Should Be Equal As Strings ${resp.status_code} 200
- Log ${resp.content}
- Should Contain X Times ${resp.content} "node-id":"host:${MAC_1}" 1
- Should Contain X Times ${resp.content} "node-id":"host:${MAC_2}" 1
- Should Contain X Times ${resp.content} "node-id":"host:${MAC_3}" 1
-
-Check host are deleted
- [Documentation] Closing mininet this will remove the switch and the host should also be deleted
- Log closing mininet
- write exit
- Read Until >
- sleep 5
- ${resp} Get session ${REST_TOPO}/topology/flow:1
- Should Be Equal as Strings ${resp.status_code} 200
- Should not Contain ${resp.content} "node-id":"host
- Log ${resp.content}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for L2switch's Address Tracking using mininet OF13
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo=linear,3 --switch ovsk,protocols=OpenFlow13 --mac
-
-** Keywords ***
-Start Suite
- Log Start mininet
- Open Connection ${MININET} prompt=> timeout=20
- Login With Public Key ${MININET_USER} ${USER_HOME}/.ssh/id_rsa any
- Write sudo ovs-vsctl set-manager ptcp:6644
- Write sudo mn -c
- Read Until >
- Write ${start}
- Read Until mininet>
- Sleep 30
-Stop Suite
- Close Connection
+++ /dev/null
-# !/usr/bin/python
-
-# usage: sudo mn --controller=remote,ip=<controller_ip> --switch=ovsk,protocols=OpenFlow13 --custom <path to customtopo.py> --topo ring ...
-
-from mininet.topo import Topo
-
-
-def add_hosts_to_switch(self, switch, hosts, start_host_suffix):
- host_suffix = start_host_suffix
- for _ in range(hosts):
- host = self.addHost("h%s" % host_suffix)
- self.addLink(switch, host)
- host_suffix += 1
-
-
-class RingTopo(Topo):
- def __init__(self, switches=3, hosts_per_switch=1, **opts):
- Topo.__init__(self, **opts)
- host_suffix = 1
- switch = self.addSwitch('s%s' % 1)
- first_switch = switch
- for i in range(1, switches):
- # add hosts to switch
- add_hosts_to_switch(self, switch, hosts_per_switch, host_suffix)
- host_suffix += hosts_per_switch
-
- new_switch = self.addSwitch('s%s' % (i + 1))
- self.addLink(new_switch, switch)
- switch = new_switch
-
- add_hosts_to_switch(self, switch, hosts_per_switch, host_suffix)
- self.addLink(switch, first_switch)
-
-
-class MeshTopo(Topo):
- def __init__(self, switches=3, hosts_per_switch=1, **opts):
- Topo.__init__(self, **opts)
- created_switches = []
- host_suffix = 1
- for i in range(switches):
- new_switch = self.addSwitch('s%s' % (i + 1))
-
- # add hosts to new switch
- add_hosts_to_switch(self, new_switch, hosts_per_switch, host_suffix)
- host_suffix += hosts_per_switch
-
- for switch in created_switches:
- self.addLink(new_switch, switch)
-
- created_switches.append(new_switch)
-
-
-topos = {'ring': RingTopo,
- 'mesh': MeshTopo}
+++ /dev/null
-*** Settings ***
-Documentation Test suite for VTN Manager
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topology.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CONTEXT_VTNS} controller/nb/v2/vtn/default/vtns
-
-*** Test Cases ***
-Add a vtn Tenant1
- [Documentation] Add a vtn Tenant1
- [Tags] add
- Add a vtn Tenant1 {"description": "Virtual Tenant 1 for Hackfest network"}
-
-Add a vBridge vBridge1
- [Documentation] Add a vBridge vBridge1 in vtn Tenant1
- [Tags] add
- Add a vBridge Tenant1 vBridge1 {}
-
-Add a interface If1
- [Documentation] Add a interface if1 into vBridge vBrdige1
- [Tags] add
- Add a interface Tenant1 vBridge1 if1 {}
-
-Add a interface if2
- [Documentation] Add a interface if2 into vBridge vBrdige1
- [Tags] add
- Add a interface Tenant1 vBridge1 if2 {}
-
-Add a portmap for interface if1
- [Documentation] Create a portmap on Interface if1 of vBridge1
- [Tags] add
- ${node} Create Dictionary type OF id 00:00:00:00:00:00:00:02
- ${port} Create Dictionary name s2-eth1
- ${portmap_data} Create Dictionary node ${node} port ${port}
- Add a portmap Tenant1 vBridge1 if1 ${portmap_data}
-
-Add a portmap for interface if2
- [Documentation] Create a portmap on Interface if2 of vBridge1
- ${node} Create Dictionary type OF id 00:00:00:00:00:00:00:03
- ${port} Create Dictionary name s3-eth1
- ${portmap_data} Create Dictionary node ${node} port ${port}
- Add a portmap Tenant1 vBridge1 if2 ${portmap_data}
-
-Add a vBridge vBridge2
- [Documentation] Add a vBridge vBridge2 in vtn Tenant1
- [Tags] add
- Add a vBridge Tenant1 vBridge2 {}
-
-Add a interface If3
- [Documentation] Add a interface if3 into vBridge vBrdige2
- [Tags] add
- Add a interface Tenant1 vBridge2 if3 {}
-
-Add a interface if4
- [Documentation] Add a interface if4 into vBridge vBrdige2
- [Tags] add
- Add a interface Tenant1 vBridge2 if4 {}
-
-Add a portmap for interface if3
- [Documentation] Create a portmap on Interface if3 of vBridge2
- [Tags] add
- ${node} Create Dictionary type OF id 00:00:00:00:00:00:00:02
- ${port} Create Dictionary name s2-eth2
- ${portmap_data} Create Dictionary node ${node} port ${port}
- Add a portmap Tenant1 vBridge2 if3 ${portmap_data}
-
-Add a portmap for interface if4
- [Documentation] Create a portmap on Interface if4 of vBridge2
- ${node} Create Dictionary type OF id 00:00:00:00:00:00:00:03
- ${port} Create Dictionary name s3-eth2
- ${portmap_data} Create Dictionary node ${node} port ${port}
- Add a portmap Tenant1 vBridge2 if4 ${portmap_data}
-
-Ping h1 to h3
- [Documentation] Ping h1 to h3, verify no packet loss
- Write h1 ping -w 10 h3
- ${result} Read Until mininet>
- Should Contain ${result} 64 bytes
-
-Ping h2 to h4
- [Documentation] Ping h2 to h4, verify no packet loss
- Write h2 ping -w 10 h4
- ${result} Read Until mininet>
- Should Contain ${result} 64 bytes
-
-Delete a vtn Tenant1
- [Documentation] Delete a vtn Tenant1
- [Tags] delete
- Delete a vtn Tenant1
-
-*** Keywords ***
-Add a vtn
- [Arguments] ${vtn_name} ${vtn_data}
- [Documentation] Create a vtn with specified parameters.
- ${resp} Post session ${REST_CONTEXT_VTNS}/${vtn_name} data=${vtn_data}
- Should Be Equal As Strings ${resp.status_code} 201
-
-Delete a vtn
- [Arguments] ${vtn_name}
- [Documentation] Create a vtn with specified parameters.
- ${resp} Delete session ${REST_CONTEXT_VTNS}/${vtn_name}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Add a vBridge
- [Arguments] ${vtn_name} ${vBridge_name} ${vBridge_data}
- [Documentation] Create a vBridge in a VTN
- ${resp} Post session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name} data=${vBridge_data}
- Should Be Equal As Strings ${resp.status_code} 201
-
-Add a interface
- [Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${interface_data}
- [Documentation] Create a interface into a vBridge of a VTN
- ${resp} Post session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name} data=${interface_data}
- Should Be Equal As Strings ${resp.status_code} 201
-
-Add a portmap
- [Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${portmap_data}
- [Documentation] Create a portmap for a interface of a vbridge
- ${resp} Put session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap data=${portmap_data}
- Should Be Equal As Strings ${resp.status_code} 200
+++ /dev/null
-*** Settings ***
-Documentation Test suite for VTN Coordinator
-Suite Setup Create Session session http://${VTNC}:8083 headers=${VTNC_HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topology.py
-Variables ../../../variables/Variables.py
-
-
-
-*** Test Cases ***
-Add a ODL Controller
- [Documentation] Add a Controller
- [Tags] vtnc
- Add a Controller odc_test ${CONTROLLER}
-
-
-Verify the Controller Status is up
- [Documentation] Check Controller status
- [Tags] vtnc
- Check Controller Status odc_test
-
-
-Add a Vtn Tenant1
- [Documentation] Create Vtn Tenant1
- [Tags] vtnc
- Add a VTN Tenant1 VTN_TEST
-
-
-Create VBR in VTN Tenant1
- [Documentation] Create a VBR in Tenant1 as Vbridge1
- [Tags] vtnc
- Create VBR in VTN Tenant1 Vbridge1 odc_test
-
-
-Create VBRIF in VBRIDGE Vbridge1 Interface1
- [Documentation] Create an interface to Vbridge1
- [Tags] vtnc
- Create VBRIF in VBR Tenant1 Vbridge1 Interface1 Interface1
-
-
-Create VBRIF in VBRIDGE Vbridge1 Interface2
- [Documentation] Create an interface to Vbridge1
- [Tags] vtnc
- Create VBRIF in VBR Tenant1 Vbridge1 Interface2 Interface2
-
-
-Define Portmap for Interface1
- [Documentation] Map Interface1 to a logical port
- [Tags] vtnc
- Define Portmap for VBRIF Tenant1 Vbridge1 Interface1 PP-OF:00:00:00:00:00:00:00:03-s3-eth1
-
-
-Define Portmap for Interface2
- [Documentation] Map Interface2 to a logical port
- [Tags] vtnc
- Define Portmap for VBRIF Tenant1 Vbridge1 Interface2 PP-OF:00:00:00:00:00:00:00:02-s2-eth1
-
-
-Test Ping for Configuration1
- [Documentation] ping between hosts in mininet
- [Tags] vtnc
- Test Ping h1 h3
-
-
-Delete a VTN Tenant1
- [Documentation] Delete Vtn Tenant1
- [Tags] vtnc
- Delete a VTN Tenant1
-
-
-Delete a Controller odc1
- [Documentation] Delete Controller odc1
- [Tags] vtnc
- Remove Controller odc_test
-
-
-
-*** Keywords ***
-Add a Controller
- [Arguments] ${ctrlname} ${ctrlip}
- [Documentation] Create a controller
- ${controllerinfo} Create Dictionary controller_id ${ctrlname} type odc ipaddr ${CONTROLLER} version 1.0 auditstatus enable
- ${controllercreate} Create Dictionary controller ${controllerinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${CTRLS_CREATE} data=${controllercreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Remove Controller
- [Arguments] ${ctrlname}
- [Documentation] Delete a Controller
- ${resp} Delete session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- Should Be Equal As Strings ${resp.status_code} 204
-
-
-Check Controller Status
- [Arguments] ${ctrlname}
- [Documentation] Get controller status
- Sleep 15
- ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- ${contents} To JSON ${resp.content}
- ${controllerblock} Get From Dictionary ${contents} controller
- ${status} Get From Dictionary ${controllerblock} operstatus
- Should Be Equal As Strings ${status} up
-
-
-Add a VTN
- [Arguments] ${vtnname} ${vtndescription}
- [Documentation] Create VTN in Coordinator
- ${vtninfo} Create Dictionary vtn_name ${vtnname} description ${vtndescription}
- ${vtncreate} Create Dictionary vtn ${vtninfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS_CREATE} data=${vtncreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Delete a VTN
- [Arguments] ${vtnname}
- [Documentation] Delete a VTN Created
- ${resp} Delete session ${VTNWEBAPI}/${VTNS}/${vtnname}.json
- Should Be Equal As Strings ${resp.status_code} 204
-
-
-Create VBR in VTN
- [Arguments] ${vtnname} ${vbrname} ${ctrlname}
- [Documentation] Create VBR for VTN in Coordinator
- ${vbrinfo} Create Dictionary vbr_name ${vbrname} controller_id ${ctrlname} domain_id (DEFAULT)
- ${vbrcreate} Create Dictionary vbridge ${vbrinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS_CREATE} data=${vbrcreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Create VBRIF in VBR
- [Arguments] ${vtnname} ${vbrname} ${vbrifname} ${ifdescription}
- [Documentation] Create VBR Interface in VBR
- ${vbrifinfo} Create Dictionary if_name ${vbrifname} description ${ifdescription}
- ${vbrifcreate} Create Dictionary interface ${vbrifinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS_CREATE} data=${vbrifcreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Define Portmap for VBRIF
- [Arguments] ${vtnname} ${vbrname} ${vbrifname} ${logical_port_id}
- [Documentation] Map Interface to a logical port
- ${logical_port_info} Create Dictionary logical_port_id ${logical_port_id}
- ${portmapdefine} Create Dictionary portmap ${logical_port_info}
- ${resp} Put session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS}/${vbrifname}/${PORTMAP_CREATE} data=${portmapdefine}
- Should Be Equal As Strings ${resp.status_code} 204
-
-Test Ping
- [Arguments] ${host1} ${host2}
- [Documentation] Ping hosts to check connectivity
- Sleep 5
- Write ${host1} ping -w 10 ${host2}
- Sleep 10
- ${result} Read
- Should Contain ${result} 64 bytes
+++ /dev/null
-
-*** Settings ***
-Documentation Test suite for VTN Coordinator
-Suite Setup Create Session session http://${VTNC}:8083 headers=${VTNC_HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topology.py
-Variables ../../../variables/Variables.py
-
-
-*** Test Cases ***
-Add a ODL Controller
- [Documentation] Add a Controller odc1
- [Tags] vtnc
- Add a Controller odc_test ${CONTROLLER}
-
-Verify the Controller Status is up
- [Documentation] Check Controller status
- [Tags] vtnc
- Check Controller Status odc_test up 20
-
-Verify switch1
- [Documentation] Get switch1
- [Tags] vtnc
- Verify Switch odc_test 00:00:00:00:00:00:00:01 30
-
-Verify switch2
- [Documentation] Get switch2
- [Tags] vtnc
- Verify Switch odc_test 00:00:00:00:00:00:00:02 1
-
-Verify switch3
- [Documentation] Get switch3
- [Tags] vtnc
- Verify Switch odc_test 00:00:00:00:00:00:00:03 1
-
-Verify switchPort switch1
- [Documentation] Get switchport/switch1
- [Tags] vtnc
- Verify SwitchPort odc_test 00:00:00:00:00:00:00:01 15
-
-Verify switchPort switch2
- [Documentation] Get switchport/switch2
- [Tags] vtnc
- Verify SwitchPort odc_test 00:00:00:00:00:00:00:02 1
-
-Verify switchPort switch3
- [Documentation] Get switchport/switch3
- [Tags] vtnc
- Verify SwitchPort odc_test 00:00:00:00:00:00:00:03 1
-
-Delete a Controller
- [Documentation] Delete Controller odc1
- [Tags] vtnc
- Remove Controller odc_test
-
-
-*** Keywords ***
-Add a Controller
- [Arguments] ${ctrlname} ${ctrlip}
- [Documentation] Create a controller
- ${controllerinfo} Create Dictionary controller_id ${ctrlname} type odc ipaddr ${CONTROLLER} version 1.0 auditstatus enable
- ${controllercreate} Create Dictionary controller ${controllerinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${CTRLS_CREATE} data=${controllercreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Remove Controller
- [Arguments] ${ctrlname}
- [Documentation] Delete a Controller
- ${resp} Delete session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- Should Be Equal As Strings ${resp.status_code} 204
-
-Check Controller Status
- [Arguments] ${ctrlname} ${stat} ${sec}
- [Documentation] Get controller status
- Sleep ${sec}
- ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- ${contents} To JSON ${resp.content}
- ${controllerblock} Get From Dictionary ${contents} controller
- ${status} Get From Dictionary ${controllerblock} operstatus
- Should Be Equal As Strings ${status} ${stat}
-
-Verify Switch
- [Arguments] ${ctrlname} ${switch_id} ${sec}
- [Documentation] Get switch
- Sleep ${sec}
- ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}/${SW}/${switch_id}.json
- ${contents} To JSON ${resp.content}
- ${switchblock} Get From Dictionary ${contents} switch
- ${status} Get From Dictionary ${switchblock} switch_id
- Should Be Equal As Strings ${status} ${switch_id}
-
-Verify SwitchPort
- [Arguments] ${ctrlname} ${switch_id} ${sec}
- [Documentation] Get switch
- Sleep ${sec}
- ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}/${SW}/${switch_id}/${PORTS}
- Should Be Equal As Strings ${resp.status_code} 200
+++ /dev/null
-*** Settings ***
-Documentation Test suite for VTN Coordinator
-Suite Setup Create Session session http://${VTNC}:8083 headers=${VTNC_HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topology.py
-Variables ../../../variables/Variables.py
-
-
-*** Test Cases ***
-Add a ODL Controller
- [Documentation] Add a Controller
- [Tags] vtnc
- Add a Controller odc_test ${CONTROLLER}
-
-Verify the Controller Status is up
- [Documentation] Check Controller status
- [Tags] vtnc
- Check Controller Status odc_test up 20
-
-Add a Vtn Tenant1
- [Documentation] Create Vtn Tenant1
- [Tags] vtnc
- Add a VTN Tenant1 VTN_TEST
-
-Create VBR in VTN Tenant1
- [Documentation] Create a VBR in Tenant1 as Vbridge1
- [Tags] vtnc
- Create VBR in VTN Tenant1 Vbridge1 odc_test
-
-Update controller ip invalid
- [Documentation] Update Controller ip to invalid
- [Tags] vtnc
- Update Controller odc_test 10.0.0.1 invalid_IP
-
-Verify the Controller State is down
- [Documentation] Check Controller status
- [Tags] vtnc
- Check Controller Status odc_test down 45
-
-Create VBRIF in VBRIDGE Vbridge1 Interface1
- [Documentation] Create an interface to Vbridge1
- [Tags] vtnc
- Create VBRIF in VBR Tenant1 Vbridge1 Interface1 Interface1
-
-Create VBRIF in VBRIDGE Vbridge1 Interface2
- [Documentation] Create an interface to Vbridge1
- [Tags] vtnc
- Create VBRIF in VBR Tenant1 Vbridge1 Interface2 Interface2
-
-Update controller ip valid
- [Documentation] Update Controller ip to valid
- [Tags] vtnc
- Update Controller odc_test ${CONTROLLER} valid_IP
-
-Verify the Controller State is up
- [Documentation] Check Controller status
- [Tags] vtnc
- Check Controller Status odc_test up 45
-
-Define Portmap for Interface1
- [Documentation] Map Interface1 to a logical port
- [Tags] vtnc
- Define Portmap for VBRIF Tenant1 Vbridge1 Interface1 PP-OF:00:00:00:00:00:00:00:02-s2-eth1
-
-Define Portmap for Interface2
- [Documentation] Map Interface2 to a logical port
- [Tags] vtnc
- Define Portmap for VBRIF Tenant1 Vbridge1 Interface2 PP-OF:00:00:00:00:00:00:00:02-s2-eth2
-
-Test Ping for Configuration1
- [Documentation] ping between hosts in mininet
- [Tags] vtnc
- Test Ping h1 h2
-
-Delete a VTN Tenant1
- [Documentation] Delete Vtn Tenant1
- [Tags] vtnc
- Delete a VTN Tenant1
-
-Delete a Controller odc1
- [Documentation] Delete Controller odc1
- [Tags] vtnc
- Remove Controller odc_test
-
-
-*** Keywords ***
-Add a Controller
- [Arguments] ${ctrlname} ${ctrlip}
- [Documentation] Create a controller
- ${controllerinfo} Create Dictionary controller_id ${ctrlname} type odc ipaddr ${CONTROLLER} version 1.0 auditstatus enable
- ${controllercreate} Create Dictionary controller ${controllerinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${CTRLS_CREATE} data=${controllercreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Remove Controller
- [Arguments] ${ctrlname}
- [Documentation] Delete a Controller
- ${resp} Delete session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- Should Be Equal As Strings ${resp.status_code} 204
-
-
-Update Controller
- [Arguments] ${ctrlname} ${ctrlip} ${desc}
- [Documentation] Update controller
- ${controllerinfo} Create Dictionary description ${desc} ipaddr ${ctrlip} version 1.0 auditstatus enable
- ${controllerupdate} Create Dictionary controller ${controllerinfo}
- ${resp} Put session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json data=${controllerupdate}
- Should Be Equal As Strings ${resp.status_code} 204
-
-
-Check Controller Status
- [Arguments] ${ctrlname} ${stat} ${sec}
- [Documentation] Get controller status
- Sleep ${sec}
- ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- ${contents} To JSON ${resp.content}
- ${controllerblock} Get From Dictionary ${contents} controller
- ${status} Get From Dictionary ${controllerblock} operstatus
- Should Be Equal As Strings ${status} ${stat}
-
-
-Add a VTN
- [Arguments] ${vtnname} ${vtndescription}
- [Documentation] Create VTN in Coordinator
- ${vtninfo} Create Dictionary vtn_name ${vtnname} description ${vtndescription}
- ${vtncreate} Create Dictionary vtn ${vtninfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS_CREATE} data=${vtncreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Delete a VTN
- [Arguments] ${vtnname}
- [Documentation] Delete a VTN Created
- ${resp} Delete session ${VTNWEBAPI}/${VTNS}/${vtnname}.json
- Should Be Equal As Strings ${resp.status_code} 204
-
-
-Create VBR in VTN
- [Arguments] ${vtnname} ${vbrname} ${ctrlname}
- [Documentation] Create VBR for VTN in Coordinator
- ${vbrinfo} Create Dictionary vbr_name ${vbrname} controller_id ${ctrlname} domain_id (DEFAULT)
- ${vbrcreate} Create Dictionary vbridge ${vbrinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS_CREATE} data=${vbrcreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Create VBRIF in VBR
- [Arguments] ${vtnname} ${vbrname} ${vbrifname} ${ifdescription}
- [Documentation] Create VBR Interface in VBR
- ${vbrifinfo} Create Dictionary if_name ${vbrifname} description ${ifdescription}
- ${vbrifcreate} Create Dictionary interface ${vbrifinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS_CREATE} data=${vbrifcreate}
- Should Be Equal As Strings ${resp.status_code} 202
-
-
-Define Portmap for VBRIF
- [Arguments] ${vtnname} ${vbrname} ${vbrifname} ${logical_port_id}
- [Documentation] Map Interface to a logical port
- ${logical_port_info} Create Dictionary logical_port_id ${logical_port_id}
- ${portmapdefine} Create Dictionary portmap ${logical_port_info}
- ${resp} Put session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS}/${vbrifname}/${PORTMAP_CREATE} data=${portmapdefine}
- Should Be Equal As Strings ${resp.status_code} 204
-
-Test Ping
- [Arguments] ${host1} ${host2}
- [Documentation] Ping hosts to check connectivity
- Sleep 5
- Write ${host1} ping -w 10 ${host2}
- Sleep 10
- ${result} Read
- Should Contain ${result} 64 bytes
+++ /dev/null
-*** Settings ***
-Documentation Test suite for AD-SAL NSF
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2
-
-** Keywords ***
+++ /dev/null
-*** Settings ***
-Documentation Test suite for VTN Manager
-Suite Setup Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topology.py
-Variables ../../../variables/Variables.py
-
-*** Variables ***
-${REST_CONTEXT_VTNS} controller/nb/v2/vtn/default/vtns
-
-*** Test Cases ***
-Add a vtn Tenant1
- [Documentation] Add a vtn Tenant1
- [Tags] add
- Add a vtn Tenant1 {"description": "Virtual Tenant 1 for Hackfest network"}
-
-Add a vBridge vBridge1
- [Documentation] Add a vBridge vBridge1 in vtn Tenant1
- [Tags] add
- Add a vBridge Tenant1 vBridge1 {}
-
-Add a interface If1
- [Documentation] Add a interface if1 into vBrdige vBridge1
- [Tags] add
- Add a interface Tenant1 vBridge1 if1 {}
-
-Add a interface if2
- [Documentation] Add a interface if2 into vBrdige vBridge1
- [Tags] add
- Add a interface Tenant1 vBridge1 if2 {}
-
-Add a portmap for interface if1
- [Documentation] Create a portmap on Interface if1 of vBridge1
- [Tags] add
- ${node} Create Dictionary type OF id 00:00:00:00:00:00:00:02
- ${port} Create Dictionary name s2-eth1
- ${portmap_data} Create Dictionary node ${node} port ${port}
- Add a portmap Tenant1 vBridge1 if1 ${portmap_data}
-
-Add a portmap for interface if2
- [Documentation] Create a portmap on Interface if2 of vBridge1
- ${node} Create Dictionary type OF id 00:00:00:00:00:00:00:03
- ${port} Create Dictionary name s3-eth1
- ${portmap_data} Create Dictionary node ${node} port ${port}
- Add a portmap Tenant1 vBridge1 if2 ${portmap_data}
-
-Add a vBridge vBridge2
- [Documentation] Add a vBridge vBridge2 in vtn Tenant1
- [Tags] add
- Add a vBridge Tenant1 vBridge2 {}
-
-Add a interface If3
- [Documentation] Add a interface if3 into vBrdige vBridge2
- [Tags] add
- Add a interface Tenant1 vBridge2 if3 {}
-
-Add a interface if4
- [Documentation] Add a interface if4 into vBrdige vBridge2
- [Tags] add
- Add a interface Tenant1 vBridge2 if4 {}
-
-Add a portmap for interface if3
- [Documentation] Create a portmap on Interface if3 of vBridge2
- [Tags] add
- ${node} Create Dictionary type OF id 00:00:00:00:00:00:00:02
- ${port} Create Dictionary name s2-eth2
- ${portmap_data} Create Dictionary node ${node} port ${port}
- Add a portmap Tenant1 vBridge2 if3 ${portmap_data}
-
-Add a portmap for interface if4
- [Documentation] Create a portmap on Interface if4 of vBridge2
- ${node} Create Dictionary type OF id 00:00:00:00:00:00:00:03
- ${port} Create Dictionary name s3-eth2
- ${portmap_data} Create Dictionary node ${node} port ${port}
- Add a portmap Tenant1 vBridge2 if4 ${portmap_data}
-
-Ping h1 to h3
- [Documentation] Ping h1 to h3, verify no packet loss
- Write h1 ping -w 10 h3
- ${result} Read Until mininet>
- Should Contain ${result} 64 bytes
-
-Ping h2 to h4
- [Documentation] Ping h2 to h4, verify no packet loss
- Write h2 ping -w 10 h4
- ${result} Read Until mininet>
- Should Contain ${result} 64 bytes
-
-Delete a vtn Tenant1
- [Documentation] Delete a vtn Tenant1
- [Tags] delete
- Delete a vtn Tenant1
-
-*** Keywords ***
-Add a vtn
- [Arguments] ${vtn_name} ${vtn_data}
- [Documentation] Create a vtn with specified parameters.
- ${resp} Post session ${REST_CONTEXT_VTNS}/${vtn_name} data=${vtn_data}
- Should Be Equal As Strings ${resp.status_code} 201
-
-Delete a vtn
- [Arguments] ${vtn_name}
- [Documentation] Create a vtn with specified parameters.
- ${resp} Delete session ${REST_CONTEXT_VTNS}/${vtn_name}
- Should Be Equal As Strings ${resp.status_code} 200
-
-Add a vBridge
- [Arguments] ${vtn_name} ${vBridge_name} ${vBridge_data}
- [Documentation] Create a vBridge in a VTN
- ${resp} Post session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name} data=${vBridge_data}
- Should Be Equal As Strings ${resp.status_code} 201
-
-Add a interface
- [Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${interface_data}
- [Documentation] Create a interface into a vBridge of a VTN
- ${resp} Post session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name} data=${interface_data}
- Should Be Equal As Strings ${resp.status_code} 201
-
-Add a portmap
- [Arguments] ${vtn_name} ${vBridge_name} ${interface_name} ${portmap_data}
- [Documentation] Create a portmap for a interface of a vbridge
- ${resp} Put session ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap data=${portmap_data}
- Should Be Equal As Strings ${resp.status_code} 200
+++ /dev/null
-*** Settings ***
-Documentation Test suite for VTN Coordinator
-Suite Setup Create Session session http://${VTNC}:8083 headers=${VTNC_HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topology.py
-Variables ../../../variables/Variables.py
-
-
-
-*** Test Cases ***
-Add a ODL Controller
- [Documentation] Add a Controller
- [Tags] vtnc
- Add a Controller odc_test ${CONTROLLER}
-
-
-Verify the Controller Status is up
- [Documentation] Check Controller status
- [Tags] vtnc
- Check Controller Status odc_test
-
-
-Add a Vtn Tenant1
- [Documentation] Create Vtn Tenant1
- [Tags] vtnc
- Add a VTN Tenant1 VTN_TEST
-
-
-Create VBR in VTN Tenant1
- [Documentation] Create a VBR in Tenant1 as Vbridge1
- [Tags] vtnc
- Create VBR in VTN Tenant1 Vbridge1 odc_test
-
-
-Create VBRIF in VBRIDGE Vbridge1 Interface1
- [Documentation] Create an interface to Vbridge1
- [Tags] vtnc
- Create VBRIF in VBR Tenant1 Vbridge1 Interface1 Interface1
-
-
-Create VBRIF in VBRIDGE Vbridge1 Interface2
- [Documentation] Create an interface to Vbridge1
- [Tags] vtnc
- Create VBRIF in VBR Tenant1 Vbridge1 Interface2 Interface2
-
-
-Define Portmap for Interface1
- [Documentation] Map Interface1 to a logical port
- [Tags] vtnc
- Define Portmap for VBRIF Tenant1 Vbridge1 Interface1 PP-OF:00:00:00:00:00:00:00:03-s3-eth1
-
-
-Define Portmap for Interface2
- [Documentation] Map Interface2 to a logical port
- [Tags] vtnc
- Define Portmap for VBRIF Tenant1 Vbridge1 Interface2 PP-OF:00:00:00:00:00:00:00:02-s2-eth1
-
-
-Test Ping for Configuration1
- [Documentation] ping between hosts in mininet
- [Tags] vtnc
- Test Ping h1 h3
-
-
-Delete a VTN Tenant1
- [Documentation] Delete Vtn Tenant1
- [Tags] vtnc
- Delete a VTN Tenant1
-
-
-Delete a Controller odc1
- [Documentation] Delete Controller odc1
- [Tags] vtnc
- Remove Controller odc_test
-
-
-
-*** Keywords ***
-Add a Controller
- [Arguments] ${ctrlname} ${ctrlip}
- [Documentation] Create a controller
- ${controllerinfo} Create Dictionary controller_id ${ctrlname} type odc ipaddr ${CONTROLLER} version 1.0 auditstatus enable
- ${controllercreate} Create Dictionary controller ${controllerinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${CTRLS_CREATE} data=${controllercreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Remove Controller
- [Arguments] ${ctrlname}
- [Documentation] Delete a Controller
- ${resp} Delete session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- Should Be Equal As Strings ${resp.status_code} 204
-
-
-Check Controller Status
- [Arguments] ${ctrlname}
- [Documentation] Get controller status
- Sleep 15
- ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- ${contents} To JSON ${resp.content}
- ${controllerblock} Get From Dictionary ${contents} controller
- ${status} Get From Dictionary ${controllerblock} operstatus
- Should Be Equal As Strings ${status} up
-
-
-Add a VTN
- [Arguments] ${vtnname} ${vtndescription}
- [Documentation] Create VTN in Coordinator
- ${vtninfo} Create Dictionary vtn_name ${vtnname} description ${vtndescription}
- ${vtncreate} Create Dictionary vtn ${vtninfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS_CREATE} data=${vtncreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Delete a VTN
- [Arguments] ${vtnname}
- [Documentation] Delete a VTN Created
- ${resp} Delete session ${VTNWEBAPI}/${VTNS}/${vtnname}.json
- Should Be Equal As Strings ${resp.status_code} 204
-
-
-Create VBR in VTN
- [Arguments] ${vtnname} ${vbrname} ${ctrlname}
- [Documentation] Create VBR for VTN in Coordinator
- ${vbrinfo} Create Dictionary vbr_name ${vbrname} controller_id ${ctrlname} domain_id (DEFAULT)
- ${vbrcreate} Create Dictionary vbridge ${vbrinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS_CREATE} data=${vbrcreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Create VBRIF in VBR
- [Arguments] ${vtnname} ${vbrname} ${vbrifname} ${ifdescription}
- [Documentation] Create VBR Interface in VBR
- ${vbrifinfo} Create Dictionary if_name ${vbrifname} description ${ifdescription}
- ${vbrifcreate} Create Dictionary interface ${vbrifinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS_CREATE} data=${vbrifcreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Define Portmap for VBRIF
- [Arguments] ${vtnname} ${vbrname} ${vbrifname} ${logical_port_id}
- [Documentation] Map Interface to a logical port
- ${logical_port_info} Create Dictionary logical_port_id ${logical_port_id}
- ${portmapdefine} Create Dictionary portmap ${logical_port_info}
- ${resp} Put session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS}/${vbrifname}/${PORTMAP_CREATE} data=${portmapdefine}
- Should Be Equal As Strings ${resp.status_code} 204
-
-Test Ping
- [Arguments] ${host1} ${host2}
- [Documentation] Ping hosts to check connectivity
- Sleep 5
- Write ${host1} ping -w 10 ${host2}
- Sleep 10
- ${result} Read
- Should Contain ${result} 64 bytes
+++ /dev/null
-
-*** Settings ***
-Documentation Test suite for VTN Coordinator
-Suite Setup Create Session session http://${VTNC}:8083 headers=${VTNC_HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topology.py
-Variables ../../../variables/Variables.py
-
-
-*** Test Cases ***
-Add a ODL Controller
- [Documentation] Add a Controller odc1
- [Tags] vtnc
- Add a Controller odc_test ${CONTROLLER}
-
-Verify the Controller Status is up
- [Documentation] Check Controller status
- [Tags] vtnc
- Check Controller Status odc_test up 20
-
-Verify switch1
- [Documentation] Get switch1
- [Tags] vtnc
- Verify Switch odc_test 00:00:00:00:00:00:00:01 30
-
-Verify switch2
- [Documentation] Get switch2
- [Tags] vtnc
- Verify Switch odc_test 00:00:00:00:00:00:00:02 1
-
-Verify switch3
- [Documentation] Get switch3
- [Tags] vtnc
- Verify Switch odc_test 00:00:00:00:00:00:00:03 1
-
-Verify switchPort switch1
- [Documentation] Get switchport/switch1
- [Tags] vtnc
- Verify SwitchPort odc_test 00:00:00:00:00:00:00:01 15
-
-Verify switchPort switch2
- [Documentation] Get switchport/switch2
- [Tags] vtnc
- Verify SwitchPort odc_test 00:00:00:00:00:00:00:02 1
-
-Verify switchPort switch3
- [Documentation] Get switchport/switch3
- [Tags] vtnc
- Verify SwitchPort odc_test 00:00:00:00:00:00:00:03 1
-
-Delete a Controller
- [Documentation] Delete Controller odc1
- [Tags] vtnc
- Remove Controller odc_test
-
-
-*** Keywords ***
-Add a Controller
- [Arguments] ${ctrlname} ${ctrlip}
- [Documentation] Create a controller
- ${controllerinfo} Create Dictionary controller_id ${ctrlname} type odc ipaddr ${CONTROLLER} version 1.0 auditstatus enable
- ${controllercreate} Create Dictionary controller ${controllerinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${CTRLS_CREATE} data=${controllercreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Remove Controller
- [Arguments] ${ctrlname}
- [Documentation] Delete a Controller
- ${resp} Delete session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- Should Be Equal As Strings ${resp.status_code} 204
-
-Check Controller Status
- [Arguments] ${ctrlname} ${stat} ${sec}
- [Documentation] Get controller status
- Sleep ${sec}
- ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- ${contents} To JSON ${resp.content}
- ${controllerblock} Get From Dictionary ${contents} controller
- ${status} Get From Dictionary ${controllerblock} operstatus
- Should Be Equal As Strings ${status} ${stat}
-
-Verify Switch
- [Arguments] ${ctrlname} ${switch_id} ${sec}
- [Documentation] Get switch
- Sleep ${sec}
- ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}/${SW}/${switch_id}.json
- ${contents} To JSON ${resp.content}
- ${switchblock} Get From Dictionary ${contents} switch
- ${status} Get From Dictionary ${switchblock} switch_id
- Should Be Equal As Strings ${status} ${switch_id}
-
-Verify SwitchPort
- [Arguments] ${ctrlname} ${switch_id} ${sec}
- [Documentation] Get switch
- Sleep ${sec}
- ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}/${SW}/${switch_id}/${PORTS}
- Should Be Equal As Strings ${resp.status_code} 200
+++ /dev/null
-*** Settings ***
-Documentation Test suite for VTN Coordinator
-Suite Setup Create Session session http://${VTNC}:8083 headers=${VTNC_HEADERS}
-Suite Teardown Delete All Sessions
-Library SSHLibrary
-Library Collections
-Library ../../../libraries/RequestsLibrary.py
-Library ../../../libraries/Common.py
-Library ../../../libraries/Topology.py
-Variables ../../../variables/Variables.py
-
-
-*** Test Cases ***
-Add a ODL Controller
- [Documentation] Add a Controller
- [Tags] vtnc
- Add a Controller odc_test ${CONTROLLER}
-
-Verify the Controller Status is up
- [Documentation] Check Controller status
- [Tags] vtnc
- Check Controller Status odc_test up 20
-
-Add a Vtn Tenant1
- [Documentation] Create Vtn Tenant1
- [Tags] vtnc
- Add a VTN Tenant1 VTN_TEST
-
-Create VBR in VTN Tenant1
- [Documentation] Create a VBR in Tenant1 as Vbridge1
- [Tags] vtnc
- Create VBR in VTN Tenant1 Vbridge1 odc_test
-
-Update controller ip invalid
- [Documentation] Update Controller ip to invalid
- [Tags] vtnc
- Update Controller odc_test 10.0.0.1 invalid_IP
-
-Verify the Controller State is down
- [Documentation] Check Controller status
- [Tags] vtnc
- Check Controller Status odc_test down 45
-
-Create VBRIF in VBRIDGE Vbridge1 Interface1
- [Documentation] Create an interface to Vbridge1
- [Tags] vtnc
- Create VBRIF in VBR Tenant1 Vbridge1 Interface1 Interface1
-
-Create VBRIF in VBRIDGE Vbridge1 Interface2
- [Documentation] Create an interface to Vbridge1
- [Tags] vtnc
- Create VBRIF in VBR Tenant1 Vbridge1 Interface2 Interface2
-
-Update controller ip valid
- [Documentation] Update Controller ip to valid
- [Tags] vtnc
- Update Controller odc_test ${CONTROLLER} valid_IP
-
-Verify the Controller State is up
- [Documentation] Check Controller status
- [Tags] vtnc
- Check Controller Status odc_test up 45
-
-Define Portmap for Interface1
- [Documentation] Map Interface1 to a logical port
- [Tags] vtnc
- Define Portmap for VBRIF Tenant1 Vbridge1 Interface1 PP-OF:00:00:00:00:00:00:00:02-s2-eth1
-
-Define Portmap for Interface2
- [Documentation] Map Interface2 to a logical port
- [Tags] vtnc
- Define Portmap for VBRIF Tenant1 Vbridge1 Interface2 PP-OF:00:00:00:00:00:00:00:02-s2-eth2
-
-Test Ping for Configuration1
- [Documentation] ping between hosts in mininet
- [Tags] vtnc
- Test Ping h1 h2
-
-Delete a VTN Tenant1
- [Documentation] Delete Vtn Tenant1
- [Tags] vtnc
- Delete a VTN Tenant1
-
-Delete a Controller odc1
- [Documentation] Delete Controller odc1
- [Tags] vtnc
- Remove Controller odc_test
-
-
-*** Keywords ***
-Add a Controller
- [Arguments] ${ctrlname} ${ctrlip}
- [Documentation] Create a controller
- ${controllerinfo} Create Dictionary controller_id ${ctrlname} type odc ipaddr ${CONTROLLER} version 1.0 auditstatus enable
- ${controllercreate} Create Dictionary controller ${controllerinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${CTRLS_CREATE} data=${controllercreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Remove Controller
- [Arguments] ${ctrlname}
- [Documentation] Delete a Controller
- ${resp} Delete session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- Should Be Equal As Strings ${resp.status_code} 204
-
-
-Update Controller
- [Arguments] ${ctrlname} ${ctrlip} ${desc}
- [Documentation] Update controller
- ${controllerinfo} Create Dictionary description ${desc} ipaddr ${ctrlip} version 1.0 auditstatus enable
- ${controllerupdate} Create Dictionary controller ${controllerinfo}
- ${resp} Put session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json data=${controllerupdate}
- Should Be Equal As Strings ${resp.status_code} 204
-
-
-Check Controller Status
- [Arguments] ${ctrlname} ${stat} ${sec}
- [Documentation] Get controller status
- Sleep ${sec}
- ${resp} Get session ${VTNWEBAPI}/${CTRLS}/${ctrlname}.json
- ${contents} To JSON ${resp.content}
- ${controllerblock} Get From Dictionary ${contents} controller
- ${status} Get From Dictionary ${controllerblock} operstatus
- Should Be Equal As Strings ${status} ${stat}
-
-
-Add a VTN
- [Arguments] ${vtnname} ${vtndescription}
- [Documentation] Create VTN in Coordinator
- ${vtninfo} Create Dictionary vtn_name ${vtnname} description ${vtndescription}
- ${vtncreate} Create Dictionary vtn ${vtninfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS_CREATE} data=${vtncreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Delete a VTN
- [Arguments] ${vtnname}
- [Documentation] Delete a VTN Created
- ${resp} Delete session ${VTNWEBAPI}/${VTNS}/${vtnname}.json
- Should Be Equal As Strings ${resp.status_code} 204
-
-
-Create VBR in VTN
- [Arguments] ${vtnname} ${vbrname} ${ctrlname}
- [Documentation] Create VBR for VTN in Coordinator
- ${vbrinfo} Create Dictionary vbr_name ${vbrname} controller_id ${ctrlname} domain_id (DEFAULT)
- ${vbrcreate} Create Dictionary vbridge ${vbrinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS_CREATE} data=${vbrcreate}
- Should Be Equal As Strings ${resp.status_code} 201
-
-
-Create VBRIF in VBR
- [Arguments] ${vtnname} ${vbrname} ${vbrifname} ${ifdescription}
- [Documentation] Create VBR Interface in VBR
- ${vbrifinfo} Create Dictionary if_name ${vbrifname} description ${ifdescription}
- ${vbrifcreate} Create Dictionary interface ${vbrifinfo}
- ${resp} PostJson session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS_CREATE} data=${vbrifcreate}
- Should Be Equal As Strings ${resp.status_code} 202
-
-
-Define Portmap for VBRIF
- [Arguments] ${vtnname} ${vbrname} ${vbrifname} ${logical_port_id}
- [Documentation] Map Interface to a logical port
- ${logical_port_info} Create Dictionary logical_port_id ${logical_port_id}
- ${portmapdefine} Create Dictionary portmap ${logical_port_info}
- ${resp} Put session ${VTNWEBAPI}/${VTNS}/${vtnname}/${VBRS}/${vbrname}/${VBRIFS}/${vbrifname}/${PORTMAP_CREATE} data=${portmapdefine}
- Should Be Equal As Strings ${resp.status_code} 204
-
-Test Ping
- [Arguments] ${host1} ${host2}
- [Documentation] Ping hosts to check connectivity
- Sleep 5
- Write ${host1} ping -w 10 ${host2}
- Sleep 10
- ${result} Read
- Should Contain ${result} 64 bytes
+++ /dev/null
-*** Settings ***
-Documentation Test suite for AD-SAL NSF mininet OF13
-Suite Setup Start Suite
-Suite Teardown Stop Suite
-Library SSHLibrary
-Resource ../../../libraries/Utils.txt
-
-*** Variables ***
-${start}= sudo mn --controller=remote,ip=${CONTROLLER} --topo tree,2 --switch ovsk,protocols=OpenFlow13
-
-** Keywords ***
*** Settings ***
Documentation Test suite for AddressObservations in RESTCONF inventory
-Suite Setup Create Session session http://${CONTROLLER}:${PORT} auth=${AUTH} headers=${HEADERS_XML}
+Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
Suite Teardown Delete All Sessions
Library SSHLibrary
Library Collections
** Settings ***
Documentation Test suite for FlowProgramming in RESTCONF inventory
-Suite Setup Create Session session http://${CONTROLLER}:${PORT} auth=${AUTH} headers=${HEADERS_XML}
+Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
Suite Teardown Delete All Sessions
Library SSHLibrary
Library Collections
*** Settings ***
Documentation Test suite for Address in RESTCONF topology
-Suite Setup Create Session session http://${CONTROLLER}:${PORT} auth=${AUTH} headers=${HEADERS_XML}
+Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
Suite Teardown Delete All Sessions
Library SSHLibrary
Library Collections
*** Settings ***
Documentation Test suite for Ring/Loop topology of size 3
-Suite Setup Create Session session http://${CONTROLLER}:${PORT} auth=${AUTH} headers=${HEADERS_XML}
+Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
Suite Teardown Delete All Sessions
Library Collections
Library ../../../libraries/RequestsLibrary.py
*** Settings ***
Documentation Test suite for Pinging in Ring/Loop topology of size 3
-Suite Setup Create Session session http://${CONTROLLER}:${PORT} auth=${AUTH} headers=${HEADERS_XML}
+Suite Setup Create Session session http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
Suite Teardown Delete All Sessions
Library SSHLibrary
Library Collections
--- /dev/null
+# Place the suites in run order:
+integration/test/csit/suites/aaa/authn
+
--- /dev/null
+# Place the suites in run order:
+integration/test/csit/suites/controller/MD_SAL_NSF_OF10
+integration/test/csit/suites/controller/AD_SAL_NSF_OF10
+integration/test/csit/suites/controller/Inventory_Scalability_OF10
+integration/test/csit/suites/controller/MD_SAL_NSF_OF13
+integration/test/csit/suites/controller/AD_SAL_NSF_OF13
+integration/test/csit/suites/controller/Inventory_Scalability_OF13
+
# Place the suites in run order:
integration/test/csit/suites/l2switch/Address_Tracking_OF13
-integration/test/csit/suites/l2switch/Flow_Programming_OF13
-integration/test/csit/suites/l2switch/Loop_Removal_OF13
-integration/test/csit/suites/l2switch/Host_Tracking_OF13
+integration/test/csit/suites/l2switch/Flow_Programming_OF13
+integration/test/csit/suites/l2switch/Loop_Removal_OF13
+integration/test/csit/suites/l2switch/Host_Tracking_OF13
integration/test/csit/suites/l2switch/Inventory_Scalability_OF13
+
--- /dev/null
+# Place the suites in run order:
+integration/test/csit/suites/openflowplugin/Flows_OF13
+integration/test/csit/suites/openflowplugin/Flows_Stats_OF13
+integration/test/csit/suites/openflowplugin/Groups_Meters_OF13
--- /dev/null
+# Place the suites in run order:
+integration/test/csit/suites/vtn/VTN_Mgr_OF10
+integration/test/csit/suites/vtn/VTN_Mgr_OF13
+