return found
-def add_entry_xml(sgt, prefix, ip):
+def add_entry_xml(sgt, prefix, ip, domain_name):
"""Generate xml for Add Bindings request
:param sgt: Source Group Tag
:type prefix: string
:param ip: Ipv4 address of node
:type ip: string
+ :param domain_name: Name of Domain
+ :type domain_name: string
:returns: String containing xml data for request
"""
templ = Template('''<input>
<requested-node xmlns="urn:opendaylight:sxp:controller">$ip</requested-node>
+ $domain
<sgt xmlns="urn:opendaylight:sxp:controller">$sgt</sgt>
<ip-prefix xmlns="urn:opendaylight:sxp:controller">$prefix</ip-prefix>
</input>''')
- data = templ.substitute({'sgt': sgt, 'prefix': prefix, 'ip': ip})
+ data = templ.substitute({'sgt': sgt, 'prefix': prefix, 'ip': ip, 'domain': get_domain_name(domain_name)})
return data
-def add_connection_xml(version, mode, ip, port, node, password_):
+def add_connection_xml(version, mode, ip, port, node, password_, domain_name):
"""Generate xml for Add Connection request
:param version: Version of SXP protocol (version1/2/3/4)
:type node: string
:param password_: Password type (none/default)
:type password_: string
+ :param domain_name: Name of Domain
+ :type domain_name: string
:returns: String containing xml data for request
"""
templ = Template('''<input>
<requested-node xmlns="urn:opendaylight:sxp:controller">$node</requested-node>
+ $domain
<connections xmlns="urn:opendaylight:sxp:controller">
<connection>
<peer-address>$ip</peer-address>
</input>
''')
data = templ.substitute(
- {'ip': ip, 'port': port, 'mode': mode, 'version': version, 'node': node, 'password_': password_})
+ {'ip': ip, 'port': port, 'mode': mode, 'version': version, 'node': node,
+ 'password_': password_, 'domain': get_domain_name(domain_name)})
return data
-def delete_connections_xml(address, port, node):
+def delete_connections_xml(address, port, node, domain_name):
"""Generate xml for Delete Connection request
:param address: Ipv4/6 address of remote peer
:type port: string
:param node: Ipv4 address of node
:type node: string
+ :param domain_name: Name of Domain
+ :type domain_name: string
:returns: String containing xml data for request
"""
templ = Template('''<input>
<requested-node xmlns="urn:opendaylight:sxp:controller">$node</requested-node>
+ $domain
<peer-address xmlns="urn:opendaylight:sxp:controller">$address</peer-address>
<tcp-port xmlns="urn:opendaylight:sxp:controller">$port</tcp-port>
</input>''')
- data = templ.substitute({'address': address, 'port': port, 'node': node})
+ data = templ.substitute({'address': address, 'port': port, 'node': node, 'domain': get_domain_name(domain_name)})
return data
-def update_binding_xml(sgt0, prefix0, sgt1, prefix1, ip):
+def update_binding_xml(sgt0, prefix0, sgt1, prefix1, ip, domain_name):
"""Generate xml for Update Binding request
:param sgt0: Original Source Group Tag
:type prefix1: string
:param ip: Ipv4 address of node
:type ip: string
+ :param domain_name: Name of Domain
+ :type domain_name: string
:returns: String containing xml data for request
"""
templ = Template('''<input>
<requested-node xmlns="urn:opendaylight:sxp:controller">$ip</requested-node>
+ $domain
<original-binding xmlns="urn:opendaylight:sxp:controller">
<sgt>$sgt0</sgt>
<ip-prefix>$prefix0</ip-prefix>
</new-binding>
</input>''')
data = templ.substitute(
- {'sgt0': sgt0, 'sgt1': sgt1, 'prefix0': prefix0, 'prefix1': prefix1, 'ip': ip})
+ {'sgt0': sgt0, 'sgt1': sgt1, 'prefix0': prefix0, 'prefix1': prefix1, 'ip': ip,
+ 'domain': get_domain_name(domain_name)})
return data
-def delete_binding_xml(sgt, prefix, ip):
+def delete_binding_xml(sgt, prefix, ip, domain_name):
"""Generate xml for Delete Binding request
:param sgt: Source Group Tag
:type prefix: string
:param ip: Ipv4 address of node
:type ip: string
+ :param domain_name: Name of Domain
+ :type domain_name: string
:returns: String containing xml data for request
"""
<requested-node xmlns="urn:opendaylight:sxp:controller">$ip</requested-node>
<sgt xmlns="urn:opendaylight:sxp:controller">$sgt</sgt>
<ip-prefix xmlns="urn:opendaylight:sxp:controller">$prefix</ip-prefix>
+ $domain
</input>''')
- data = templ.substitute({'sgt': sgt, 'prefix': prefix, 'ip': ip})
+ data = templ.substitute({'sgt': sgt, 'prefix': prefix, 'ip': ip, 'domain': get_domain_name(domain_name)})
return data
return data
-def get_connections_from_node_xml(ip):
+def get_connections_from_node_xml(ip, domain_name):
"""Generate xml for Get Connections request
:param ip: Ipv4 address of node
:type ip: string
+ :param domain_name: Name of Domain
+ :type domain_name: string
:returns: String containing xml data for request
"""
templ = Template('''<input>
<requested-node xmlns="urn:opendaylight:sxp:controller">$ip</requested-node>
+ $domain
</input>''')
- data = templ.substitute({'ip': ip})
+ data = templ.substitute({'ip': ip, 'domain': get_domain_name(domain_name)})
return data
-def get_bindings_from_node_xml(ip, binding_range):
+def get_bindings_from_node_xml(ip, binding_range, domain_name):
"""Generate xml for Get Bindings request
:param binding_range: All or only Local bindings
:type binding_range: string
:param ip: Ipv4 address of node
:type ip: string
+ :param domain_name: Name of Domain
+ :type domain_name: string
:returns: String containing xml data for request
"""
templ = Template('''<input>
<requested-node xmlns="urn:opendaylight:sxp:controller">$ip</requested-node>
<bindings-range xmlns="urn:opendaylight:sxp:controller">$range</bindings-range>
+ $domain
+</input>''')
+ data = templ.substitute({'ip': ip, 'range': binding_range, 'domain': get_domain_name(domain_name)})
+ return data
+
+
+def add_node_xml(node_id, port, password, version, node_ip=None, expansion=0):
+ """Generate xml for Add Node request
+
+ :param node_id: Ipv4 address formatted node id
+ :type node_id: string
+ :param node_ip: Ipv4 address of node
+ :type node_ip: string
+ :param port: Node port number
+ :type port: int
+ :param expansion: Bindings expansion
+ :type expansion: int
+ :returns: String containing xml data for request
+
+ """
+ if node_ip is None:
+ node_ip = node_id
+ templ = Template('''<input xmlns="urn:opendaylight:sxp:controller">
+ <node-id>$id</node-id>
+ <timers>
+ <retry-open-time>1</retry-open-time>
+ <hold-time-min-acceptable>120</hold-time-min-acceptable>
+ <delete-hold-down-time>120</delete-hold-down-time>
+ <hold-time-min>90</hold-time-min>
+ <reconciliation-time>120</reconciliation-time>
+ <hold-time>90</hold-time>
+ <hold-time-max>180</hold-time-max>
+ <keep-alive-time>30</keep-alive-time>
+ </timers>
+ <mapping-expanded>$expansion</mapping-expanded>
+ <security>
+ <password>$password</password>
+ </security>
+ <tcp-port>$port</tcp-port>
+ <version>$version</version>
+ <description>ODL SXP Controller</description>
+ <source-ip>$ip</source-ip>
+ <master-database></master-database>
+</input>''')
+ data = templ.substitute(
+ {'ip': node_ip, 'id': node_id, 'port': port, 'password': password, 'version': version, 'expansion': expansion})
+ return data
+
+
+def delete_node_xml(node_id):
+ """Generate xml for Delete node request
+
+ :param node_id: Ipv4 address formatted node id
+ :type node_id: string
+ :returns: String containing xml data for request
+
+ """
+ templ = Template('''<input xmlns="urn:opendaylight:sxp:controller">
+ <node-id>$id</node-id>
+</input>''')
+ data = templ.substitute({'id': node_id})
+ return data
+
+
+def add_domain_xml(node_id, name):
+ """Generate xml for Add Domain request
+
+ :param node_id: Id of node
+ :type node_id: string
+ :param name: Name of Domain
+ :type name: string
+ :returns: String containing xml data for request
+
+ """
+ templ = Template('''<input>
+ <node-id xmlns="urn:opendaylight:sxp:controller">$id</node-id>
+ <domain-name xmlns="urn:opendaylight:sxp:controller">$name</domain-name>
+</input>''')
+ data = templ.substitute({'name': name, 'id': node_id})
+ return data
+
+
+def delete_domain_xml(node_id, name):
+ """Generate xml for Remove Domain request
+
+ :param node_id: Id of node
+ :type node_id: string
+ :param name: Name of Domain
+ :type name: string
+ :returns: String containing xml data for request
+
+ """
+ return add_domain_xml(name, node_id)
+
+
+def get_domain_name(domain_name):
+ """Generate xml for Get Bindings request
+
+ :param domain_name: Name of Domain
+ :type domain_name: string
+ :returns: String containing xml data for request
+
+ """
+ if domain_name == 'global':
+ return ''
+ else:
+ return '<domain-name xmlns="urn:opendaylight:sxp:controller">' + domain_name + '</domain-name>'
+
+
+def add_bindings_xml(node_id, domain, sgt, prefixes):
+ """Generate xml for Add Bindings request
+
+ :param node_id: Id of node
+ :type node_id: string
+ :param domain: Name of Domain
+ :type domain: string
+ :param sgt: Security group
+ :type sgt: int
+ :param prefixes: List of ip-prefixes
+ :type prefixes: string
+ :returns: String containing xml data for request
+
+ """
+ bindings = ''
+ for prefix in prefixes.split(','):
+ bindings += '\n' + '<ip-prefix>' + prefix + '</ip-prefix>'
+ templ = Template('''<input>
+ <node-id xmlns="urn:opendaylight:sxp:controller">$id</node-id>
+ <domain-name xmlns="urn:opendaylight:sxp:controller">$name</domain-name>
+ <binding xmlns="urn:opendaylight:sxp:controller">
+ <sgt>$sgt</sgt>
+ $bindings
+ </binding>
</input>''')
- data = templ.substitute({'ip': ip, 'range': binding_range})
+ data = templ.substitute({'name': domain, 'id': node_id, 'sgt': sgt, 'bindings': bindings})
return data
+
+
+def delete_bindings_xml(node_id, domain, sgt, prefixes):
+ """Generate xml for Remove Bindings request
+
+ :param node_id: Id of node
+ :type node_id: string
+ :param domain: Name of Domain
+ :type domain: string
+ :param sgt: Security group
+ :type sgt: int
+ :param prefixes: List of ip-prefixes
+ :type prefixes: string
+ :returns: String containing xml data for request
+
+ """
+ return add_bindings_xml(node_id, domain, sgt, prefixes)
+
+
+def prefix_range(start, end):
+ """Generate and concatenate ip-prefixes
+
+ :param start: Start index
+ :type start: string
+ :param end: End index
+ :type end: string
+ :returns: String containing concatenated ip-prefixes
+
+ """
+ start = int(start)
+ end = int(end)
+ index = 0
+ prefixes = ''
+ while index < end:
+ prefixes += get_ip_from_number(start + index) + '/32'
+ index += 1
+ if index < end:
+ prefixes += ','
+ return prefixes
Library String
Library ./Sxp.py
Resource KarafKeywords.robot
+Resource Utils.robot
Variables ../variables/Variables.py
*** Variables ***
${REST_CONTEXT} /restconf/operations/sxp-controller
*** Keywords ***
+Add Node
+ [Arguments] ${node} ${password}=password ${version}=version4 ${port}=64999 ${session}=session
+ [Documentation] Add node via RPC to ODL
+ ${DATA} Add Node Xml ${node} ${port} ${password} ${version}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:add-node data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+
+Delete Node
+ [Arguments] ${node} ${session}=session
+ [Documentation] Delete connection via RPC from node
+ ${DATA} Delete Node Xml ${node}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:delete-node data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+
Add Connection
[Arguments] ${version} ${mode} ${ip} ${port} ${node}=127.0.0.1 ${password}=none
- ... ${session}=session
+ ... ${session}=session ${domain}=global
[Documentation] Add connection via RPC to node
${DATA} Add Connection Xml ${version} ${mode} ${ip} ${port} ${node}
- ... ${password}
+ ... ${password} ${domain}
${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
+ [Arguments] ${node}=127.0.0.1 ${session}=session ${domain}=global
[Documentation] Gets all connections via RPC from node
- ${DATA} Get Connections From Node Xml ${node}
+ ${DATA} Get Connections From Node Xml ${node} ${domain}
${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 ${domain}=global
[Documentation] Delete connection via RPC from node
- ${DATA} Delete Connections Xml ${ip} ${port} ${node}
+ ${DATA} Delete Connections Xml ${ip} ${port} ${node} ${domain}
${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
+ [Arguments] ${node}=127.0.0.1 ${session}=session ${domain}=global
[Documentation] Delete all connections via RPC from node
- ${resp} Get Connections ${node} ${session}
+ ${resp} Get Connections ${node} ${session} ${domain}
@{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
+ ... ${session}=session ${domain}=global
[Documentation] Verify that connection is ON
- ${resp} Get Connections ${node}
+ ${resp} Get Connections ${node} ${session} ${domain}
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 ${domain}=global
[Documentation] Add binding via RPC to Master DB of node
- ${DATA} Add Entry Xml ${sgt} ${prefix} ${node}
+ ${DATA} Add Entry Xml ${sgt} ${prefix} ${node} ${domain}
${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 ${domain}=global
[Documentation] Gets all binding via RPC from Master DB of node
- ${DATA} Get Bindings From Node Xml ${node} all
- ${resp} Run Keyword If '${ODL_STREAM}' == 'boron' Post Request ${session} ${REST_CONTEXT}:get-node-bindings data=${DATA}
+ ${DATA} Get Bindings From Node Xml ${node} all ${domain}
+ ${resp} Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Post Request ${session} ${REST_CONTEXT}:get-node-bindings data=${DATA}
... headers=${HEADERS_XML}
... ELSE 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}
Clean Bindings
- [Arguments] ${node}=127.0.0.1 ${session}=session
+ [Arguments] ${node}=127.0.0.1 ${session}=session ${domain}=global
[Documentation] Delete all bindings via RPC from Master DB of node
- ${resp} Get Bindings ${node} ${session}
- @{bindings} Run Keyword If '${ODL_STREAM}' == 'boron' Parse Bindings ${resp}
+ ${resp} Get Bindings ${node} ${session} ${domain}
+ @{bindings} Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Parse Bindings ${resp}
... ELSE Parse Prefix Groups ${resp} local
: FOR ${binding} IN @{bindings}
- \ Run Keyword If '${ODL_STREAM}' == 'boron' Clean Binding ${binding['sgt']} ${binding['ip-prefix']} ${node}
- \ ... ${session}
+ \ Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Clean Binding ${binding['sgt']} ${binding['ip-prefix']} ${node}
+ \ ... ${session} ${domain}
\ ... ELSE Clean Binding ${binding} ${binding['binding']} ${node}
- \ ... ${session}
+ \ ... ${session} ${domain}
Clean Binding
- [Arguments] ${sgt} ${prefixes} ${node} ${session}
+ [Arguments] ${sgt} ${prefixes} ${node} ${session} ${domain}=global
[Documentation] Used for nester FOR loop
: FOR ${prefix} IN @{prefixes}
- \ Run Keyword If '${ODL_STREAM}' == 'boron' Delete Binding ${sgt} ${prefix} ${node}
- \ ... ${session}
+ \ Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Delete Binding ${sgt} ${prefix} ${node}
+ \ ... ${session} ${domain}
\ ... ELSE Delete Binding ${sgt['sgt']} ${prefix['ip-prefix']} ${node}
- \ ... ${session}
+ \ ... ${session} ${domain}
Update Binding
[Arguments] ${sgtOld} ${prefixOld} ${sgtNew} ${prefixNew} ${node}=127.0.0.1 ${session}=session
+ ... ${domain}=global
[Documentation] Updates value of binding via RPC in Master DB of node
${DATA} Update Binding Xml ${sgtOld} ${prefixOld} ${sgtNew} ${prefixNew} ${node}
+ ... ${domain}
${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 ${domain}=global
[Documentation] Delete binding via RPC from Master DB of node
- ${DATA} Delete Binding Xml ${sgt} ${prefix} ${node}
+ ${DATA} Delete Binding Xml ${sgt} ${prefix} ${node} ${domain}
${resp} Post Request ${session} ${REST_CONTEXT}:delete-entry data=${DATA} headers=${HEADERS_XML}
Should be Equal As Strings ${resp.status_code} 200
[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
Should Contain Binding
[Arguments] ${resp} ${sgt} ${prefix} ${db_source}=any
[Documentation] Tests if data contains specified binding
- ${out} Run Keyword If '${ODL_STREAM}' == 'boron' Find Binding ${resp} ${sgt} ${prefix}
+ ${out} Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Find Binding ${resp} ${sgt} ${prefix}
... ELSE Find Binding Legacy ${resp} ${sgt} ${prefix} ${db_source}
... add
Should Be True ${out} Doesn't have ${sgt} ${prefix}
Should Not Contain Binding
[Arguments] ${resp} ${sgt} ${prefix} ${db_source}=any
[Documentation] Tests if data doesn't contains specified binding
- ${out} Run Keyword If '${ODL_STREAM}' == 'boron' Find Binding ${resp} ${sgt} ${prefix}
+ ${out} Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Find Binding ${resp} ${sgt} ${prefix}
... ELSE Find Binding Legacy ${resp} ${sgt} ${prefix} ${db_source}
... add
Should Not Be True ${out} Should't have ${sgt} ${prefix}
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
+Setup SXP Session
[Documentation] Create session to Controller
Verify Feature Is Installed odl-sxp-controller
+ Wait Until Keyword Succeeds 20 10 Check Karaf Log Has Messages Successfully pushed configuration snapshot 22-sxp-controller-one-node.xml
Create Session session url=http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
- Wait Until Keyword Succeeds 15 1 Get Bindings
+ ${resp} RequestsLibrary.Get Request session ${MODULES_API}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} ietf-restconf
-Clean SXP Environment
+Clean SXP Session
[Documentation] Destroy created sessions
Delete All Sessions
+
+Add Domain
+ [Arguments] ${domain_name} ${node}=127.0.0.1 ${session}=session
+ [Documentation] Add Domain via RPC
+ ${DATA} Add Domain Xml ${node} ${domain_name}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:add-domain data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+
+Delete Domain
+ [Arguments] ${domain_name} ${node}=127.0.0.1 ${session}=session
+ [Documentation] Delete Domain via RPC
+ ${DATA} Delete Domain Xml ${node} ${domain_name}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:delete-domain data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+
+Add Bindings
+ [Arguments] ${sgt} ${prefixes} ${node}=127.0.0.1 ${session}=session ${domain}=global
+ [Documentation] Add bindings via RPC to Master DB of node
+ ${DATA} Add Bindings Xml ${node} ${domain} ${sgt} ${prefixes}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:add-bindings data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+
+Delete Bindings
+ [Arguments] ${sgt} ${prefixes} ${node}=127.0.0.1 ${session}=session ${domain}=global
+ [Documentation] Delete bindings via RPC from Master DB of node
+ ${DATA} Delete Bindings Xml ${node} ${domain} ${sgt} ${prefixes}
+ ${resp} Post Request ${session} ${REST_CONTEXT}:delete-bindings data=${DATA} headers=${HEADERS_XML}
+ Should be Equal As Strings ${resp.status_code} 200
+
+Add Bindings Range
+ [Arguments] ${sgt} ${start} ${size} ${node}
+ [Documentation] Add Bindings to Node specified by range
+ ${prefixes} Prefix Range ${start} ${size}
+ Add Bindings ${sgt} ${prefixes} ${node}
+
+Delete Bindings Range
+ [Arguments] ${sgt} ${start} ${size} ${node}
+ [Documentation] Delete Bindings to Node specified by range
+ ${prefixes} Prefix Range ${start} ${size}
+ Delete Bindings ${sgt} ${prefixes} ${node}
+
+Check Binding Range
+ [Arguments] ${sgt} ${start} ${end} ${node}
+ [Documentation] Check if Node contains Bindings specified by range
+ ${resp} Get Bindings ${node}
+ : FOR ${num} IN RANGE ${start} ${end}
+ \ ${ip} Get Ip From Number ${num}
+ \ Should Contain Binding ${resp} ${sgt} ${ip}/32
+
+Check Binding Range Negative
+ [Arguments] ${sgt} ${start} ${end} ${node}
+ [Documentation] Check if Node does not contains Bindings specified by range
+ ${resp} Get Bindings ${node}
+ : FOR ${num} IN RANGE ${start} ${end}
+ \ ${ip} Get Ip From Number ${num}
+ \ Should Not Contain Binding ${resp} ${sgt} ${ip}/32
+
+Setup SXP Environment
+ [Arguments] ${node_range}=2
+ [Documentation] Create session to Controller, node_range parameter specifies number of nodes to be created plus one
+ Setup SXP Session
+ : FOR ${num} IN RANGE 1 ${node_range}
+ \ ${ip} Get Ip From Number ${num}
+ \ Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Add Node ${ip}
+ \ Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Wait Until Keyword Succeeds 20 1 Check Node Started
+ \ ... ${ip}
+
+Check Node Started
+ [Arguments] ${node} ${port}=64999 ${system}=${ODL_SYSTEM_IP}
+ [Documentation] Verify that SxpNode has data writed to Operational datastore
+ ${resp} RequestsLibrary.Get Request session /restconf/operational/network-topology:network-topology/topology/sxp/node/${node}/
+ Should Be Equal As Strings ${resp.status_code} 200
+ ${rc} Run Command On Remote System ${system} netstat -tln | grep -q ${node}:${port} && echo 0 || echo 1 ${ODL_SYSTEM_USER} ${ODL_SYSTEM_PASSWORD} prompt=${ODL_SYSTEM_PROMPT}
+ Should Be Equal As Strings ${rc} 0
+
+Clean SXP Environment
+ [Arguments] ${node_range}=2
+ [Documentation] Destroy created sessions
+ : FOR ${num} IN RANGE 1 ${node_range}
+ \ ${ip} Get Ip From Number ${num}
+ \ Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Delete Node ${ip}
+ Clean SXP Session
Documentation Test suite to verify CRUD operations
Suite Setup Setup SXP Environment
Suite Teardown Clean SXP Environment
-Test Setup Clean Node
+Test Teardown Clean Node
Library RequestsLibrary
Library ../../../libraries/Sxp.py
Resource ../../../libraries/SxpLib.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../variables/Variables.py
*** Variables ***
*** Test Cases ***
Test Add Binding
[Documentation] Test if bindings are added to Master DB
+ [Tags] Restconf CRUD SXP
${resp} Get Bindings
Add Binding 5230 1.1.1.1/32
${resp} Get Bindings
Test Add Connection
[Documentation] Test if connections are added to Node
+ [Tags] Restconf CRUD SXP
Add Connection version4 speaker 10.1.0.0 60000
${resp} Get Connections
Should Contain Connection ${resp} 10.1.0.0 60000 speaker version4
Test Delete Binding
[Documentation] Test if bindings are deleted from Master DB
+ [Tags] Restconf CRUD SXP
Add Binding 52301 12.1.1.1/32
${resp} Get Bindings
Should Contain Binding ${resp} 52301 12.1.1.1/32
Test Delete Connection
[Documentation] Test if conncetions are removed from Node
+ [Tags] Restconf CRUD SXP
Add Connection version4 speaker 127.1.0.30 60000
${resp} Get Connections
Should Contain Connection ${resp} 127.1.0.30 60000 speaker version4
Test Update Binding
[Documentation] Test if bindings can be updated to different values
+ [Tags] Restconf CRUD SXP
Add Binding 3230 1.1.1.10/32
${resp} Get Bindings
Should Contain Binding ${resp} 3230 1.1.1.10/32
*** Keywords ***
Clean Node
- Clean Connections 127.0.0.1
Clean Bindings 127.0.0.1
+ Clean Connections 127.0.0.1
*** Settings ***
Documentation Test suite to test connectivity problems
-Suite Setup Setup SXP Environment
-Suite Teardown Clean SXP Environment
+Suite Setup Setup SXP Environment 6
+Suite Teardown Clean SXP Environment 6
Test Setup Clean Nodes
Library RequestsLibrary
Library SSHLibrary
Library ../../../libraries/Sxp.py
Resource ../../../libraries/SxpLib.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../variables/Variables.py
*** Variables ***
*** Test Cases ***
Version 1
[Documentation] Test if Version1 <=> Version1 can be connected
+ [Tags] SXP Connectivity
Test Nodes version1 none version1
Log OK without passwords
Clean Nodes
Version 2
[Documentation] Test if Version2 <=> Version2 can be connected
+ [Tags] SXP Connectivity
Test Nodes version2 none version2
Log OK without passwords
Clean Nodes
Version 3
[Documentation] Test if Version3 <=> Version3 can be connected
+ [Tags] SXP Connectivity
Test Nodes version3 none version3
Log OK without passwords
Clean Nodes
Version 4
[Documentation] Test if Version4 <=> Version4 can be connected
+ [Tags] SXP Connectivity
Test Nodes version4 none version4
Log OK without passwords
Clean Nodes
Mixed Versions
[Documentation] Test of version negotiation proces during connecting
+ [Tags] SXP Connectivity
@{list} = Create List version2 version3 version4
Test Nodes version1 none @{list}
Test Nodes version1 default @{list}
--- /dev/null
+*** Settings ***
+Documentation Test suite to test custom password per peer fuctionality
+Suite Setup Setup SXP Environment Local
+Suite Teardown Clean SXP Environment 4
+Test Setup Clean Nodes
+Library RequestsLibrary
+Library SSHLibrary
+Library ../../../libraries/Sxp.py
+Resource ../../../libraries/SxpLib.robot
+
+*** Variables ***
+
+*** Test Cases ***
+Version 1
+ [Documentation] Test of custom passwords on version1 connections
+ [Tags] SXP Passwords
+ Test Mode version1 listener speaker
+ Clean Nodes
+ Test Mode version1 speaker listener
+
+Version 2
+ [Documentation] Test of custom passwords on version2 connections
+ [Tags] SXP Passwords
+ Test Mode version2 listener speaker
+ Clean Nodes
+ Test Mode version2 speaker listener
+
+Version 3
+ [Documentation] Test of custom passwords on version3 connections
+ [Tags] SXP Passwords
+ Test Mode version3 listener speaker
+ Clean Nodes
+ Test Mode version3 speaker listener
+
+Version 4
+ [Documentation] Test of custom passwords on version4 connections
+ [Tags] SXP Passwords
+ Test Mode version4 speaker listener
+ Clean Nodes
+ Test Mode version4 listener speaker
+ Clean Nodes
+ Test Mode version4 both both
+
+*** Keywords ***
+Setup SXP Environment Local
+ [Documentation] Create session to Controller
+ Setup SXP Session
+ Add Node 127.0.0.1 ${EMPTY}
+ Add Node 127.0.0.2 ${EMPTY}
+ Add Node 127.0.0.3 CUSTOM
+
+Test Mode
+ [Arguments] ${version} ${mode_local} ${mode_remote}
+ [Documentation] Setup connection Speaker => Listener / Listener => Speaker / Both <=> Both for specific versions
+ Add Connection ${version} ${mode_local} 127.0.0.3 64999 127.0.0.1 CUSTOM
+ Add Connection ${version} ${mode_remote} 127.0.0.1 64999 127.0.0.3 ${EMPTY}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} ${mode_local} 127.0.0.3
+ ... 64999 127.0.0.1
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} ${mode_remote} 127.0.0.1
+ ... 64999 127.0.0.3
+ Add Connection ${version} ${mode_local} 127.0.0.2 64999 127.0.0.1 ${EMPTY}
+ Add Connection ${version} ${mode_remote} 127.0.0.1 64999 127.0.0.2 ${EMPTY}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} ${mode_local} 127.0.0.2
+ ... 64999 127.0.0.1
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} ${mode_remote} 127.0.0.1
+ ... 64999 127.0.0.2
+ Add Connection ${version} ${mode_local} 127.0.0.3 64999 127.0.0.2 CUSTOM_2
+ Add Connection ${version} ${mode_remote} 127.0.0.2 64999 127.0.0.3 CUSTOM_2
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} ${mode_local} 127.0.0.3
+ ... 64999 127.0.0.2
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} ${mode_remote} 127.0.0.2
+ ... 64999 127.0.0.3
+
+Clean Nodes
+ Clean Connections 127.0.0.1
+ Clean Connections 127.0.0.2
+ Clean Connections 127.0.0.3
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
*** Settings ***
Documentation Test suite to verify Inbound filtering functionality
-Suite Setup Setup SXP Environment
-Suite Teardown Clean SXP Environment
+Suite Setup Setup SXP Environment 6
+Suite Teardown Clean SXP Environment 6
Test Teardown Clean Nodes
Library RequestsLibrary
Library SSHLibrary
Library ../../../libraries/Sxp.py
Library ../../../libraries/Common.py
Resource ../../../libraries/SxpLib.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../variables/Variables.py
*** Variables ***
*** Test Cases ***
Access List Filtering
[Documentation] Test ACL filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.2 127.0.0.4
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit acl=10.10.10.0,0.0.0.255
Access List Sgt Filtering
[Documentation] Test ACL and SGT filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.3 127.0.0.5
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit sgt=30 acl=10.10.10.0,0.0.0.255
Prefix List Filtering
[Documentation] Test Prefix List filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.2 127.0.0.4
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit pl=10.10.10.0/24
Prefix List Sgt Filtering
[Documentation] Test Prefix List and SGT filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.3 127.0.0.5
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit sgt=30 pl=10.10.10.0/24
Should Contain Binding ${resp} 40 40.0.0.0/8 sxp
Clean Nodes
- Clean Connections 127.0.0.1
- Clean Connections 127.0.0.2
- Clean Connections 127.0.0.3
- Clean Connections 127.0.0.4
- Clean Connections 127.0.0.5
- Clean Peer Groups 127.0.0.1
Clean Bindings 127.0.0.1
Clean Bindings 127.0.0.2
Clean Bindings 127.0.0.3
Clean Bindings 127.0.0.4
Clean Bindings 127.0.0.5
+ Clean Peer Groups 127.0.0.1
+ Clean Connections 127.0.0.1
+ Clean Connections 127.0.0.2
+ Clean Connections 127.0.0.3
+ Clean Connections 127.0.0.4
+ Clean Connections 127.0.0.5
*** Settings ***
Documentation Test suite to verify Outbound filtering functionality
-Suite Setup Setup SXP Environment
-Suite Teardown Clean SXP Environment
+Suite Setup Setup SXP Environment 6
+Suite Teardown Clean SXP Environment 6
Test Teardown Clean Nodes
Library RequestsLibrary
Library SSHLibrary
Library ../../../libraries/Sxp.py
Library ../../../libraries/Common.py
Resource ../../../libraries/SxpLib.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../variables/Variables.py
*** Variables ***
*** Test Cases ***
Access List Filtering
[Documentation] Test ACL filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.4 127.0.0.5
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit acl=10.10.10.0,0.0.0.255
Access List Sgt Filtering
[Documentation] Test ACL and SGT filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.2 127.0.0.5
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 deny acl=10.10.20.0,0.0.0.255
Prefix List Filtering
[Documentation] Test Prefix List filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.4 127.0.0.5
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit pl=10.10.10.0/24
Prefix List Sgt Filtering
[Documentation] Test Prefix List and SGT filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.2 127.0.0.5
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 deny pl=10.10.20.0/24
Should Contain Binding ${resp} 30 30.0.0.0/8 sxp
Clean Nodes
- Clean Connections 127.0.0.1
- Clean Connections 127.0.0.2
- Clean Connections 127.0.0.3
- Clean Connections 127.0.0.4
- Clean Connections 127.0.0.5
- Clean Peer Groups 127.0.0.1
Clean Bindings 127.0.0.1
Clean Bindings 127.0.0.2
Clean Bindings 127.0.0.3
Clean Bindings 127.0.0.4
Clean Bindings 127.0.0.5
+ Clean Peer Groups 127.0.0.1
+ Clean Connections 127.0.0.1
+ Clean Connections 127.0.0.2
+ Clean Connections 127.0.0.3
+ Clean Connections 127.0.0.4
+ Clean Connections 127.0.0.5
*** Settings ***
Documentation Test suite to verify inbound-discarding filtering functionality
-Suite Setup Setup SXP Environment
-Suite Teardown Clean SXP Environment
+Suite Setup Setup SXP Environment 6
+Suite Teardown Clean SXP Environment 6
Test Teardown Clean Nodes
Library RequestsLibrary
Library SSHLibrary
Library ../../../libraries/Sxp.py
Library ../../../libraries/Common.py
Resource ../../../libraries/SxpLib.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../variables/Variables.py
*** Variables ***
*** Test Cases ***
Access List Filtering
[Documentation] Test ACL filter behaviour during filter update
+ [Tags] SXP Filtering
Setup Nodes
${peers} Add Peers 127.0.0.2 127.0.0.4
Add PeerGroup GROUP ${peers}
Access List Sgt Filtering
[Documentation] Test ACL and SGT filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.3 127.0.0.5
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit sgt=30 acl=10.10.10.0,0.0.0.255
Prefix List Filtering
[Documentation] Test Prefix List filter behaviour during filter update
+ [Tags] SXP Filtering
Setup Nodes
${peers} Add Peers 127.0.0.2 127.0.0.4
Add PeerGroup GROUP ${peers}
Prefix List Sgt Filtering
[Documentation] Test Prefix List and SGT filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.3 127.0.0.5
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit sgt=30 pl=10.10.10.0/24
Access List Filtering Legacy
[Documentation] Test ACL filter behaviour during filter update
+ [Tags] SXP Filtering
Setup Nodes Legacy Par Two
${peers} Add Peers 127.0.0.2 127.0.0.4
Add PeerGroup GROUP ${peers}
Access List Sgt Filtering Legacy
[Documentation] Test ACL and SGT filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.3 127.0.0.5
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit sgt=30 acl=10.10.10.0,0.0.0.255
Prefix List Filtering Legacy
[Documentation] Test Prefix List filter behaviour during filter update
+ [Tags] SXP Filtering
Setup Nodes Legacy Par Two
${peers} Add Peers 127.0.0.2 127.0.0.4
Add PeerGroup GROUP ${peers}
Prefix List Sgt Filtering Legacy
[Documentation] Test Prefix List and SGT filter behaviour during filter update
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.3 127.0.0.5
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit sgt=30 pl=10.10.10.0/24
Should Not Contain Binding ${resp} 50 50.0.0.0/8 sxp
Clean Nodes
- Clean Connections 127.0.0.1
- Clean Connections 127.0.0.2
- Clean Connections 127.0.0.3
- Clean Connections 127.0.0.4
- Clean Connections 127.0.0.5
- Clean Peer Groups 127.0.0.1
Clean Bindings 127.0.0.1
Clean Bindings 127.0.0.2
Clean Bindings 127.0.0.3
Clean Bindings 127.0.0.4
Clean Bindings 127.0.0.5
+ Clean Peer Groups 127.0.0.1
+ Clean Connections 127.0.0.1
+ Clean Connections 127.0.0.2
+ Clean Connections 127.0.0.3
+ Clean Connections 127.0.0.4
+ Clean Connections 127.0.0.5
*** Settings ***
-Documentation Test suite to verify Outbound filtering functionality
-Suite Setup Setup SXP Environment
-Suite Teardown Clean SXP Environment
+Documentation Test suite to verify PeerSequence filtering functionality
+Suite Setup Setup SXP Environment 6
+Suite Teardown Clean SXP Environment 6
Test Teardown Clean Nodes
Library RequestsLibrary
Library SSHLibrary
Library ../../../libraries/Sxp.py
Library ../../../libraries/Common.py
Resource ../../../libraries/SxpLib.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/KarafKeywords.robot
Resource ../../../variables/Variables.py
*** Variables ***
*** Test Cases ***
Peer Sequence Filtering
[Documentation] Test PeerSequence filter behaviour
+ [Tags] SXP Filtering
${peers} Add Peers 127.0.0.2
Add PeerGroup GROUP ${peers}
${entry1} Get Filter Entry 10 permit ps=le,0
Inbound PL Combinations Filtering
[Documentation] Test PeerSequence filter combined with PrefixList filter
+ [Tags] SXP Filtering
@{scopes} Create List inbound inbound-discarding
: FOR ${scope} IN @{scopes}
\ Add PeerGroup GROUP
Inbound ACL Combinations Filtering
[Documentation] Test PeerSequence filter combined with ACL filter
+ [Tags] SXP Filtering
@{scopes} Create List inbound inbound-discarding
: FOR ${scope} IN @{scopes}
\ ${peers} Add Peers 127.0.0.2
Outbound PL Combinations Filtering
[Documentation] Test PeerSequence filter combined with PrefixList filter
+ [Tags] SXP Filtering
Add PeerGroup GROUP
${entry1} Get Filter Entry 10 permit pl=1.1.1.0/24
${entries} Combine Strings ${entry1}
Outbound ACL Combinations Filtering
[Documentation] Test PeerSequence filter combined with ACL filter
+ [Tags] SXP Filtering
Add PeerGroup GROUP
${entry1} Get Filter Entry 10 permit ps=eq,0
${entry2} Get Filter Entry 20 permit ps=ge,2
Should Not Contain Binding ${resp} 50 5.0.0.0/8 sxp
Clean Nodes
- Clean Connections 127.0.0.1
- Clean Connections 127.0.0.2
- Clean Connections 127.0.0.3
- Clean Connections 127.0.0.4
- Clean Connections 127.0.0.5
- Clean Peer Groups 127.0.0.1
Clean Bindings 127.0.0.1
Clean Bindings 127.0.0.2
Clean Bindings 127.0.0.3
Clean Bindings 127.0.0.4
Clean Bindings 127.0.0.5
+ Clean Peer Groups 127.0.0.1
+ Clean Connections 127.0.0.1
+ Clean Connections 127.0.0.2
+ Clean Connections 127.0.0.3
+ Clean Connections 127.0.0.4
+ Clean Connections 127.0.0.5
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
if [ "${BRANCH#*/}" == "lithium" ]; then
scp ${WORKSPACE}/test/csit/suites/sxp/basic/22-sxp-controller-one-node-lithium.xml ${ODL_SYSTEM_IP}:/tmp/${BUNDLEFOLDER}/etc/opendaylight/karaf/22-sxp-controller-one-node.xml
-else
- scp ${WORKSPACE}/test/csit/suites/sxp/basic/22-sxp-controller-one-node.xml ${ODL_SYSTEM_IP}:/tmp/${BUNDLEFOLDER}/etc/opendaylight/karaf/
+elif [ "${BRANCH#*/}" == "beryllium" ]; then
+ scp ${WORKSPACE}/test/csit/suites/sxp/basic/22-sxp-controller-one-node-beryllium.xml ${ODL_SYSTEM_IP}:/tmp/${BUNDLEFOLDER}/etc/opendaylight/karaf/22-sxp-controller-one-node.xml
fi
echo "Setup config to $ODL_SYSTEM_IP}"
ssh ${ODL_SYSTEM_IP} "mkdir -p /tmp/${BUNDLEFOLDER}/etc/opendaylight/karaf/"
-scp ${WORKSPACE}/test/csit/suites/sxp/filtering/22-sxp-controller-one-node.xml ${ODL_SYSTEM_IP}:/tmp/${BUNDLEFOLDER}/etc/opendaylight/karaf/
+if [ "${BRANCH#*/}" == "beryllium" ]; then
+ scp ${WORKSPACE}/test/csit/suites/sxp/filtering/22-sxp-controller-one-node-beryllium.xml ${ODL_SYSTEM_IP}:/tmp/${BUNDLEFOLDER}/etc/opendaylight/karaf/22-sxp-controller-one-node.xml
+fi
\ No newline at end of file
if [ "${BRANCH#*/}" == "lithium" ]; then
scp ${WORKSPACE}/test/csit/suites/sxp/topology/22-sxp-controller-one-node-lithium.xml ${ODL_SYSTEM_IP}:/tmp/${BUNDLEFOLDER}/etc/opendaylight/karaf/22-sxp-controller-one-node.xml
-else
- scp ${WORKSPACE}/test/csit/suites/sxp/topology/22-sxp-controller-one-node.xml ${ODL_SYSTEM_IP}:/tmp/${BUNDLEFOLDER}/etc/opendaylight/karaf/
+elif [ "${BRANCH#*/}" == "beryllium" ]; then
+ scp ${WORKSPACE}/test/csit/suites/sxp/topology/22-sxp-controller-one-node-beryllium.xml ${ODL_SYSTEM_IP}:/tmp/${BUNDLEFOLDER}/etc/opendaylight/karaf/22-sxp-controller-one-node.xml
fi
*** Settings ***
Documentation Test suite to verify Behaviour in different topologies
-Suite Setup Setup SXP Environment
-Suite Teardown Clean SXP Environment
+Suite Setup Setup SXP Environment 6
+Suite Teardown Clean SXP Environment 6
Test Teardown Clean Nodes
Library RequestsLibrary
Library SSHLibrary
Library ../../../libraries/Sxp.py
Resource ../../../libraries/SxpLib.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../variables/Variables.py
*** Variables ***
*** Test Cases ***
Export Test
[Documentation] Test behaviour after shutting down connections in Version4
+ [Tags] SXP Topology
Setup Topology Triangel version4
Wait Until Keyword Succeeds 4 1 Check Export Part One
Delete Connections 127.0.0.1 64999 127.0.0.3
Export Test Legacy
[Documentation] Test behaviour after shutting down connections in Legacy versions
+ [Tags] SXP Topology
@{list} = Create List version1
: FOR ${version} IN @{list}
\ Setup Topology Triangel ${version}
Forwarding Test V2=>V1
[Documentation] Version 2 => 1 functionality
+ [Tags] SXP Topology
Setup Topology Linear version2 version1
Wait Until Keyword Succeeds 4 1 Check Forwarding V2=>V1
Forwarding Test V3=>V2
[Documentation] Version 3 => 2 functionality
+ [Tags] SXP Topology
Setup Topology Linear version3 version2
Wait Until Keyword Succeeds 4 1 Check Forwarding V3=>V2
Forwarding Test V4=>V3
[Documentation] Version 4 => 3 functionality
+ [Tags] SXP Topology
Setup Topology Linear version4 version3
Wait Until Keyword Succeeds 4 1 Check Forwarding V4=>V3
Most Recent Rule Test
[Documentation] Most Recent Rule
+ [Tags] SXP Topology
Setup Topology Fork version4
Add Binding 542 5.5.5.5/32 127.0.0.2
Sleep 2s
Shorthest Path Test
[Documentation] Shorthes Path over Most Recent
+ [Tags] SXP Topology
Add Connection version4 listener 127.0.0.5 64999 127.0.0.3
Add Connection version4 speaker 127.0.0.3 64999 127.0.0.5
Wait Until Keyword Succeeds 15 1 Verify Connection version4 listener 127.0.0.5
Should Contain Binding ${resp} 99 15.15.15.15/32
Clean Nodes
- Clean Connections 127.0.0.1
- Clean Connections 127.0.0.2
- Clean Connections 127.0.0.3
- Clean Connections 127.0.0.4
- Clean Connections 127.0.0.5
Clean Bindings 127.0.0.1
Clean Bindings 127.0.0.2
Clean Bindings 127.0.0.3
Clean Bindings 127.0.0.4
Clean Bindings 127.0.0.5
+ Clean Connections 127.0.0.1
+ Clean Connections 127.0.0.2
+ Clean Connections 127.0.0.3
+ Clean Connections 127.0.0.4
+ Clean Connections 127.0.0.5
*** Settings ***
Documentation Test suite to test scalability of SXP
-Suite Setup Setup SXP Environment
-Suite Teardown Clean SXP Environment
+Suite Setup Setup SXP Environment 32
+Suite Teardown Clean SXP Environment 32
Test Setup Clean Nodes
Library RequestsLibrary
Library SSHLibrary
Library ../../../libraries/Sxp.py
Resource ../../../libraries/SxpLib.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../variables/Variables.py
*** Variables ***
*** Test Cases ***
Test Mega Topology
[Documentation] Stress test that contains of connecting 20 Nodes and exporting their bindings
+ [Tags] SXP Scalability
Setup Mega Topology
- Sleep 5s
- ${resp} Get Bindings 127.0.0.1
- : FOR ${num} IN RANGE 2 22
- \ ${ip} Get Ip From Number ${num}
- \ Should Contain Binding ${resp} ${num} ${ip}/32 sxp
+ Wait Until Keyword Succeeds 10 1 Check Binding Range 2 22
Test Complex Mega Topology
[Documentation] Stress test that contains of connecting 30 Nodes and exporting their bindings
+ [Tags] SXP Scalability
Setup Complex Mega Topology
- Sleep 5s
- ${resp} Get Bindings 127.0.0.1
- : FOR ${num} IN RANGE 22 32
- \ ${ip} Get Ip From Number ${num}
- \ Should Contain Binding ${resp} ${num} ${ip}/32 sxp
+ Wait Until Keyword Succeeds 10 1 Check Binding Range 22 32
Text Bindings export
[Documentation] Stress test that consist of exporting 500 Bindings under 5s
+ [Tags] SXP Scalability
: FOR ${num} IN RANGE 2 502
\ ${ip} Get Ip From Number ${num}
\ Add Binding ${num} ${ip}/32 127.0.0.2
Add Connection version4 listener 127.0.0.2 64999 127.0.0.1
Add Connection version4 speaker 127.0.0.1 64999 127.0.0.2
- Sleep 5s
- ${resp} Get Bindings 127.0.0.1
- : FOR ${num} IN RANGE 2 102
- \ ${ip} Get Ip From Number ${num}
- \ Should Contain Binding ${resp} ${num} ${ip}/32 sxp
+ Wait Until Keyword Succeeds 15 1 Verify Connection version4 listener 127.0.0.2
+ Wait Until Keyword Succeeds 10 1 Check Binding Range 2 102
*** Keywords ***
Setup Mega Topology
\ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener
\ ... ${ip} 64999 ${second_ip}
+Check Binding Range
+ [Arguments] ${start} ${end} ${node}=127.0.0.1
+ [Documentation] Check if binding range is contained by node
+ ${resp} Get Bindings ${node}
+ : FOR ${num} IN RANGE ${start} ${end}
+ \ ${ip} Get Ip From Number ${num}
+ \ Should Contain Binding ${resp} ${num} ${ip}/32 sxp
+
Clean Nodes
: FOR ${num} IN RANGE 1 32
\ ${ip} Get Ip From Number ${num}
- \ Clean Connections ${ip}
\ Clean Bindings ${ip}
+ \ Clean Connections ${ip}
--- /dev/null
+*** Settings ***
+Documentation Test suite to verify Domain data separation
+Suite Setup Setup Nodes Local
+Suite Teardown Clean SXP Environment 15
+Library RequestsLibrary
+Library SSHLibrary
+Library ../../../libraries/Sxp.py
+Resource ../../../libraries/SxpLib.robot
+
+*** Variables ***
+${DOMAIN_1} guest
+${DOMAIN_2} trusted
+${DOMAIN_3} secure
+
+*** Test Cases ***
+Export Separation Node 7 Test
+ [Documentation] Test if Node 7 contains only bindings from global domain
+ [Tags] SXP Domains
+ Check Binding Range 20 2000 2300 127.0.0.7
+ Check Binding Range Negative 30 3000 3300 127.0.0.7
+ Check Binding Range Negative 40 4000 4300 127.0.0.7
+ Check Binding Range Negative 50 5000 5300 127.0.0.7
+ Check Binding Range Negative 60 6000 6300 127.0.0.7
+ Check Binding Range Negative 110 11000 11300 127.0.0.7
+ Check Binding Range Negative 120 12000 12300 127.0.0.7
+ Check Binding Range Negative 130 13000 13300 127.0.0.7
+ Check Binding Range Negative 140 14000 14300 127.0.0.7
+
+Export Separation Node 8-9 Test
+ [Documentation] Test if Nodes 8,9 contains only bindings from guest domain
+ [Tags] SXP Domains
+ : FOR ${node} IN RANGE 8 10
+ \ Check Binding Range Negative 20 2000 2300 127.0.0.${node}
+ \ Check Binding Range 30 3000 3300 127.0.0.${node}
+ \ Check Binding Range 40 4000 3300 127.0.0.${node}
+ \ Check Binding Range Negative 50 5000 5300 127.0.0.${node}
+ \ Check Binding Range Negative 60 6000 6300 127.0.0.${node}
+ \ Check Binding Range Negative 110 11000 11300 127.0.0.${node}
+ \ Check Binding Range Negative 120 12000 12300 127.0.0.${node}
+ \ Check Binding Range Negative 130 13000 13300 127.0.0.${node}
+ \ Check Binding Range Negative 140 14000 14300 127.0.0.${node}
+
+Export Separation Node 10 Test
+ [Documentation] Test if Node 10 contains only bindings from trusted domain
+ [Tags] SXP Domains
+ Check Binding Range Negative 20 2000 2300 127.0.0.10
+ Check Binding Range Negative 30 3000 3300 127.0.0.10
+ Check Binding Range Negative 40 4000 4300 127.0.0.10
+ Check Binding Range 50 5000 5300 127.0.0.10
+ Check Binding Range 60 6000 6300 127.0.0.10
+ Check Binding Range Negative 110 11000 11300 127.0.0.10
+ Check Binding Range Negative 120 12000 12300 127.0.0.10
+ Check Binding Range Negative 130 13000 13300 127.0.0.10
+ Check Binding Range Negative 140 14000 14300 127.0.0.10
+
+Export Separation Node 11-14 Test
+ [Documentation] Test if Nodes 11-14 contains only bindings from secure domain
+ [Tags] SXP Domains
+ : FOR ${node} IN RANGE 11 15
+ \ Check Binding Range Negative 20 2000 2300 127.0.0.${node}
+ \ Check Binding Range Negative 30 3000 3300 127.0.0.${node}
+ \ Check Binding Range Negative 40 4000 4300 127.0.0.${node}
+ \ Check Binding Range Negative 50 5000 5300 127.0.0.${node}
+ \ Check Binding Range Negative 60 6000 6300 127.0.0.${node}
+ \ Check Binding Range 110 11000 11300 127.0.0.${node}
+ \ Check Binding Range 120 12000 12300 127.0.0.${node}
+ \ Check Binding Range 130 13000 13300 127.0.0.${node}
+ \ Check Binding Range 140 14000 14300 127.0.0.${node}
+
+*** Keywords ***
+Setup Nodes Local
+ [Arguments] ${version}=version4
+ [Documentation] Setups Multi domain topology consisting of 3 specific domains and 1 default, data between domains must remain separated.
+ Setup SXP Environment 15
+ : FOR ${node} IN RANGE 2 7
+ \ Add Connection ${version} speaker 127.0.0.1 64999 127.0.0.${node}
+ \ Add Bindings Range ${node}0 ${node}000 300 127.0.0.${node}
+ : FOR ${node} IN RANGE 7 11
+ \ Add Connection ${version} listener 127.0.0.1 64999 127.0.0.${node}
+ : FOR ${node} IN RANGE 11 15
+ \ Add Connection ${version} both 127.0.0.1 64999 127.0.0.${node}
+ \ Add Bindings Range ${node}0 ${node}000 300 127.0.0.${node}
+ Add Domain ${DOMAIN_1}
+ Add Domain ${DOMAIN_2}
+ Add Domain ${DOMAIN_3}
+ # NO DOMAIN
+ Add Connection ${version} listener 127.0.0.2 64999
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.2
+ Add Connection ${version} speaker 127.0.0.7 64999
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} speaker 127.0.0.7
+ # DOMAIN 1
+ Add Connection ${version} listener 127.0.0.3 64999 domain=${DOMAIN_1}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.3
+ ... domain=${DOMAIN_1}
+ Add Connection ${version} listener 127.0.0.4 64999 domain=${DOMAIN_1}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.4
+ ... domain=${DOMAIN_1}
+ Add Connection ${version} speaker 127.0.0.8 64999 domain=${DOMAIN_1}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} speaker 127.0.0.8
+ ... domain=${DOMAIN_1}
+ Add Connection ${version} speaker 127.0.0.9 64999 domain=${DOMAIN_1}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} speaker 127.0.0.9
+ ... domain=${DOMAIN_1}
+ # DOMAIN 2
+ Add Connection ${version} listener 127.0.0.5 64999 domain=${DOMAIN_2}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.5
+ ... domain=${DOMAIN_2}
+ Add Connection ${version} listener 127.0.0.6 64999 domain=${DOMAIN_2}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.6
+ ... domain=${DOMAIN_2}
+ Add Connection ${version} speaker 127.0.0.10 64999 domain=${DOMAIN_2}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} speaker 127.0.0.10
+ ... domain=${DOMAIN_2}
+ # DOMAIN 3
+ : FOR ${node} IN RANGE 11 15
+ \ Add Connection ${version} both 127.0.0.${node} 64999 domain=${DOMAIN_3}
+ \ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} both
+ \ ... 127.0.0.${node} domain=${DOMAIN_3}
--- /dev/null
+*** Settings ***
+Documentation Test suite to verify Domain data consistency during data change
+Test Setup Setup Nodes Local
+Test Teardown Clean SXP Environment 15
+Library RequestsLibrary
+Library SSHLibrary
+Library ../../../libraries/Sxp.py
+Resource ../../../libraries/SxpLib.robot
+
+*** Variables ***
+${DOMAIN_1} guest
+${DOMAIN_2} trusted
+${DOMAIN_3} secure
+
+*** Test Cases ***
+Export Separation Node 7 Test
+ [Documentation] Test if Node 7 contains only bindings from global domain and is not affected by changes from other nodes
+ [Tags] SXP Domains
+ Check Binding Range 20 0 300 127.0.0.7
+ Check Binding Range Negative 40 0 300 127.0.0.7
+ Check Binding Range Negative 60 0 300 127.0.0.7
+ Check Binding Range Negative 120 0 300 127.0.0.7
+ Delete Bindings Range 40 0 300 127.0.0.4
+ Wait Until Keyword Succeeds 15 1 Check Binding Range 20 0 300
+ ... 127.0.0.7
+ Delete Bindings Range 20 0 300 127.0.0.2
+ Wait Until Keyword Succeeds 15 1 Check Binding Range Negative 20 0 300
+ ... 127.0.0.7
+
+Export Separation Node 8-9 Test
+ [Documentation] Test if Nodes 8,9 contains consistent data during its update
+ [Tags] SXP Domains
+ : FOR ${node} IN RANGE 8 10
+ \ Check Binding Range Negative 20 0 300 127.0.0.${node}
+ \ Check Binding Range 40 0 300 127.0.0.${node}
+ \ Check Binding Range Negative 60 0 300 127.0.0.${node}
+ \ Check Binding Range Negative 120 0 300 127.0.0.${node}
+ Delete Bindings Range 60 0 300 127.0.0.6
+ : FOR ${node} IN RANGE 8 10
+ \ Wait Until Keyword Succeeds 15 1 Check Binding Range 40 0
+ \ ... 300 127.0.0.${node}
+ Delete Bindings Range 40 0 300 127.0.0.4
+ : FOR ${node} IN RANGE 8 10
+ \ Wait Until Keyword Succeeds 15 1 Check Binding Range Negative 40 0
+ \ ... 300 127.0.0.${node}
+
+Export Separation Node 10 Test
+ [Documentation] Test if Node 10 contains consistent data during its update
+ [Tags] SXP Domains
+ Check Binding Range Negative 20 0 300 127.0.0.10
+ Check Binding Range Negative 40 0 300 127.0.0.10
+ Check Binding Range 60 0 300 127.0.0.10
+ Check Binding Range Negative 120 0 300 127.0.0.10
+ Delete Bindings Range 20 0 300 127.0.0.2
+ Wait Until Keyword Succeeds 15 1 Check Binding Range 60 0 300
+ ... 127.0.0.10
+ Delete Bindings Range 60 0 300 127.0.0.6
+ Wait Until Keyword Succeeds 15 1 Check Binding Range Negative 60 0 300
+ ... 127.0.0.10
+
+Export Separation Node 11-14 Test
+ [Documentation] Test if Nodes 11-14 contains consistent data during its update
+ [Tags] SXP Domains
+ : FOR ${node} IN RANGE 11 15
+ \ Check Binding Range Negative 20 0 300 127.0.0.${node}
+ \ Check Binding Range Negative 40 0 300 127.0.0.${node}
+ \ Check Binding Range Negative 60 0 300 127.0.0.${node}
+ \ Check Binding Range 120 0 300 127.0.0.${node}
+ Delete Bindings Range 60 0 300 127.0.0.6
+ : FOR ${node} IN RANGE 11 15
+ \ Wait Until Keyword Succeeds 15 1 Check Binding Range 120 0
+ \ ... 300 127.0.0.${node}
+ Delete Bindings Range 120 0 300 127.0.0.12
+ : FOR ${node} IN RANGE 11 15
+ \ Wait Until Keyword Succeeds 15 1 Check Binding Range Negative 120 0
+ \ ... 300 127.0.0.${node}
+
+*** Keywords ***
+Setup Nodes Local
+ [Arguments] ${version}=version4
+ [Documentation] Setups Multi domain topology consisting of 3 specific domains and 1 default, data between domains must remain separated.
+ Setup SXP Environment 15
+ : FOR ${node} IN RANGE 2 7
+ \ Add Connection ${version} speaker 127.0.0.1 64999 127.0.0.${node}
+ : FOR ${node} IN RANGE 7 11
+ \ Add Connection ${version} listener 127.0.0.1 64999 127.0.0.${node}
+ : FOR ${node} IN RANGE 11 15
+ \ Add Connection ${version} both 127.0.0.1 64999 127.0.0.${node}
+ Add Domain ${DOMAIN_1}
+ Add Domain ${DOMAIN_2}
+ Add Domain ${DOMAIN_3}
+ Add Bindings Range 20 0 300 127.0.0.2
+ Add Bindings Range 40 0 300 127.0.0.4
+ Add Bindings Range 60 0 300 127.0.0.6
+ Add Bindings Range 120 0 300 127.0.0.12
+ # NO DOMAIN
+ Add Connection ${version} listener 127.0.0.2 64999
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.2
+ Add Connection ${version} speaker 127.0.0.7 64999
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} speaker 127.0.0.7
+ # DOMAIN 1
+ Add Connection ${version} listener 127.0.0.3 64999 domain=${DOMAIN_1}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.3
+ ... domain=${DOMAIN_1}
+ Add Connection ${version} listener 127.0.0.4 64999 domain=${DOMAIN_1}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.4
+ ... domain=${DOMAIN_1}
+ Add Connection ${version} speaker 127.0.0.8 64999 domain=${DOMAIN_1}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} speaker 127.0.0.8
+ ... domain=${DOMAIN_1}
+ Add Connection ${version} speaker 127.0.0.9 64999 domain=${DOMAIN_1}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} speaker 127.0.0.9
+ ... domain=${DOMAIN_1}
+ # DOMAIN 2
+ Add Connection ${version} listener 127.0.0.5 64999 domain=${DOMAIN_2}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.5
+ ... domain=${DOMAIN_2}
+ Add Connection ${version} listener 127.0.0.6 64999 domain=${DOMAIN_2}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} listener 127.0.0.6
+ ... domain=${DOMAIN_2}
+ Add Connection ${version} speaker 127.0.0.10 64999 domain=${DOMAIN_2}
+ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} speaker 127.0.0.10
+ ... domain=${DOMAIN_2}
+ # DOMAIN 3
+ : FOR ${node} IN RANGE 11 15
+ \ Add Connection ${version} both 127.0.0.${node} 64999 domain=${DOMAIN_3}
+ \ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} both
+ \ ... 127.0.0.${node} domain=${DOMAIN_3}
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
<description>ODL SXP Controller</description>
<master-database></master-database>
<timers>
- <retry-open-time>5</retry-open-time>
+ <retry-open-time>1</retry-open-time>
<hold-time-min-acceptable>120</hold-time-min-acceptable>
<keep-alive-time>30</keep-alive-time>
<hold-time>90</hold-time>
--- /dev/null
+# Place the suites in run order:
+integration/test/csit/suites/sxp/basic/010_Restconf_OK.robot
+integration/test/csit/suites/sxp/basic/020_Restconf_CRUD.robot
+integration/test/csit/suites/sxp/basic/030_Connectivity.robot
\ No newline at end of file
--- /dev/null
+# Place the suites in run order:
+integration/test/csit/suites/sxp/basic/010_Restconf_OK.robot
+integration/test/csit/suites/sxp/basic/020_Restconf_CRUD.robot
+integration/test/csit/suites/sxp/basic/030_Connectivity.robot
\ No newline at end of file
# Place the suites in run order:
-integration/test/csit/suites/sxp/basic/
-
+integration/test/csit/suites/sxp/basic/
\ No newline at end of file
# Place the suites in run order:
integration/test/csit/suites/sxp/filtering/010_Inbound_Filtering.robot
integration/test/csit/suites/sxp/filtering/020_Outbound_Filtering.robot
-integration/test/csit/suites/sxp/filtering/030_Inbound_Filtering_Discarding.robot
-
+integration/test/csit/suites/sxp/filtering/030_Inbound_Filtering_Discarding.robot
\ No newline at end of file
# Place the suites in run order:
-integration/test/csit/suites/sxp/filtering/
-
+integration/test/csit/suites/sxp/filtering/
\ No newline at end of file
--- /dev/null
+# Place the suites in run order:
+integration/test/csit/suites/sxp/topology/010_Topology_Features.robot
+integration/test/csit/suites/sxp/topology/020_Scalability.robot
\ No newline at end of file
--- /dev/null
+# Place the suites in run order:
+integration/test/csit/suites/sxp/topology/010_Topology_Features.robot
+integration/test/csit/suites/sxp/topology/020_Scalability.robot
\ No newline at end of file
# Place the suites in run order:
-integration/test/csit/suites/sxp/topology/
+integration/test/csit/suites/sxp/topology/
\ No newline at end of file