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))
| | [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.
| | ... | ${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.
}]
}
+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": [{
}
}]
}
+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"
}]
}
+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
}]
}
+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": [
"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"]
}
}
]}
route_operational = {
"next-hop": {"next-hop-address": "192.168.1.3"},
- "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
"destination-prefix": dut1_route_address
}
}
}]
}
+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 = {
"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"]
}
}
]}
route_ip6_operational = {
"next-hop": {"next-hop-address": "3ffe:63::1"},
- "vpp-ipv6-unicast-routing:vpp-ipv6-route": {},
"destination-prefix": dut1_route_ip6_prefix
}
"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": {}
"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": [
{
}
]
}
- },
- "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": [
{
}
]
}
- },
- "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": {}
+ }
}
}
| | ... | ${node} | ${address_internal} | ${route_data_ipv4}
| | ... | ${route_address_ipv4} | ${route_id_ipv4} | ipv4
| | Then BGP Route from Honeycomb should be
-| | ... | ${node} | ${address_internal} | ${route_data_ipv4}
+| | ... | ${node} | ${address_internal} | ${route_data_ipv4_oper}
| | ... | ${route_address_ipv4} | ${route_id_ipv4} | ipv4
| TC07: Honeycomb removes IPv4 route configuration
| | Given BGP peer from Honeycomb should be
| | ... | ${node} | ${address_internal} | ${peer_internal}
| | And BGP Route from Honeycomb should be
-| | ... | ${node} | ${address_internal} | ${route_data_ipv4}
+| | ... | ${node} | ${address_internal} | ${route_data_ipv4_oper}
| | ... | ${route_address_ipv4} | ${route_id_ipv4} | ipv4
| | When Honeycomb removes BGP route | ${node} | ${address_internal}
| | ... | ${route_address_ipv4} | ${route_id_ipv4} | ipv4
-| | Then No BGP Routes Should be Configured
+| | Then No BGP Routes Should exist
| | ... | ${node} | ${address_internal} | ipv4
| TC08: Honeycomb updates existing IPv4 route using BGP
| | ...
| | Given BGP peer from Honeycomb should be
| | ... | ${node} | ${address_internal} | ${peer_internal}
-| | And No BGP Routes Should be Configured
+| | And No BGP Routes Should exist
| | ... | ${node} | ${address_internal} | ipv4
| | When Honeycomb configures BGP route
| | ... | ${node} | ${address_internal} | ${route_data_ipv4}
| | ... | ${node} | ${address_internal} | ${route_data_ipv4_update}
| | ... | ${route_address_ipv4} | ${route_id_ipv4} | ipv4
| | Then BGP Route from Honeycomb should be
-| | ... | ${node} | ${address_internal} | ${route_data_ipv4_update}
+| | ... | ${node} | ${address_internal} | ${route_data_ipv4_update_oper}
| | ... | ${route_address_ipv4} | ${route_id_ipv4} | ipv4
| TC09: Honeycomb configures a second IPv4 route
| | ... | ${node} | ${address_internal} | ${route_data_ipv4_2}
| | ... | ${route_address_ipv4_2} | ${route_id_ipv4_2} | ipv4
| | Then BGP Route from Honeycomb should be
-| | ... | ${node} | ${address_internal} | ${route_data_ipv4}
+| | ... | ${node} | ${address_internal} | ${route_data_ipv4_oper}
| | ... | ${route_address_ipv4} | ${route_id_ipv4} | ipv4
| | And BGP Route from Honeycomb should be
-| | ... | ${node} | ${address_internal} | ${route_data_ipv4_2}
+| | ... | ${node} | ${address_internal} | ${route_data_ipv4_2_oper}
| | ... | ${route_address_ipv4_2} | ${route_id_ipv4_2} | ipv4
| TC10: Honeycomb sends BGP OPEN messages to configured peer