aboutsummaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
Diffstat (limited to 'resources')
-rw-r--r--resources/libraries/python/honeycomb/BGP.py3
-rw-r--r--resources/libraries/robot/honeycomb/bgp.robot22
-rw-r--r--resources/test_data/honeycomb/bgp.py99
-rw-r--r--resources/test_data/honeycomb/routing.py32
4 files changed, 131 insertions, 25 deletions
diff --git a/resources/libraries/python/honeycomb/BGP.py b/resources/libraries/python/honeycomb/BGP.py
index 37a9cb6558..976e41d379 100644
--- a/resources/libraries/python/honeycomb/BGP.py
+++ b/resources/libraries/python/honeycomb/BGP.py
@@ -392,4 +392,5 @@ class BGPKeywords(object):
for item in ref:
if item not in data:
raise HoneycombError(
- "RIB entry {0} not found in operational data.")
+ "RIB entry {0} not found in operational data {1}."
+ .format(item, data))
diff --git a/resources/libraries/robot/honeycomb/bgp.robot b/resources/libraries/robot/honeycomb/bgp.robot
index aa96cc6538..b39055196a 100644
--- a/resources/libraries/robot/honeycomb/bgp.robot
+++ b/resources/libraries/robot/honeycomb/bgp.robot
@@ -48,7 +48,7 @@
| | [Arguments] | ${node}
| | ...
| | ${oper_data}= | Get Full BGP Configuration | ${node}
-| | Should be Empty | ${oper_data['bgp-openconfig-extensions:bgp']['neighbors']}
+| | Should be Empty | ${oper_data['bgp-openconfig-extensions:bgp']}
| Honeycomb adds BGP peer
| | [Documentation] | Uses Honeycomb API to add a BGP peer.
@@ -208,6 +208,26 @@
| | ... | ${node} | ${peer_address} | ${ip_version}
| | Should be Empty | ${oper_data['bgp-inet:${ip_version}-routes']}
+| No BGP routes should exist
+| | [Documentation] | Uses Honeycomb API to verify that no BGP routes\
+| | ... | exist under the specified peer.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - Information about a DUT node. Type: dictionary
+| | ... | - peer_address - IP address of the peer. Type: string
+| | ... | - ip_version - IP protocol version, ipv4 or ipv6. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| No BGP routes should be configured \| ${nodes['DUT1']} \
+| | ... | \| 192.168.0.1 \| ipv4 \|
+| | ...
+| | [Arguments] | ${node} | ${peer_address} | ${ip_version}
+| | ...
+| | Run keyword and expect error | *Status code: 404*
+| | ... | Get All Peer Routes
+| | ... | ${node} | ${peer_address} | ${ip_version}
+
| BGP Loc-RIB table should include
| | [Documentation] | Uses Honeycomb API to retrieve local BGP RIB table\
| | ... | And verifies that it contains the specified entry.
diff --git a/resources/test_data/honeycomb/bgp.py b/resources/test_data/honeycomb/bgp.py
index 52513f0813..f514d83289 100644
--- a/resources/test_data/honeycomb/bgp.py
+++ b/resources/test_data/honeycomb/bgp.py
@@ -119,6 +119,25 @@ route_data_ipv4 = {
}]
}
+route_data_ipv4_oper = {
+ "bgp-inet:ipv4-route": [{
+ "route-key": route_address_ipv4,
+ "path-id": route_id_ipv4,
+ "prefix": route_address_ipv4,
+ "attributes": {
+ "origin": {
+ "value": "igp"
+ },
+ "local-pref": {
+ "pref": 100
+ },
+ "ipv4-next-hop": {
+ "global": "192.168.1.1"
+ }
+ }
+ }]
+}
+
# IPv4 route for testing Update operation
route_data_ipv4_update = {
"bgp-inet:ipv4-route": [{
@@ -139,6 +158,24 @@ route_data_ipv4_update = {
}
}]
}
+route_data_ipv4_update_oper = {
+ "bgp-inet:ipv4-route": [{
+ "route-key": route_address_ipv4,
+ "path-id": route_id_ipv4,
+ "prefix": route_address_ipv4,
+ "attributes": {
+ "origin": {
+ "value": "egp"
+ },
+ "local-pref": {
+ "pref": 200
+ },
+ "ipv4-next-hop": {
+ "global": "192.168.1.2"
+ }
+ }
+ }]
+}
# IPv4 route for testing multiple routes
route_address_ipv4_2 = "192.168.0.6/32"
@@ -163,6 +200,25 @@ route_data_ipv4_2 = {
}]
}
+route_data_ipv4_2_oper = {
+ "bgp-inet:ipv4-route": [{
+ "route-key": route_address_ipv4_2,
+ "path-id": route_id_ipv4_2,
+ "prefix": route_address_ipv4_2,
+ "attributes": {
+ "origin": {
+ "value": "igp"
+ },
+ "local-pref": {
+ "pref": 100
+ },
+ "ipv4-next-hop": {
+ "global": "192.168.1.2"
+ }
+ }
+ }]
+}
+
# IPv6 route for CRUD test
route_address_ipv6 = "3ffe:62::1/64"
route_id_ipv6 = 0
@@ -285,6 +341,25 @@ dut1_route = {
}]
}
+dut1_route_oper = {
+ "bgp-inet:ipv4-route": [{
+ "route-key": dut1_route_address,
+ "path-id": dut1_route_id,
+ "prefix": dut1_route_address,
+ "attributes": {
+ "origin": {
+ "value": "igp"
+ },
+ "local-pref": {
+ "pref": 100
+ },
+ "ipv4-next-hop": {
+ "global": "192.168.1.3"
+ }
+ }
+ }]
+}
+
# IPv4 route in peer operational data
rib_operational = {
"loc-rib": {"tables": [
@@ -292,7 +367,7 @@ rib_operational = {
"afi": "bgp-types:ipv4-address-family",
"safi": "bgp-types:unicast-subsequent-address-family",
"bgp-inet:ipv4-routes": {
- "ipv4-route": dut1_route["bgp-inet:ipv4-route"]
+ "ipv4-route": dut1_route_oper["bgp-inet:ipv4-route"]
}
}
]}
@@ -300,7 +375,6 @@ rib_operational = {
route_operational = {
"next-hop": {"next-hop-address": "192.168.1.3"},
- "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
"destination-prefix": dut1_route_address
}
@@ -326,6 +400,24 @@ dut1_route_ip6 = {
}
}]
}
+dut1_route_ip6_oper = {
+ "bgp-inet:ipv6-route": [{
+ "route-key": dut1_route_ip6_prefix,
+ "path-id": dut1_route_ip6_id,
+ "prefix": dut1_route_ip6_prefix,
+ "attributes": {
+ "origin": {
+ "value": "igp"
+ },
+ "local-pref": {
+ "pref": 100
+ },
+ "ipv6-next-hop": {
+ "global": "3ffe:63::1"
+ }
+ }
+ }]
+}
# IPv6 route in peer operational data
rib_ip6_operational = {
@@ -334,7 +426,7 @@ rib_ip6_operational = {
"afi": "bgp-types:ipv6-address-family",
"safi": "bgp-types:unicast-subsequent-address-family",
"bgp-inet:ipv6-routes": {
- "ipv6-route": dut1_route_ip6["bgp-inet:ipv6-route"]
+ "ipv6-route": dut1_route_ip6_oper["bgp-inet:ipv6-route"]
}
}
]}
@@ -342,6 +434,5 @@ rib_ip6_operational = {
route_ip6_operational = {
"next-hop": {"next-hop-address": "3ffe:63::1"},
- "vpp-ipv6-unicast-routing:vpp-ipv6-route": {},
"destination-prefix": dut1_route_ip6_prefix
}
diff --git a/resources/test_data/honeycomb/routing.py b/resources/test_data/honeycomb/routing.py
index 25fefe9426..2016ca54b5 100644
--- a/resources/test_data/honeycomb/routing.py
+++ b/resources/test_data/honeycomb/routing.py
@@ -67,7 +67,7 @@ def get_variables(node, ip_version, out_interface):
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
"next-hop": {
- "next-hop-address" : ipv4_base["next_hop"],
+ "next-hop-address": ipv4_base["next_hop"],
"outgoing-interface": out_interface
},
"vpp-ipv4-unicast-routing:vpp-ipv4-route": {}
@@ -151,16 +151,15 @@ def get_variables(node, ip_version, out_interface):
"table1_oper": {
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
- "next-hop":{
+ "next-hop": {
"next-hop-address": ipv4_base["next_hop"],
"outgoing-interface": out_interface
- },
- "vpp-ipv4-unicast-routing:vpp-ipv4-route": {}
+ }
},
"table2_oper": {
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
- "next-hop":{
+ "next-hop": {
"next-hop-list": {
"next-hop": [
{
@@ -177,32 +176,29 @@ def get_variables(node, ip_version, out_interface):
}
]
}
- },
- "vpp-ipv4-unicast-routing:vpp-ipv4-route": {}
+ }
},
"table3_oper": {
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
- "next-hop":{
+ "next-hop": {
"special-next-hop-enum": "blackhole"
- },
- "vpp-ipv4-unicast-routing:vpp-ipv4-route": {}
+ }
},
"table4_oper": {
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"],
ipv6_base["prefix_len"]),
- "next-hop":{
+ "next-hop": {
"next-hop-address": ipv6_base["next_hop"],
"outgoing-interface": out_interface
- },
- "vpp-ipv6-unicast-routing:vpp-ipv6-route": {}
+ }
},
"table5_oper": {
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"],
ipv6_base["prefix_len"]),
- "next-hop":{
+ "next-hop": {
"next-hop-list": {
"next-hop": [
{
@@ -219,17 +215,15 @@ def get_variables(node, ip_version, out_interface):
}
]
}
- },
- "vpp-ipv6-unicast-routing:vpp-ipv6-route": {}
+ }
},
"table6_oper": {
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"],
ipv6_base["prefix_len"]),
- "next-hop":{
+ "next-hop": {
"special-next-hop-enum": "blackhole"
- },
- "vpp-ipv6-unicast-routing:vpp-ipv6-route": {}
+ }
}
}