Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
ip: Protocol Independent IP Neighbors
[vpp.git]
/
test
/
test_ip4_vrf_multi_instance.py
diff --git
a/test/test_ip4_vrf_multi_instance.py
b/test/test_ip4_vrf_multi_instance.py
index
05ca84f
..
79e5ef7
100644
(file)
--- a/
test/test_ip4_vrf_multi_instance.py
+++ b/
test/test_ip4_vrf_multi_instance.py
@@
-1,4
+1,4
@@
-#!/usr/bin/env python
+#!/usr/bin/env python
3
"""IP4 VRF Multi-instance Test Case HLD:
**NOTES:**
"""IP4 VRF Multi-instance Test Case HLD:
**NOTES:**
@@
-66,9
+66,10
@@
import unittest
import random
import socket
import random
import socket
+import scapy.compat
from scapy.packet import Raw
from scapy.packet import Raw
-from scapy.layers.l2 import Ether
-from scapy.layers.inet import IP, UDP
, ARP
+from scapy.layers.l2 import Ether
, ARP
+from scapy.layers.inet import IP, UDP
from framework import VppTestCase, VppTestRunner
from util import ppp
from framework import VppTestCase, VppTestRunner
from util import ppp
@@
-107,7
+108,7
@@
class TestIp4VrfMultiInst(VppTestCase):
# Packet flows mapping pg0 -> pg1, pg2 etc.
cls.flows = dict()
for i in range(len(cls.pg_interfaces)):
# Packet flows mapping pg0 -> pg1, pg2 etc.
cls.flows = dict()
for i in range(len(cls.pg_interfaces)):
- multiplicand = i / cls.pg_ifs_per_vrf
+ multiplicand = i /
/
cls.pg_ifs_per_vrf
pg_list = [
cls.pg_interfaces[multiplicand * cls.pg_ifs_per_vrf + j]
for j in range(cls.pg_ifs_per_vrf)
pg_list = [
cls.pg_interfaces[multiplicand * cls.pg_ifs_per_vrf + j]
for j in range(cls.pg_ifs_per_vrf)
@@
-147,6
+148,10
@@
class TestIp4VrfMultiInst(VppTestCase):
super(TestIp4VrfMultiInst, cls).tearDownClass()
raise
super(TestIp4VrfMultiInst, cls).tearDownClass()
raise
+ @classmethod
+ def tearDownClass(cls):
+ super(TestIp4VrfMultiInst, cls).tearDownClass()
+
def setUp(self):
"""
Clear trace and packet infos before running each test.
def setUp(self):
"""
Clear trace and packet infos before running each test.
@@
-159,9
+164,10
@@
class TestIp4VrfMultiInst(VppTestCase):
Show various debug prints after each test.
"""
super(TestIp4VrfMultiInst, self).tearDown()
Show various debug prints after each test.
"""
super(TestIp4VrfMultiInst, self).tearDown()
- if not self.vpp_dead:
- self.logger.info(self.vapi.ppcli("show ip fib"))
- self.logger.info(self.vapi.ppcli("show ip arp"))
+
+ def show_commands_at_teardown(self):
+ self.logger.info(self.vapi.ppcli("show ip fib"))
+ self.logger.info(self.vapi.ppcli("show ip4 neighbors"))
def create_vrf_and_assign_interfaces(self, count, start=1):
"""
def create_vrf_and_assign_interfaces(self, count, start=1):
"""
@@
-178,10
+184,7
@@
class TestIp4VrfMultiInst(VppTestCase):
pg_if = self.pg_if_by_vrf_id[vrf_id][0]
dest_addr = pg_if.local_ip4n
dest_addr_len = 24
pg_if = self.pg_if_by_vrf_id[vrf_id][0]
dest_addr = pg_if.local_ip4n
dest_addr_len = 24
- self.vapi.ip_table_add_del(vrf_id, is_add=1)
- self.vapi.ip_add_del_route(
- dest_addr, dest_addr_len, pg_if.local_ip4n,
- table_id=vrf_id, is_multipath=1)
+ self.vapi.ip_table_add_del(is_add=1, table={'table_id': vrf_id})
self.logger.info("IPv4 VRF ID %d created" % vrf_id)
if vrf_id not in self.vrf_list:
self.vrf_list.append(vrf_id)
self.logger.info("IPv4 VRF ID %d created" % vrf_id)
if vrf_id not in self.vrf_list:
self.vrf_list.append(vrf_id)
@@
-199,7
+202,7
@@
class TestIp4VrfMultiInst(VppTestCase):
pg_if.config_ip4()
pg_if.configure_ipv4_neighbors()
self.logger.debug(self.vapi.ppcli("show ip fib"))
pg_if.config_ip4()
pg_if.configure_ipv4_neighbors()
self.logger.debug(self.vapi.ppcli("show ip fib"))
- self.logger.debug(self.vapi.ppcli("show ip
arp
"))
+ self.logger.debug(self.vapi.ppcli("show ip
4 neighbors
"))
def reset_vrf_and_remove_from_vrf_list(self, vrf_id):
"""
def reset_vrf_and_remove_from_vrf_list(self, vrf_id):
"""
@@
-207,8
+210,7
@@
class TestIp4VrfMultiInst(VppTestCase):
:param int vrf_id: The FIB table / VRF ID to be reset.
"""
:param int vrf_id: The FIB table / VRF ID to be reset.
"""
- # self.vapi.reset_vrf(vrf_id, is_ipv6=0)
- self.vapi.reset_fib(vrf_id, is_ipv6=0)
+ self.vapi.ip_table_flush(table={'table_id': vrf_id})
if vrf_id in self.vrf_list:
self.vrf_list.remove(vrf_id)
if vrf_id not in self.vrf_reset_list:
if vrf_id in self.vrf_list:
self.vrf_list.remove(vrf_id)
if vrf_id not in self.vrf_reset_list:
@@
-222,8
+224,8
@@
class TestIp4VrfMultiInst(VppTestCase):
self.pg_not_in_vrf.append(pg_if)
self.logger.info("IPv4 VRF ID %d reset finished" % vrf_id)
self.logger.debug(self.vapi.ppcli("show ip fib"))
self.pg_not_in_vrf.append(pg_if)
self.logger.info("IPv4 VRF ID %d reset finished" % vrf_id)
self.logger.debug(self.vapi.ppcli("show ip fib"))
- self.logger.debug(self.vapi.ppcli("show ip
arp
"))
- self.vapi.ip_table_add_del(
vrf_id, is_add=0
)
+ self.logger.debug(self.vapi.ppcli("show ip
neighbors
"))
+ self.vapi.ip_table_add_del(
is_add=0, table={'table_id': vrf_id}
)
def create_stream(self, src_if, packet_sizes):
"""
def create_stream(self, src_if, packet_sizes):
"""
@@
-299,7
+301,7
@@
class TestIp4VrfMultiInst(VppTestCase):
try:
ip = packet[IP]
udp = packet[UDP]
try:
ip = packet[IP]
udp = packet[UDP]
- payload_info = self.payload_to_info(
str(packet[Raw])
)
+ payload_info = self.payload_to_info(
packet[Raw]
)
packet_index = payload_info.index
self.assertEqual(payload_info.dst, dst_sw_if_index)
self.logger.debug("Got packet on port %s: src=%u (id=%u)" %
packet_index = payload_info.index
self.assertEqual(payload_info.dst, dst_sw_if_index)
self.logger.debug("Got packet on port %s: src=%u (id=%u)" %
@@
-334,23
+336,20
@@
class TestIp4VrfMultiInst(VppTestCase):
:param int vrf_id: The FIB table / VRF ID to be verified.
:return: 1 if the FIB table / VRF ID is configured, otherwise return 0.
"""
:param int vrf_id: The FIB table / VRF ID to be verified.
:return: 1 if the FIB table / VRF ID is configured, otherwise return 0.
"""
- ip_fib_dump = self.vapi.ip_
fib_dump(
)
- vrf_exist =
False
+ ip_fib_dump = self.vapi.ip_
route_dump(vrf_id
)
+ vrf_exist =
len(ip_fib_dump)
vrf_count = 0
for ip_fib_details in ip_fib_dump:
vrf_count = 0
for ip_fib_details in ip_fib_dump:
- if ip_fib_details.table_id == vrf_id:
- if not vrf_exist:
- vrf_exist = True
- addr = socket.inet_ntoa(ip_fib_details.address)
- found = False
- for pg_if in self.pg_if_by_vrf_id[vrf_id]:
- if found:
+ addr = ip_fib_details.route.prefix.network_address
+ found = False
+ for pg_if in self.pg_if_by_vrf_id[vrf_id]:
+ if found:
+ break
+ for host in pg_if.remote_hosts:
+ if str(addr) == host.ip4:
+ vrf_count += 1
+ found = True
break
break
- for host in pg_if.remote_hosts:
- if str(addr) == str(host.ip4):
- vrf_count += 1
- found = True
- break
if not vrf_exist and vrf_count == 0:
self.logger.info("IPv4 VRF ID %d is not configured" % vrf_id)
return VRFState.not_configured
if not vrf_exist and vrf_count == 0:
self.logger.info("IPv4 VRF ID %d is not configured" % vrf_id)
return VRFState.not_configured