Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
tests: refactor. Replace literal constant w/ named constant.
[vpp.git]
/
test
/
test_neighbor.py
diff --git
a/test/test_neighbor.py
b/test/test_neighbor.py
index
47f002c
..
6f781ff
100644
(file)
--- a/
test/test_neighbor.py
+++ b/
test/test_neighbor.py
@@
-7,7
+7,9
@@
from framework import VppTestCase, VppTestRunner
from vpp_neighbor import VppNeighbor, find_nbr
from vpp_ip_route import VppIpRoute, VppRoutePath, find_route, \
VppIpTable, DpoProto
from vpp_neighbor import VppNeighbor, find_nbr
from vpp_ip_route import VppIpRoute, VppRoutePath, find_route, \
VppIpTable, DpoProto
+from vpp_papi import VppEnum
+import scapy.compat
from scapy.packet import Raw
from scapy.layers.l2 import Ether, ARP, Dot1Q
from scapy.layers.inet import IP, UDP
from scapy.packet import Raw
from scapy.layers.l2 import Ether, ARP, Dot1Q
from scapy.layers.inet import IP, UDP
@@
-15,6
+17,9
@@
from scapy.layers.inet6 import IPv6
from scapy.contrib.mpls import MPLS
from scapy.layers.inet6 import IPv6
from scapy.contrib.mpls import MPLS
from scapy.layers.inet6 import IPv6
+
+NUM_PKTS = 67
+
# not exported by scapy, so redefined here
arp_opts = {"who-has": 1, "is-at": 2}
# not exported by scapy, so redefined here
arp_opts = {"who-has": 1, "is-at": 2}
@@
-22,6
+27,14
@@
arp_opts = {"who-has": 1, "is-at": 2}
class ARPTestCase(VppTestCase):
""" ARP Test Case """
class ARPTestCase(VppTestCase):
""" ARP Test Case """
+ @classmethod
+ def setUpClass(cls):
+ super(ARPTestCase, cls).setUpClass()
+
+ @classmethod
+ def tearDownClass(cls):
+ super(ARPTestCase, cls).tearDownClass()
+
def setUp(self):
super(ARPTestCase, self).setUp()
def setUp(self):
super(ARPTestCase, self).setUp()
@@
-498,7
+511,7
@@
class ARPTestCase(VppTestCase):
self.pg1._remote_hosts[9].ip4)
#
self.pg1._remote_hosts[9].ip4)
#
- # Add a hierachy of routes for a host in the sub-net.
+ # Add a hiera
r
chy of routes for a host in the sub-net.
# Should still get an ARP resp since the cover is attached
#
p = (Ether(dst="ff:ff:ff:ff:ff:ff", src=self.pg1.remote_mac) /
# Should still get an ARP resp since the cover is attached
#
p = (Ether(dst="ff:ff:ff:ff:ff:ff", src=self.pg1.remote_mac) /
@@
-597,8
+610,8
@@
class ARPTestCase(VppTestCase):
#
# 2 - don't respond to ARP request from an address not within the
# interface's sub-net
#
# 2 - don't respond to ARP request from an address not within the
# interface's sub-net
- # 2b - to a prxied address
- # 2c - not within a different
s
interface's sub-net
+ # 2b - to a pr
o
xied address
+ # 2c - not within a different interface's sub-net
p = (Ether(dst="ff:ff:ff:ff:ff:ff", src=self.pg0.remote_mac) /
ARP(op="who-has",
hwsrc=self.pg0.remote_mac,
p = (Ether(dst="ff:ff:ff:ff:ff:ff", src=self.pg0.remote_mac) /
ARP(op="who-has",
hwsrc=self.pg0.remote_mac,
@@
-693,8
+706,8
@@
class ARPTestCase(VppTestCase):
#
# Configure Proxy ARP for the subnet on PG0addresses on pg0
#
#
# Configure Proxy ARP for the subnet on PG0addresses on pg0
#
- self.vapi.proxy_arp_add_del(self.pg0._local_ip4
n
_subnet,
- self.pg0._local_ip4
n
_bcast)
+ self.vapi.proxy_arp_add_del(self.pg0._local_ip4_subnet,
+ self.pg0._local_ip4_bcast)
# Make pg2 un-numbered to pg0
#
# Make pg2 un-numbered to pg0
#
@@
-731,8
+744,8
@@
class ARPTestCase(VppTestCase):
# cleanup
#
self.pg2.set_proxy_arp(0)
# cleanup
#
self.pg2.set_proxy_arp(0)
- self.vapi.proxy_arp_add_del(self.pg0._local_ip4
n
_subnet,
- self.pg0._local_ip4
n
_bcast,
+ self.vapi.proxy_arp_add_del(self.pg0._local_ip4_subnet,
+ self.pg0._local_ip4_bcast,
is_add=0)
def test_proxy_arp(self):
is_add=0)
def test_proxy_arp(self):
@@
-741,7
+754,7
@@
class ARPTestCase(VppTestCase):
self.pg1.generate_remote_hosts(2)
#
self.pg1.generate_remote_hosts(2)
#
- # Proxy ARP re
w
quest packets for each interface
+ # Proxy ARP request packets for each interface
#
arp_req_pg0 = (Ether(src=self.pg0.remote_mac,
dst="ff:ff:ff:ff:ff:ff") /
#
arp_req_pg0 = (Ether(src=self.pg0.remote_mac,
dst="ff:ff:ff:ff:ff:ff") /
@@
-909,7
+922,7
@@
class ARPTestCase(VppTestCase):
self.pg2.generate_remote_hosts(2)
#
self.pg2.generate_remote_hosts(2)
#
- # Add a r
e
oute with out going label via an ARP unresolved next-hop
+ # Add a route with out going label via an ARP unresolved next-hop
#
ip_10_0_0_1 = VppIpRoute(self, "10.0.0.1", 32,
[VppRoutePath(self.pg2.remote_hosts[1].ip4,
#
ip_10_0_0_1 = VppIpRoute(self, "10.0.0.1", 32,
[VppRoutePath(self.pg2.remote_hosts[1].ip4,
@@
-971,11
+984,7
@@
class ARPTestCase(VppTestCase):
UDP(sport=1234, dport=1234) /
Raw())
UDP(sport=1234, dport=1234) /
Raw())
- self.pg0.add_stream(p0)
- self.pg_enable_capture(self.pg_interfaces)
- self.pg_start()
-
- rx1 = self.pg1.get_capture(1)
+ rx1 = self.send_and_expect(self.pg0, [p0], self.pg1)
self.verify_arp_req(rx1[0],
self.pg1.local_mac,
self.verify_arp_req(rx1[0],
self.pg1.local_mac,
@@
-992,20
+1001,14
@@
class ARPTestCase(VppTestCase):
hwsrc="00:00:5e:00:01:09", pdst=self.pg1.local_ip4,
psrc=self.pg1.remote_ip4))
hwsrc="00:00:5e:00:01:09", pdst=self.pg1.local_ip4,
psrc=self.pg1.remote_ip4))
- self.pg1.add_stream(p1)
- self.pg_enable_capture(self.pg_interfaces)
- self.pg_start()
+ self.send_and_assert_no_replies(self.pg1, p1, "ARP reply")
#
# IP packet destined for pg1 remote host arrives on pg0 again.
# VPP should have an ARP entry for that address now and the packet
# should be sent out pg1.
#
#
# IP packet destined for pg1 remote host arrives on pg0 again.
# VPP should have an ARP entry for that address now and the packet
# should be sent out pg1.
#
- self.pg0.add_stream(p0)
- self.pg_enable_capture(self.pg_interfaces)
- self.pg_start()
-
- rx1 = self.pg1.get_capture(1)
+ rx1 = self.send_and_expect(self.pg0, [p0], self.pg1)
self.verify_ip(rx1[0],
self.pg1.local_mac,
self.verify_ip(rx1[0],
self.pg1.local_mac,
@@
-1062,7
+1065,7
@@
class ARPTestCase(VppTestCase):
#
# remove the duplicate on pg1
#
# remove the duplicate on pg1
- # packet stream shoud generate ARPs out of pg1
+ # packet stream shou
l
d generate ARPs out of pg1
#
arp_pg1.remove_vpp_config()
#
arp_pg1.remove_vpp_config()
@@
-1187,8
+1190,9
@@
class ARPTestCase(VppTestCase):
#
# change the interface's MAC
#
#
# change the interface's MAC
#
- mac = [chr(0x00), chr(0x00), chr(0x00),
- chr(0x33), chr(0x33), chr(0x33)]
+ mac = [scapy.compat.chb(0x00), scapy.compat.chb(0x00),
+ scapy.compat.chb(0x00), scapy.compat.chb(0x33),
+ scapy.compat.chb(0x33), scapy.compat.chb(0x33)]
mac_string = ''.join(mac)
self.vapi.sw_interface_set_mac_address(self.pg1.sw_if_index,
mac_string = ''.join(mac)
self.vapi.sw_interface_set_mac_address(self.pg1.sw_if_index,
@@
-1214,7
+1218,7
@@
class ARPTestCase(VppTestCase):
self.pg1.remote_hosts[1].ip4)
#
self.pg1.remote_hosts[1].ip4)
#
- # set the mac address on the inteface that does not have a
+ # set the mac address on the inte
r
face that does not have a
# configured subnet and thus no glean
#
self.vapi.sw_interface_set_mac_address(self.pg2.sw_if_index,
# configured subnet and thus no glean
#
self.vapi.sw_interface_set_mac_address(self.pg2.sw_if_index,
@@
-1283,7
+1287,7
@@
class ARPTestCase(VppTestCase):
mac=self.pg1.remote_hosts[3].mac))
#
mac=self.pg1.remote_hosts[3].mac))
#
- # GARPs (reque
ts
nor replies) for host we don't know yet
+ # GARPs (reque
st
nor replies) for host we don't know yet
# don't result in new neighbour entries
#
p1 = (Ether(dst="ff:ff:ff:ff:ff:ff",
# don't result in new neighbour entries
#
p1 = (Ether(dst="ff:ff:ff:ff:ff:ff",
@@
-1387,7
+1391,7
@@
class ARPTestCase(VppTestCase):
# Test that VPP responds with ARP requests to addresses that
# are connected and local routes.
# Use one of the 'remote' addresses in the subnet as a local address
# Test that VPP responds with ARP requests to addresses that
# are connected and local routes.
# Use one of the 'remote' addresses in the subnet as a local address
- # The intention of this route is that it then acts like a secondar
d
y
+ # The intention of this route is that it then acts like a secondary
# address added to an interface
#
self.pg0.generate_remote_hosts(2)
# address added to an interface
#
self.pg0.generate_remote_hosts(2)
@@
-1416,7
+1420,15
@@
class ARPTestCase(VppTestCase):
class NeighborStatsTestCase(VppTestCase):
class NeighborStatsTestCase(VppTestCase):
- """ ARP Test Case """
+ """ ARP/ND Counters """
+
+ @classmethod
+ def setUpClass(cls):
+ super(NeighborStatsTestCase, cls).setUpClass()
+
+ @classmethod
+ def tearDownClass(cls):
+ super(NeighborStatsTestCase, cls).tearDownClass()
def setUp(self):
super(NeighborStatsTestCase, self).setUp()
def setUp(self):
super(NeighborStatsTestCase, self).setUp()
@@
-1471,14
+1483,14
@@
class NeighborStatsTestCase(VppTestCase):
UDP(sport=1234, dport=1234) /
Raw())
UDP(sport=1234, dport=1234) /
Raw())
- rx = self.send_and_expect(self.pg0, p1 *
65
, self.pg1)
- rx = self.send_and_expect(self.pg0, p2 *
65
, self.pg1)
+ rx = self.send_and_expect(self.pg0, p1 *
NUM_PKTS
, self.pg1)
+ rx = self.send_and_expect(self.pg0, p2 *
NUM_PKTS
, self.pg1)
- self.assertEqual(
65
, arp1.get_stats()['packets'])
- self.assertEqual(
65
, arp2.get_stats()['packets'])
+ self.assertEqual(
NUM_PKTS
, arp1.get_stats()['packets'])
+ self.assertEqual(
NUM_PKTS
, arp2.get_stats()['packets'])
- rx = self.send_and_expect(self.pg0, p1 *
65
, self.pg1)
- self.assertEqual(
130
, arp1.get_stats()['packets'])
+ rx = self.send_and_expect(self.pg0, p1 *
NUM_PKTS
, self.pg1)
+ self.assertEqual(
NUM_PKTS*2
, arp1.get_stats()['packets'])
def test_nd_stats(self):
""" ND Counters """
def test_nd_stats(self):
""" ND Counters """
@@
-1489,14
+1501,12
@@
class NeighborStatsTestCase(VppTestCase):
nd1 = VppNeighbor(self,
self.pg0.sw_if_index,
self.pg0.remote_hosts[1].mac,
nd1 = VppNeighbor(self,
self.pg0.sw_if_index,
self.pg0.remote_hosts[1].mac,
- self.pg0.remote_hosts[1].ip6,
- af=AF_INET6)
+ self.pg0.remote_hosts[1].ip6)
nd1.add_vpp_config()
nd2 = VppNeighbor(self,
self.pg0.sw_if_index,
self.pg0.remote_hosts[2].mac,
nd1.add_vpp_config()
nd2 = VppNeighbor(self,
self.pg0.sw_if_index,
self.pg0.remote_hosts[2].mac,
- self.pg0.remote_hosts[2].ip6,
- af=AF_INET6)
+ self.pg0.remote_hosts[2].ip6)
nd2.add_vpp_config()
p1 = (Ether(dst=self.pg1.local_mac,
nd2.add_vpp_config()
p1 = (Ether(dst=self.pg1.local_mac,
@@
-1518,8
+1528,8
@@
class NeighborStatsTestCase(VppTestCase):
self.assertEqual(16, nd1.get_stats()['packets'])
self.assertEqual(16, nd2.get_stats()['packets'])
self.assertEqual(16, nd1.get_stats()['packets'])
self.assertEqual(16, nd2.get_stats()['packets'])
- rx = self.send_and_expect(self.pg1, p1 *
65
, self.pg0)
- self.assertEqual(
81
, nd1.get_stats()['packets'])
+ rx = self.send_and_expect(self.pg1, p1 *
NUM_PKTS
, self.pg0)
+ self.assertEqual(
NUM_PKTS+16
, nd1.get_stats()['packets'])
if __name__ == '__main__':
if __name__ == '__main__':