*** Settings ***
Documentation Library containing Keywords used for SXP testing
+Library Collections
Library RequestsLibrary
Library SSHLibrary
Library String
*** Keywords ***
Add Connection
- [Arguments] ${version} ${mode} ${ip} ${port} ${node}=127.0.0.1 ${password}=none ${session}=session
- [Documentation] Add connection via RCP to node
- ${DATA} Add Connection Xml ${version} ${mode} ${ip} ${port} ${node} ${password}
- ${resp} RequestsLibrary.Post ${session} ${REST_CONTEXT}:add-connection data=${DATA} headers=${HEADERS_XML}
+ [Arguments] ${version} ${mode} ${ip} ${port} ${node}=127.0.0.1 ${password}=none
+ ... ${session}=session
+ [Documentation] Add connection via RPC to node
+ ${DATA} Add Connection Xml ${version} ${mode} ${ip} ${port} ${node}
+ ... ${password}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:add-connection data=${DATA} headers=${HEADERS_XML}
+ LOG ${resp}
Should be Equal As Strings ${resp.status_code} 200
Get Connections
- [Arguments] ${node}=127.0.0.1 ${session}=session
- [Documentation] Gets all connections vie RPC from node
- ${DATA} Get Connections From Node Xml ${node}
- ${resp} RequestsLibrary.Post ${session} ${REST_CONTEXT}:get-connections data=${DATA} headers=${HEADERS_XML}
+ [Arguments] ${node}=127.0.0.1 ${session}=session
+ [Documentation] Gets all connections via RPC from node
+ ${DATA} Get Connections From Node Xml ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:get-connections data=${DATA} headers=${HEADERS_XML}
Should be Equal As Strings ${resp.status_code} 200
[Return] ${resp.content}
Delete Connections
- [Arguments] ${ip} ${port} ${node}=127.0.0.1 ${session}=session
+ [Arguments] ${ip} ${port} ${node}=127.0.0.1 ${session}=session
[Documentation] Delete connection via RPC from node
- ${DATA} Delete Connections Xml ${ip} ${port} ${node}
- ${resp} RequestsLibrary.Post ${session} ${REST_CONTEXT}:delete-connection data=${DATA} headers=${HEADERS_XML}
+ ${DATA} Delete Connections Xml ${ip} ${port} ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:delete-connection data=${DATA} headers=${HEADERS_XML}
Should be Equal As Strings ${resp.status_code} 200
Clean Connections
- [Arguments] ${node}=127.0.0.1 ${session}=session
- [Documentation] Delete all connections via RPC from node
- ${resp} Get Connections ${node} ${session}
- @{connections} Parse Connections ${resp}
- :FOR ${connection} IN @{connections}
- \ delete connections ${connection['peer-address']} ${connection['tcp-port']} ${node} ${session}
+ [Arguments] ${node}=127.0.0.1 ${session}=session
+ [Documentation] Delete all connections via RPC from node
+ ${resp} Get Connections ${node} ${session}
+ @{connections} Parse Connections ${resp}
+ : FOR ${connection} IN @{connections}
+ \ delete connections ${connection['peer-address']} ${connection['tcp-port']} ${node} ${session}
+
+Verify Connection
+ [Arguments] ${version} ${mode} ${ip} ${port}=64999 ${node}=127.0.0.1 ${state}=on
+ [Documentation] Verify that connection is ON
+ ${resp} Get Connections ${node}
+ Should Contain Connection ${resp} ${ip} ${port} ${mode} ${version} ${state}
Add Binding
- [Arguments] ${sgt} ${prefix} ${node}=127.0.0.1 ${session}=session
+ [Arguments] ${sgt} ${prefix} ${node}=127.0.0.1 ${session}=session
[Documentation] Add binding via RPC to Master DB of node
- ${DATA} Add Entry Xml ${sgt} ${prefix} ${node}
- ${resp} RequestsLibrary.Post ${session} ${REST_CONTEXT}:add-entry data=${DATA} headers=${HEADERS_XML}
+ ${DATA} Add Entry Xml ${sgt} ${prefix} ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:add-entry data=${DATA} headers=${HEADERS_XML}
+ LOG ${resp.content}
Should be Equal As Strings ${resp.status_code} 200
Get Bindings
- [Arguments] ${node}=127.0.0.1 ${session}=session
+ [Arguments] ${node}=127.0.0.1 ${session}=session
[Documentation] Gets all binding via RPC from Master DB of node
- ${DATA} Get Bindings From Node Xml ${node}
- ${resp} RequestsLibrary.Post ${session} ${REST_CONTEXT}:get-node-bindings data=${DATA} headers=${HEADERS_XML}
+ ${DATA} Get Bindings From Node Xml ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:get-node-bindings data=${DATA} headers=${HEADERS_XML}
Should be Equal As Strings ${resp.status_code} 200
[Return] ${resp.content}
Clean Bindings
- [Arguments] ${node}=127.0.0.1 ${session}=session
+ [Arguments] ${node}=127.0.0.1 ${session}=session
[Documentation] Delete all bindings via RPC from Master DB of node
- ${resp} Get Bindings Master Database ${node} ${session}
- @{prefixes} Parse Prefix Groups ${resp} local
- :FOR ${prefix} IN @{prefixes}
- \ Clean Binding ${prefix} ${prefix['binding']} ${node} ${session}
+ ${resp} Get Bindings Master Database ${node} ${session}
+ @{prefixes} Parse Prefix Groups ${resp} local
+ : FOR ${prefix} IN @{prefixes}
+ \ Clean Binding ${prefix} ${prefix['binding']} ${node} ${session}
Clean Binding
- [Documentation] Used for nester FOR loop
- [Arguments] ${prefix} ${bindings} ${node} ${session}
- :FOR ${binding} IN @{bindings}
- \ Delete Binding ${prefix['sgt']} ${binding['ip-prefix']} ${node} ${session}
+ [Arguments] ${prefix} ${bindings} ${node} ${session}
+ [Documentation] Used for nester FOR loop
+ : FOR ${binding} IN @{bindings}
+ \ Delete Binding ${prefix['sgt']} ${binding['ip-prefix']} ${node} ${session}
Get Bindings Master Database
- [Arguments] ${node}=127.0.0.1 ${session}=session
- [Documentation] Gets content of Master DB from node
- ${resp} RequestsLibrary.Get ${session} /restconf/operational/network-topology:network-topology/topology/sxp/node/${node}/master-database/ headers=${HEADERS_XML}
+ [Arguments] ${node}=127.0.0.1 ${session}=session
+ [Documentation] Gets content of Master DB from node
+ ${resp} Get Request ${session} /restconf/operational/network-topology:network-topology/topology/sxp/node/${node}/master-database/ headers=${HEADERS_XML}
Should be Equal As Strings ${resp.status_code} 200
[Return] ${resp.content}
Update Binding
- [Arguments] ${sgtOld} ${prefixOld} ${sgtNew} ${prefixNew} ${node}=127.0.0.1 ${session}=session
+ [Arguments] ${sgtOld} ${prefixOld} ${sgtNew} ${prefixNew} ${node}=127.0.0.1 ${session}=session
[Documentation] Updates value of binding via RPC in Master DB of node
- ${DATA} Update Binding Xml ${sgtOld} ${prefixOld} ${sgtNew} ${prefixNew} ${node}
- ${resp} RequestsLibrary.Post ${session} ${REST_CONTEXT}:update-entry data=${DATA} headers=${HEADERS_XML}
+ ${DATA} Update Binding Xml ${sgtOld} ${prefixOld} ${sgtNew} ${prefixNew} ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:update-entry data=${DATA} headers=${HEADERS_XML}
Should be Equal As Strings ${resp.status_code} 200
Delete Binding
- [Arguments] ${sgt} ${prefix} ${node}=127.0.0.1 ${session}=session
+ [Arguments] ${sgt} ${prefix} ${node}=127.0.0.1 ${session}=session
[Documentation] Delete binding via RPC from Master DB of node
- ${DATA} Delete Binding Xml ${sgt} ${prefix} ${node}
- ${resp} RequestsLibrary.Post ${session} ${REST_CONTEXT}:delete-entry data=${DATA} headers=${HEADERS_XML}
+ ${DATA} Delete Binding Xml ${sgt} ${prefix} ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:delete-entry data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+
+Add PeerGroup
+ [Arguments] ${name} ${peers}= ${node}=127.0.0.1 ${session}=session
+ [Documentation] Adds new PeerGroup via RPC to Node
+ ${DATA} Add Peer Group Xml ${name} ${peers} ${node}
+ LOG ${DATA}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:add-peer-group data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+
+Delete Peer Group
+ [Arguments] ${name} ${node}=127.0.0.1 ${session}=session
+ [Documentation] Delete PeerGroup via RPC from Node
+ ${DATA} Delete Peer Group Xml ${name} ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:delete-peer-group data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+
+Get Peer Groups
+ [Arguments] ${node}=127.0.0.1 ${session}=session
+ [Documentation] Gets all PeerGroups via RPC from node
+ ${DATA} Get Peer Groups From Node Xml ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:get-peer-groups data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+ [Return] ${resp.content}
+
+Clean Peer Groups
+ [Arguments] ${node}=127.0.0.1 ${session}=session
+ [Documentation] Delete all PeerGroups via RPC from node
+ ${resp} Get Peer Groups ${node} ${session}
+ @{prefixes} Parse Peer Groups ${resp}
+ : FOR ${group} IN @{prefixes}
+ \ Delete Peer Group ${group['name']} ${node} ${session}
+
+Add Filter
+ [Arguments] ${name} ${type} ${entries} ${node}=127.0.0.1 ${session}=session
+ [Documentation] Add Filter via RPC from Node
+ ${DATA} Add Filter Xml ${name} ${type} ${entries} ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:add-filter data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+
+Delete Filter
+ [Arguments] ${name} ${type} ${node}=127.0.0.1 ${session}=session
+ [Documentation] Delete Filter via RPC from Node
+ ${DATA} Delete Filter Xml ${name} ${type} ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:delete-filter data=${DATA} headers=${HEADERS_XML}
Should be Equal As Strings ${resp.status_code} 200
Should Contain Binding
- [Documentation] Tests if data contains specified binding
- [Arguments] ${resp} ${sgt} ${prefix} ${db_source}=local
- ${out} Find Binding ${resp} ${sgt} ${prefix} ${db_source} add
- Should Be True ${out} Doesn't have ${sgt} ${prefix}
- ${out} Find Binding ${resp} ${sgt} ${prefix} ${db_source} delete
- Should Not Be True ${out} Should't have ${sgt} ${prefix}
+ [Arguments] ${resp} ${sgt} ${prefix} ${db_source}=local
+ [Documentation] Tests if data contains specified binding
+ ${out} Find Binding ${resp} ${sgt} ${prefix} ${db_source} add
+ Should Be True ${out} Doesn't have ${sgt} ${prefix}
+ ${out} Find Binding ${resp} ${sgt} ${prefix} ${db_source} delete
+ Should Not Be True ${out} Should't have ${sgt} ${prefix}
Should Not Contain Binding
- [Documentation] Tests if data doesn't contains specified binding
- [Arguments] ${resp} ${sgt} ${prefix} ${db_source}=local
- ${out} Find Binding ${resp} ${sgt} ${prefix} ${db_source} add
- Should Not Be True ${out} Should't have ${sgt} ${prefix}
+ [Arguments] ${resp} ${sgt} ${prefix} ${db_source}=local
+ [Documentation] Tests if data doesn't contains specified binding
+ ${out} Find Binding ${resp} ${sgt} ${prefix} ${db_source} add
+ Should Not Be True ${out} Should't have ${sgt} ${prefix}
Should Contain Binding With Peer Sequence
- [Documentation] Tests if data contains specified binding with peer sequence
- [Arguments] ${resp} ${sgt} ${prefix} ${source} ${seq}=0 ${db_source}=local
- ${out} Find Binding With Peer Sequence ${resp} ${sgt} ${prefix} ${db_source} add ${source} ${seq}
- Should Be True ${out} Doesn't have ${sgt} ${prefix} ${source} ${seq} ${db_source}
+ [Arguments] ${resp} ${sgt} ${prefix} ${source} ${seq}=0 ${db_source}=local
+ [Documentation] Tests if data contains specified binding with peer sequence
+ ${out} Find Binding With Peer Sequence ${resp} ${sgt} ${prefix} ${db_source} add
+ ... ${source} ${seq}
+ Should Be True ${out} Doesn't have ${sgt} ${prefix} ${source} ${seq} ${db_source}
Should Not Contain Binding With Peer Sequence
- [Documentation] Tests if data doesn't contains specified binding with peer sequence
- [Arguments] ${resp} ${sgt} ${prefix} ${source} ${seq}=0 ${db_source}=local
- ${out} Find Binding With Peer Sequence ${resp} ${sgt} ${prefix} ${db_source} add ${source} ${seq}
- Should Not Be True ${out} Should't have ${sgt} ${prefix} ${source} ${seq} ${db_source}
+ [Arguments] ${resp} ${sgt} ${prefix} ${source} ${seq}=0 ${db_source}=local
+ [Documentation] Tests if data doesn't contains specified binding with peer sequence
+ ${out} Find Binding With Peer Sequence ${resp} ${sgt} ${prefix} ${db_source} add
+ ... ${source} ${seq}
+ Should Not Be True ${out} Should't have ${sgt} ${prefix} ${source} ${seq} ${db_source}
Should Contain Connection
- [Documentation] Test if data contains specified connection
- [Arguments] ${resp} ${ip} ${port} ${mode} ${version} ${state}=none
- ${out} Find Connection ${resp} ${version} ${mode} ${ip} ${port} ${state}
- Should Be True ${out} Doesn't have ${ip}:${port} ${mode} ${version}
+ [Arguments] ${resp} ${ip} ${port} ${mode} ${version} ${state}=none
+ [Documentation] Test if data contains specified connection
+ ${out} Find Connection ${resp} ${version} ${mode} ${ip} ${port}
+ ... ${state}
+ Should Be True ${out} Doesn't have ${ip}:${port} ${mode} ${version}
Should Not Contain Connection
- [Documentation] Test if data doesn't contains specified connection
- [Arguments] ${resp} ${ip} ${port} ${mode} ${version} ${state}=none
- ${out} Find Connection ${resp} ${version} ${mode} ${ip} ${port} ${state}
- Should Not Be True ${out} Shouldn't have ${ip}:${port} ${mode} ${version}
+ [Arguments] ${resp} ${ip} ${port} ${mode} ${version} ${state}=none
+ [Documentation] Test if data doesn't contains specified connection
+ ${out} Find Connection ${resp} ${version} ${mode} ${ip} ${port}
+ ... ${state}
+ Should Not Be True ${out} Shouldn't have ${ip}:${port} ${mode} ${version}
+
+Setup Topology Complex
+ [Arguments] ${version}=version4 ${PASSWORD}=none
+ : FOR ${node} IN RANGE 2 6
+ \ Add Connection ${version} both 127.0.0.1 64999 127.0.0.${node}
+ \ ... ${PASSWORD}
+ \ Add Connection ${version} both 127.0.0.${node} 64999 127.0.0.1
+ \ ... ${PASSWORD}
+ \ Wait Until Keyword Succeeds 15 4 Verify Connection ${version} both
+ \ ... 127.0.0.${node}
+ \ Add Binding ${node}0 10.10.10.${node}0/32 127.0.0.${node}
+ \ Add Binding ${node}0 10.10.${node}0.0/24 127.0.0.${node}
+ \ Add Binding ${node}0 10.${node}0.0.0/16 127.0.0.${node}
+ \ Add Binding ${node}0 ${node}0.0.0.0/8 127.0.0.${node}
+ Add Binding 10 10.10.10.10/32 127.0.0.1
+ Add Binding 10 10.10.10.0/24 127.0.0.1
+ Add Binding 10 10.10.0.0/16 127.0.0.1
+ Add Binding 10 10.0.0.0/8 127.0.0.1
Setup SXP Environment
[Documentation] Create session to Controller
- Verify Feature Is Installed odl-sxp-all
+ Verify Feature Is Installed odl-sxp-all
Create Session session url=http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
- Wait Until Keyword Succeeds 15 3 Get Bindings Master Database
+ Wait Until Keyword Succeeds 15 3 Get Bindings Master Database
Clean SXP Environment
[Documentation] Destroy created sessions