summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
6e9d38f)
this fixes test failures caused by HC2VPP routing
models bump (https://gerrit.fd.io/r/#/c/10954)
- updates tests for bgp routing
- updates tests for routing
- updates SLAAC test because of changes in rt-advertisements
Change-Id: Iacc37b42e6523f440d77241c18ca8e61d1d01f23
Signed-off-by: Michal Cmarada <michal.cmarada@pantheon.tech>
protocol = "vpp-protocol-attributes"
full_data = {
protocol = "vpp-protocol-attributes"
full_data = {
+ "control-plane-protocol": [
{
"name": name,
"description": "hc2vpp-csit test route",
{
"name": name,
"description": "hc2vpp-csit test route",
"type": "static",
protocol: {
"primary-vrf": vrf
"type": "static",
protocol: {
"primary-vrf": vrf
- path = "/routing-protocol/{0}".format(name)
+ path = "/control-plane-protocol/hc2vpp-ietf-routing:static/{0}".format(name)
return RoutingKeywords._set_routing_table_properties(
node, path, full_data)
return RoutingKeywords._set_routing_table_properties(
node, path, full_data)
- path = "/routing-protocol/{0}".format(name)
+ path = "/control-plane-protocol/hc2vpp-ietf-routing:static/{0}".format(name)
return RoutingKeywords._set_routing_table_properties(node, path)
@staticmethod
return RoutingKeywords._set_routing_table_properties(node, path)
@staticmethod
:raises HoneycombError: If the operation fails.
"""
:raises HoneycombError: If the operation fails.
"""
- path = "/routing-protocol/{0}".format(name)
+ path = "/control-plane-protocol/hc2vpp-ietf-routing:static/{0}".format(name)
status_code, resp = HcUtil.\
get_honeycomb_data(node, "oper_routing_table", path)
status_code, resp = HcUtil.\
get_honeycomb_data(node, "oper_routing_table", path)
"routing tables. Status code: {0}.".format(status_code))
data = RoutingKeywords.clean_routing_oper_data(
"routing tables. Status code: {0}.".format(status_code))
data = RoutingKeywords.clean_routing_oper_data(
- resp['routing-protocol'][0]['static-routes']
+ resp['control-plane-protocol'][0]['static-routes']
['hc2vpp-ietf-{0}-unicast-routing:{0}'.format(ip_version)]['route'])
return data
['hc2vpp-ietf-{0}-unicast-routing:{0}'.format(ip_version)]['route'])
return data
interface = Topology.convert_interface_reference(
node, interface, 'name')
interface = Topology.convert_interface_reference(
node, interface, 'name')
- interface_orig = interface
interface = interface.replace('/', '%2F')
interface = interface.replace('/', '%2F')
- path = 'interface/' + interface
+ path = 'interface/' + interface + '/ipv6/ipv6-router-advertisements'
if not slaac_data:
status_code, _ = HcUtil.delete_honeycomb_data(
node, 'config_slaac', path)
else:
data = {
if not slaac_data:
status_code, _ = HcUtil.delete_honeycomb_data(
node, 'config_slaac', path)
else:
data = {
- 'interface': [
- {
- 'name': interface_orig,
- 'ipv6-router-advertisements': slaac_data
- }
- ]
+ 'ipv6-router-advertisements': slaac_data
}
status_code, _ = HcUtil.put_honeycomb_data(
}
status_code, _ = HcUtil.put_honeycomb_data(
interface = Topology.convert_interface_reference(
node, interface, 'name')
interface = interface.replace('/', '%2F')
interface = Topology.convert_interface_reference(
node, interface, 'name')
interface = interface.replace('/', '%2F')
- path = 'interface/' + interface
+ path = 'interface/' + interface + '/ipv6/ipv6-router-advertisements'
status_code, resp = HcUtil.\
get_honeycomb_data(node, "config_slaac", path)
status_code, resp = HcUtil.\
get_honeycomb_data(node, "config_slaac", path)
"Not possible to get operational information about SLAAC. "
"Status code: {0}.".format(status_code))
try:
"Not possible to get operational information about SLAAC. "
"Status code: {0}.".format(status_code))
try:
- dict_of_str = resp['interface'][0][
'hc2vpp-ietf-ipv6-unicast-routing:ipv6-router-advertisements']
return {k: str(v) for k, v in dict_of_str.items()}
except (KeyError, TypeError):
'hc2vpp-ietf-ipv6-unicast-routing:ipv6-router-advertisements']
return {k: str(v) for k, v in dict_of_str.items()}
except (KeyError, TypeError):
-/restconf/config{odl_url_part}/hc2vpp-ietf-routing:routing/routing-instance/vpp-routing-instance/routing-protocols
\ No newline at end of file
+/restconf/config{odl_url_part}/hc2vpp-ietf-routing:routing/control-plane-protocols
\ No newline at end of file
-/restconf/config{odl_url_part}/hc2vpp-ietf-routing:routing/routing-instance/vpp-routing-instance/interfaces/
\ No newline at end of file
+/restconf/config{odl_url_part}/ietf-interfaces:interfaces/
\ No newline at end of file
-/restconf/operational{odl_url_part}/hc2vpp-ietf-routing:routing-state/routing-instance/vpp-routing-instance/routing-protocols
\ No newline at end of file
+/restconf/operational{odl_url_part}/hc2vpp-ietf-routing:routing/control-plane-protocols
\ No newline at end of file
table1_oper = {
"destination-prefix": route_address_ipv4,
"next-hop": "192.168.1.1",
table1_oper = {
"destination-prefix": route_address_ipv4,
"next-hop": "192.168.1.1",
- "vpp-ipv4-route-state": {}
+ "vpp-ipv4-unicast-routing:vpp-ipv4-route": {}
}
# Peer configurations for traffic test
}
# Peer configurations for traffic test
- "vpp-ipv4-route-state": {},
- "next-hop": "192.168.1.3",
+ "next-hop": {"next-hop-address": "192.168.1.3"},
+ "vpp-ipv4-unicast-routing:vpp-ipv4-route": {},
"destination-prefix": dut1_route_address
}
# IPv6 route for traffic test
"destination-prefix": dut1_route_address
}
# IPv6 route for traffic test
-dut1_route_ip6_address = "3ffe:62::1/64"
+dut1_route_ip6_prefix = "3ffe:62::/64"
dut1_route_ip6_id = 1
dut1_route_ip6 = {
"bgp-inet:ipv6-route": [{
"path-id": dut1_route_ip6_id,
dut1_route_ip6_id = 1
dut1_route_ip6 = {
"bgp-inet:ipv6-route": [{
"path-id": dut1_route_ip6_id,
- "prefix": dut1_route_ip6_address,
+ "prefix": dut1_route_ip6_prefix,
"attributes": {
"as-path": {},
"origin": {
"attributes": {
"as-path": {},
"origin": {
}
route_ip6_operational = {
}
route_ip6_operational = {
- "vpp-ipv6-route-state": {},
- "next-hop": "3ffe:63::1",
- "destination-prefix": dut1_route_ip6_address
+ "next-hop": {"next-hop-address": "3ffe:63::1"},
+ "vpp-ipv6-unicast-routing:vpp-ipv6-route": {},
+ "destination-prefix": dut1_route_ip6_prefix
# route configuration used in tests
tables_cfg = {
"table1": {
# route configuration used in tests
tables_cfg = {
"table1": {
"description": "single hop ipv4",
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
"description": "single hop ipv4",
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
- "next-hop": ipv4_base["next_hop"],
- "outgoing-interface": out_interface,
- "vpp-ipv4-route": {}
+ "next-hop": {
+ "next-hop-address" : ipv4_base["next_hop"],
+ "outgoing-interface": out_interface
+ },
+ "vpp-ipv4-unicast-routing:vpp-ipv4-route": {}
"description": "multi hop ipv4",
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
"description": "multi hop ipv4",
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
- "next-hop-list": {
- "next-hop": [
- {
- "id": 1,
- "address": ipv4_base["next_hop1"],
- "outgoing-interface": out_interface,
- "weight": "1"
- },
- {
- "id": 2,
- "address": ipv4_base["next_hop2"],
- "outgoing-interface": out_interface,
- "weight": "1"
- }
- ]
+ "next-hop":{
+ "next-hop-list": {
+ "next-hop": [
+ {
+ "index": "1",
+ "next-hop-address": ipv4_base["next_hop1"],
+ "outgoing-interface": out_interface,
+ "weight": "1"
+ },
+ {
+ "index": "2",
+ "next-hop-address": ipv4_base["next_hop2"],
+ "outgoing-interface": out_interface,
+ "weight": "1"
+ }
+ ]
+ }
"description": "blackhole ipv4",
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
"description": "blackhole ipv4",
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
- "special-next-hop": "receive"
+ "next-hop": {
+ "special-next-hop-enum": "blackhole"
+ }
"description": "single hop ipv6",
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
"description": "single hop ipv6",
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
- "next-hop": ipv6_base["next_hop"],
- "outgoing-interface": out_interface,
- "vpp-ipv6-route": {}
+ "next-hop": {
+ "next-hop-address": ipv6_base["next_hop"],
+ "outgoing-interface": out_interface
+ },
+ "vpp-ipv6-unicast-routing:vpp-ipv6-route": {}
"description": "multi hop ipv6",
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
"description": "multi hop ipv6",
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
- "next-hop-list": {
- "next-hop": [
- {
- "id": 1,
- "address": ipv6_base["next_hop1"],
- "outgoing-interface": out_interface,
- "weight": "1"
- },
- {
- "id": 2,
- "address": ipv6_base["next_hop2"],
- "outgoing-interface": out_interface,
- "weight": "1"
- }
- ]
+ "next-hop":{
+ "next-hop-list": {
+ "next-hop": [
+ {
+ "index": "1",
+ "next-hop-address": ipv6_base["next_hop1"],
+ "outgoing-interface": out_interface,
+ "weight": "1"
+ },
+ {
+ "index": "2",
+ "next-hop-address": ipv6_base["next_hop2"],
+ "outgoing-interface": out_interface,
+ "weight": "1"
+ }
+ ]
+ }
"description": "blackhole ipv6",
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
"description": "blackhole ipv6",
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"], ipv6_base["prefix_len"]),
- "special-next-hop": "blackhole"
+ "next-hop":{
+ "special-next-hop-enum": "blackhole"
+ }
"table1_oper": {
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
"table1_oper": {
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
- "next-hop": ipv4_base["next_hop"],
- "outgoing-interface": out_interface,
- "vpp-ipv4-route-state": {}
+ "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"]),
},
"table2_oper": {
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
- "next-hop-list": {
- "next-hop": [
- {
- "address": ipv4_base["next_hop1"],
- "outgoing-interface": out_interface,
- "weight": 1
- },
- {
- "address": ipv4_base["next_hop2"],
- "outgoing-interface": out_interface,
- "weight": 1
- }
- ]
+ "next-hop":{
+ "next-hop-list": {
+ "next-hop": [
+ {
+ "index": "2",
+ "next-hop-address": ipv4_base["next_hop2"],
+ "outgoing-interface": out_interface,
+ "vpp-ipv4-unicast-routing:weight": 1
+ },
+ {
+ "index": "1",
+ "next-hop-address": ipv4_base["next_hop1"],
+ "outgoing-interface": out_interface,
+ "vpp-ipv4-unicast-routing:weight": 1
+ }
+ ]
+ }
- 'vpp-ipv4-route-state': {}
+ "vpp-ipv4-unicast-routing:vpp-ipv4-route": {}
},
"table3_oper": {
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
},
"table3_oper": {
"destination-prefix":
"{0}/{1}".format(ipv4_base["dst_net"], ipv4_base["prefix_len"]),
- "special-next-hop": "receive",
- "vpp-ipv4-route-state": {}
+ "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"]),
},
"table4_oper": {
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"],
ipv6_base["prefix_len"]),
- "next-hop": ipv6_base["next_hop"],
- "outgoing-interface": out_interface,
- "vpp-ipv6-route-state": {}
+ "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"]),
},
"table5_oper": {
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"],
ipv6_base["prefix_len"]),
- "next-hop-list": {
- "next-hop": [
- {
- "address": ipv6_base["next_hop1"],
- "outgoing-interface": out_interface,
- "weight": 1
- },
- {
- "address": ipv6_base["next_hop2"],
- "outgoing-interface": out_interface,
- "weight": 1
- }
- ]
+ "next-hop":{
+ "next-hop-list": {
+ "next-hop": [
+ {
+ "index": "2",
+ "next-hop-address": ipv6_base["next_hop2"],
+ "outgoing-interface": out_interface,
+ "vpp-ipv6-unicast-routing:weight": 1
+ },
+ {
+ "index": "1",
+ "next-hop-address": ipv6_base["next_hop1"],
+ "outgoing-interface": out_interface,
+ "vpp-ipv6-unicast-routing:weight": 1
+ }
+ ]
+ }
- "vpp-ipv6-route-state": {}
+ "vpp-ipv6-unicast-routing:vpp-ipv6-route": {}
},
"table6_oper": {
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"],
ipv6_base["prefix_len"]),
},
"table6_oper": {
"destination-prefix":
"{0}/{1}".format(ipv6_base["dst_net"],
ipv6_base["prefix_len"]),
- "special-next-hop": "blackhole",
- 'vpp-ipv6-route-state': {}
+ "next-hop":{
+ "special-next-hop-enum": "blackhole"
+ },
+ "vpp-ipv6-unicast-routing:vpp-ipv6-route": {}
| | ... | ${dut2_node} | ${address_application} | ${peer_application}
| | And Honeycomb configures BGP route
| | ... | ${dut2_node} | ${address_application} | ${dut1_route_ip6}
| | ... | ${dut2_node} | ${address_application} | ${peer_application}
| | And Honeycomb configures BGP route
| | ... | ${dut2_node} | ${address_application} | ${dut1_route_ip6}
-| | ... | ${dut1_route_ip6_address} | ${dut1_route_ip6_id} | ipv6
+| | ... | ${dut1_route_ip6_prefix} | ${dut1_route_ip6_id} | ipv6
| | And Sleep | 5s | Wait for route advertisement. Retry timer is 5 seconds.
| | Then Routing data from Honeycomb should contain
| | ... | ${dut1_node} | learned-protocol-0 | ipv6 | ${route_ip6_operational}
| | And Sleep | 5s | Wait for route advertisement. Retry timer is 5 seconds.
| | Then Routing data from Honeycomb should contain
| | ... | ${dut1_node} | learned-protocol-0 | ipv6 | ${route_ip6_operational}