X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_neighbor.py;h=c6d9fc61815b54ba6c6f24ad83badabb10e8c619;hb=5bfb504d2156f9480c1dd813238bd46b71e689d8;hp=47f002cd91a9195220f05fb3a70fbc880180b389;hpb=7425f9289bdc17d330044b0df0fc31cdeeca626b;p=vpp.git diff --git a/test/test_neighbor.py b/test/test_neighbor.py index 47f002cd91a..c6d9fc61815 100644 --- 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_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 @@ -22,6 +24,14 @@ arp_opts = {"who-has": 1, "is-at": 2} 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() @@ -498,7 +508,7 @@ class ARPTestCase(VppTestCase): self.pg1._remote_hosts[9].ip4) # - # Add a hierachy of routes for a host in the sub-net. + # Add a hierarchy 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) / @@ -597,8 +607,8 @@ class ARPTestCase(VppTestCase): # # 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 differents interface's sub-net + # 2b - to a proxied 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, @@ -693,8 +703,8 @@ class ARPTestCase(VppTestCase): # # Configure Proxy ARP for the subnet on PG0addresses on pg0 # - self.vapi.proxy_arp_add_del(self.pg0._local_ip4n_subnet, - self.pg0._local_ip4n_bcast) + self.vapi.proxy_arp_add_del(self.pg0._local_ip4_subnet, + self.pg0._local_ip4_bcast) # Make pg2 un-numbered to pg0 # @@ -731,8 +741,8 @@ class ARPTestCase(VppTestCase): # cleanup # self.pg2.set_proxy_arp(0) - self.vapi.proxy_arp_add_del(self.pg0._local_ip4n_subnet, - self.pg0._local_ip4n_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): @@ -741,7 +751,7 @@ class ARPTestCase(VppTestCase): self.pg1.generate_remote_hosts(2) # - # Proxy ARP rewquest 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") / @@ -909,7 +919,7 @@ class ARPTestCase(VppTestCase): self.pg2.generate_remote_hosts(2) # - # Add a reoute 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, @@ -971,11 +981,7 @@ class ARPTestCase(VppTestCase): 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, @@ -992,20 +998,14 @@ class ARPTestCase(VppTestCase): 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. # - 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, @@ -1062,7 +1062,7 @@ class ARPTestCase(VppTestCase): # # remove the duplicate on pg1 - # packet stream shoud generate ARPs out of pg1 + # packet stream should generate ARPs out of pg1 # arp_pg1.remove_vpp_config() @@ -1187,8 +1187,9 @@ class ARPTestCase(VppTestCase): # # 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, @@ -1214,7 +1215,7 @@ class ARPTestCase(VppTestCase): self.pg1.remote_hosts[1].ip4) # - # set the mac address on the inteface that does not have a + # set the mac address on the interface that does not have a # configured subnet and thus no glean # self.vapi.sw_interface_set_mac_address(self.pg2.sw_if_index, @@ -1283,7 +1284,7 @@ class ARPTestCase(VppTestCase): mac=self.pg1.remote_hosts[3].mac)) # - # GARPs (requets nor replies) for host we don't know yet + # GARPs (request 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", @@ -1387,7 +1388,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 - # The intention of this route is that it then acts like a secondardy + # The intention of this route is that it then acts like a secondary # address added to an interface # self.pg0.generate_remote_hosts(2) @@ -1416,7 +1417,15 @@ class ARPTestCase(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() @@ -1489,14 +1498,12 @@ class NeighborStatsTestCase(VppTestCase): 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, - 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,