X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_nat.py;h=29d747d0932bbf19459e64c0d02e23b2dbf26f75;hb=90cf21b5d8fd2d3e531e841dcd752311df5f8a50;hp=f4978cfe223371ee805f19ff0d0f371d1cb64e7f;hpb=22ab6f7cbb0f6139302aa6ca9f0c96dba17a37a7;p=vpp.git diff --git a/test/test_nat.py b/test/test_nat.py index f4978cfe223..29d747d0932 100644 --- a/test/test_nat.py +++ b/test/test_nat.py @@ -178,8 +178,8 @@ class MethodHolder(VppTestCase): protocol=id_m.protocol, is_add=0) - adresses = self.vapi.nat44_address_dump() - for addr in adresses: + addresses = self.vapi.nat44_address_dump() + for addr in addresses: self.vapi.nat44_add_del_address_range(addr.ip_address, addr.ip_address, twice_nat=addr.twice_nat, @@ -241,7 +241,7 @@ class MethodHolder(VppTestCase): :param ip: IP address :param is_add: 1 if add, 0 if delete (Default add) - :param twice_nat: twice NAT address for extenal hosts + :param twice_nat: twice NAT address for external hosts """ nat_addr = socket.inet_pton(socket.AF_INET, ip) self.vapi.nat44_add_del_address_range(nat_addr, nat_addr, is_add, @@ -481,7 +481,7 @@ class MethodHolder(VppTestCase): :param capture: Captured packets :param nat_ip: Translated IP address (Default use global NAT address) - :param same_port: Sorce port number is not translated (Default False) + :param same_port: Source port number is not translated (Default False) :param dst_ip: Destination IP address (Default do not verify) :param is_ip6: If L3 protocol is IPv6 (Default False) """ @@ -534,7 +534,7 @@ class MethodHolder(VppTestCase): :param capture: Captured packets :param nat_ip: Translated IP address - :param same_port: Sorce port number is not translated (Default False) + :param same_port: Source port number is not translated (Default False) :param dst_ip: Destination IP address (Default do not verify) """ return self.verify_capture_out(capture, nat_ip, same_port, dst_ip, @@ -686,7 +686,7 @@ class MethodHolder(VppTestCase): :param data: Payload data :param proto: protocol (TCP, UDP, ICMP) :param echo_reply: use echo_reply if protocol is ICMP - :returns: Fragmets + :returns: Fragments """ if proto == IP_PROTOS.tcp: p = (IP(src=src_if.remote_ip4, dst=dst) / @@ -748,7 +748,7 @@ class MethodHolder(VppTestCase): :param pref: NAT64 prefix :param plen: NAT64 prefix length :param fragsize: size of fragments - :returns: Fragmets + :returns: Fragments """ if pref is None: dst_ip6 = ''.join(['64:ff9b::', dst]) @@ -1562,6 +1562,10 @@ class TestNAT44(MethodHolder): super(TestNAT44, cls).tearDownClass() raise + @classmethod + def tearDownClass(cls): + super(TestNAT44, cls).tearDownClass() + def test_dynamic(self): """ NAT44 dynamic translation test """ self.nat44_add_address(self.nat_addr) @@ -2584,19 +2588,19 @@ class TestNAT44(MethodHolder): self.vapi.nat44_add_del_interface_addr(self.pg7.sw_if_index) # no address in NAT pool - adresses = self.vapi.nat44_address_dump() - self.assertEqual(0, len(adresses)) + addresses = self.vapi.nat44_address_dump() + self.assertEqual(0, len(addresses)) # configure interface address and check NAT address pool self.pg7.config_ip4() - adresses = self.vapi.nat44_address_dump() - self.assertEqual(1, len(adresses)) - self.assertEqual(adresses[0].ip_address[0:4], self.pg7.local_ip4n) + addresses = self.vapi.nat44_address_dump() + self.assertEqual(1, len(addresses)) + self.assertEqual(addresses[0].ip_address[0:4], self.pg7.local_ip4n) # remove interface address and check NAT address pool self.pg7.unconfig_ip4() - adresses = self.vapi.nat44_address_dump() - self.assertEqual(0, len(adresses)) + addresses = self.vapi.nat44_address_dump() + self.assertEqual(0, len(addresses)) def test_interface_addr_static_mapping(self): """ Static mapping with addresses from interface """ @@ -2697,10 +2701,10 @@ class TestNAT44(MethodHolder): identity_mappings[0].sw_if_index) def test_ipfix_nat44_sess(self): - """ IPFIX logging NAT44 session created/delted """ + """ IPFIX logging NAT44 session created/deleted """ self.ipfix_domain_id = 10 self.ipfix_src_port = 20202 - colector_port = 30303 + collector_port = 30303 bind_layers(UDP, IPFIX, dport=30303) self.nat44_add_address(self.nat_addr) self.vapi.nat44_interface_add_del_feature(self.pg0.sw_if_index) @@ -2710,7 +2714,7 @@ class TestNAT44(MethodHolder): src_address=self.pg3.local_ip4n, path_mtu=512, template_interval=10, - collector_port=colector_port) + collector_port=collector_port) self.vapi.nat_ipfix_enable_disable(domain_id=self.ipfix_domain_id, src_port=self.ipfix_src_port) @@ -2730,7 +2734,7 @@ class TestNAT44(MethodHolder): self.assertEqual(p[IP].src, self.pg3.local_ip4) self.assertEqual(p[IP].dst, self.pg3.remote_ip4) self.assertEqual(p[UDP].sport, self.ipfix_src_port) - self.assertEqual(p[UDP].dport, colector_port) + self.assertEqual(p[UDP].dport, collector_port) self.assertEqual(p[IPFIX].observationDomainID, self.ipfix_domain_id) if p.haslayer(Template): @@ -4157,20 +4161,21 @@ class TestNAT44(MethodHolder): def tearDown(self): super(TestNAT44, self).tearDown() - if not self.vpp_dead: - self.logger.info(self.vapi.cli("show nat44 addresses")) - self.logger.info(self.vapi.cli("show nat44 interfaces")) - self.logger.info(self.vapi.cli("show nat44 static mappings")) - self.logger.info(self.vapi.cli("show nat44 interface address")) - self.logger.info(self.vapi.cli("show nat44 sessions detail")) - self.logger.info(self.vapi.cli("show nat virtual-reassembly")) - self.logger.info(self.vapi.cli("show nat44 hash tables detail")) - self.logger.info(self.vapi.cli("show nat timeouts")) - self.logger.info( - self.vapi.cli("show nat addr-port-assignment-alg")) - self.logger.info(self.vapi.cli("show nat ha")) - self.clear_nat44() - self.vapi.cli("clear logging") + self.clear_nat44() + self.vapi.cli("clear logging") + + def show_commands_at_teardown(self): + self.logger.info(self.vapi.cli("show nat44 addresses")) + self.logger.info(self.vapi.cli("show nat44 interfaces")) + self.logger.info(self.vapi.cli("show nat44 static mappings")) + self.logger.info(self.vapi.cli("show nat44 interface address")) + self.logger.info(self.vapi.cli("show nat44 sessions detail")) + self.logger.info(self.vapi.cli("show nat virtual-reassembly")) + self.logger.info(self.vapi.cli("show nat44 hash tables detail")) + self.logger.info(self.vapi.cli("show nat timeouts")) + self.logger.info( + self.vapi.cli("show nat addr-port-assignment-alg")) + self.logger.info(self.vapi.cli("show nat ha")) class TestNAT44EndpointDependent(MethodHolder): @@ -4236,9 +4241,9 @@ class TestNAT44EndpointDependent(MethodHolder): cls.pg5.admin_up() cls.vapi.ip_add_del_route(dst_address=cls.pg5.remote_ip4n, dst_address_length=32, - table_id=1, + next_hop_address=zero_ip4n, next_hop_sw_if_index=cls.pg5.sw_if_index, - next_hop_address=zero_ip4n) + table_id=1) cls.pg6._local_ip4 = "10.1.2.1" cls.pg6._local_ip4n = socket.inet_pton(socket.AF_INET, @@ -4251,25 +4256,23 @@ class TestNAT44EndpointDependent(MethodHolder): cls.pg6.admin_up() cls.vapi.ip_add_del_route(dst_address=cls.pg6.remote_ip4n, dst_address_length=32, - table_id=1, + next_hop_address=zero_ip4n, next_hop_sw_if_index=cls.pg6.sw_if_index, - next_hop_address=zero_ip4n) + table_id=1) cls.vapi.ip_add_del_route(dst_address=cls.pg6.remote_ip4n, dst_address_length=16, - next_hop_address=zero_ip4n, - table_id=0, + next_hop_address=zero_ip4n, table_id=0, next_hop_table_id=1) cls.vapi.ip_add_del_route(dst_address=zero_ip4n, dst_address_length=0, - next_hop_address=zero_ip4n, - table_id=1, + next_hop_address=zero_ip4n, table_id=1, next_hop_table_id=0) cls.vapi.ip_add_del_route(dst_address=zero_ip4n, dst_address_length=0, - table_id=0, + next_hop_address=cls.pg1.local_ip4n, next_hop_sw_if_index=cls.pg1.sw_if_index, - next_hop_address=cls.pg1.local_ip4n) + table_id=0) cls.pg5.resolve_arp() cls.pg6.resolve_arp() @@ -4278,6 +4281,10 @@ class TestNAT44EndpointDependent(MethodHolder): super(TestNAT44EndpointDependent, cls).tearDownClass() raise + @classmethod + def tearDownClass(cls): + super(TestNAT44EndpointDependent, cls).tearDownClass() + def test_frag_in_order(self): """ NAT44 translate fragments arriving in order """ self.nat44_add_address(self.nat_addr) @@ -5129,7 +5136,7 @@ class TestNAT44EndpointDependent(MethodHolder): self.vapi.nat44_interface_add_del_output_feature(self.pg1.sw_if_index, is_inside=0) - # session initiaded from service host - translate + # session initiated from service host - translate pkts = self.create_stream_in(self.pg0, self.pg1) self.pg0.add_stream(pkts) self.pg_enable_capture(self.pg_interfaces) @@ -5144,7 +5151,7 @@ class TestNAT44EndpointDependent(MethodHolder): capture = self.pg0.get_capture(len(pkts)) self.verify_capture_in(capture, self.pg0) - # session initiaded from remote host - do not translate + # session initiated from remote host - do not translate self.tcp_port_in = 60303 self.udp_port_in = 60304 self.icmp_id_in = 60305 @@ -6413,16 +6420,18 @@ class TestNAT44EndpointDependent(MethodHolder): def tearDown(self): super(TestNAT44EndpointDependent, self).tearDown() if not self.vpp_dead: - self.logger.info(self.vapi.cli("show nat44 addresses")) - self.logger.info(self.vapi.cli("show nat44 interfaces")) - self.logger.info(self.vapi.cli("show nat44 static mappings")) - self.logger.info(self.vapi.cli("show nat44 interface address")) - self.logger.info(self.vapi.cli("show nat44 sessions detail")) - self.logger.info(self.vapi.cli("show nat44 hash tables detail")) - self.logger.info(self.vapi.cli("show nat timeouts")) self.clear_nat44() self.vapi.cli("clear logging") + def show_commands_at_teardown(self): + self.logger.info(self.vapi.cli("show nat44 addresses")) + self.logger.info(self.vapi.cli("show nat44 interfaces")) + self.logger.info(self.vapi.cli("show nat44 static mappings")) + self.logger.info(self.vapi.cli("show nat44 interface address")) + self.logger.info(self.vapi.cli("show nat44 sessions detail")) + self.logger.info(self.vapi.cli("show nat44 hash tables detail")) + self.logger.info(self.vapi.cli("show nat timeouts")) + class TestNAT44Out2InDPO(MethodHolder): """ NAT44 Test Cases using out2in DPO """ @@ -6458,15 +6467,20 @@ class TestNAT44Out2InDPO(MethodHolder): cls.pg1.config_ip6() cls.pg1.resolve_ndp() - cls.vapi.ip_add_del_route(is_ipv6=True, dst_address=b'\x00' * 16, + cls.vapi.ip_add_del_route(dst_address=b'\x00' * 16, dst_address_length=0, next_hop_address=cls.pg1.remote_ip6n, - next_hop_sw_if_index=cls.pg1.sw_if_index) + next_hop_sw_if_index=cls.pg1.sw_if_index, + is_ipv6=True) except Exception: super(TestNAT44Out2InDPO, cls).tearDownClass() raise + @classmethod + def tearDownClass(cls): + super(TestNAT44Out2InDPO, cls).tearDownClass() + def configure_xlat(self): self.dst_ip6_pfx = '1:2:3::' self.dst_ip6_pfx_n = socket.inet_pton(socket.AF_INET6, @@ -6582,6 +6596,10 @@ class TestDeterministicNAT(MethodHolder): super(TestDeterministicNAT, cls).tearDownClass() raise + @classmethod + def tearDownClass(cls): + super(TestDeterministicNAT, cls).tearDownClass() + def create_stream_in(self, in_if, out_if, ttl=64): """ Create packet stream for inside network @@ -6648,7 +6666,7 @@ class TestDeterministicNAT(MethodHolder): :param capture: Captured packets :param nat_ip: Translated IP address (Default use global NAT address) - :param same_port: Sorce port number is not translated (Default False) + :param same_port: Source port number is not translated (Default False) """ if nat_ip is None: nat_ip = self.nat_addr @@ -7127,14 +7145,16 @@ class TestDeterministicNAT(MethodHolder): def tearDown(self): super(TestDeterministicNAT, self).tearDown() if not self.vpp_dead: - self.logger.info(self.vapi.cli("show nat44 interfaces")) - self.logger.info(self.vapi.cli("show nat timeouts")) - self.logger.info( - self.vapi.cli("show nat44 deterministic mappings")) - self.logger.info( - self.vapi.cli("show nat44 deterministic sessions")) self.clear_nat_det() + def show_commands_at_teardown(self): + self.logger.info(self.vapi.cli("show nat44 interfaces")) + self.logger.info(self.vapi.cli("show nat timeouts")) + self.logger.info( + self.vapi.cli("show nat44 deterministic mappings")) + self.logger.info( + self.vapi.cli("show nat44 deterministic sessions")) + class TestNAT64(MethodHolder): """ NAT64 Test Cases """ @@ -7201,6 +7221,10 @@ class TestNAT64(MethodHolder): super(TestNAT64, cls).tearDownClass() raise + @classmethod + def tearDownClass(cls): + super(TestNAT64, cls).tearDownClass() + def test_nat64_inside_interface_handles_neighbor_advertisement(self): """ NAT64 inside interface handles Neighbor Advertisement """ @@ -8169,8 +8193,8 @@ class TestNAT64(MethodHolder): self.vapi.nat64_add_del_interface_addr(self.pg4.sw_if_index) # no address in NAT64 pool - adresses = self.vapi.nat44_address_dump() - self.assertEqual(0, len(adresses)) + addresses = self.vapi.nat44_address_dump() + self.assertEqual(0, len(addresses)) # configure interface address and check NAT64 address pool self.pg4.config_ip4() @@ -8181,7 +8205,7 @@ class TestNAT64(MethodHolder): # remove interface address and check NAT64 address pool self.pg4.unconfig_ip4() addresses = self.vapi.nat64_pool_addr_dump() - self.assertEqual(0, len(adresses)) + self.assertEqual(0, len(addresses)) @unittest.skipUnless(running_extended_tests, "part of extended tests") def test_ipfix_max_bibs_sessions(self): @@ -8498,14 +8522,16 @@ class TestNAT64(MethodHolder): def tearDown(self): super(TestNAT64, self).tearDown() if not self.vpp_dead: - self.logger.info(self.vapi.cli("show nat64 pool")) - self.logger.info(self.vapi.cli("show nat64 interfaces")) - self.logger.info(self.vapi.cli("show nat64 prefix")) - self.logger.info(self.vapi.cli("show nat64 bib all")) - self.logger.info(self.vapi.cli("show nat64 session table all")) - self.logger.info(self.vapi.cli("show nat virtual-reassembly")) self.clear_nat64() + def show_commands_at_teardown(self): + self.logger.info(self.vapi.cli("show nat64 pool")) + self.logger.info(self.vapi.cli("show nat64 interfaces")) + self.logger.info(self.vapi.cli("show nat64 prefix")) + self.logger.info(self.vapi.cli("show nat64 bib all")) + self.logger.info(self.vapi.cli("show nat64 session table all")) + self.logger.info(self.vapi.cli("show nat virtual-reassembly")) + class TestDSlite(MethodHolder): """ DS-Lite Test Cases """ @@ -8534,6 +8560,10 @@ class TestDSlite(MethodHolder): super(TestDSlite, cls).tearDownClass() raise + @classmethod + def tearDownClass(cls): + super(TestDSlite, cls).tearDownClass() + def verify_syslog_apmadd(self, data, isaddr, isport, xsaddr, xsport, sv6enc, proto): message = data.decode('utf-8') @@ -8695,11 +8725,12 @@ class TestDSlite(MethodHolder): def tearDown(self): super(TestDSlite, self).tearDown() - if not self.vpp_dead: - self.logger.info(self.vapi.cli("show dslite pool")) - self.logger.info( - self.vapi.cli("show dslite aftr-tunnel-endpoint-address")) - self.logger.info(self.vapi.cli("show dslite sessions")) + + def show_commands_at_teardown(self): + self.logger.info(self.vapi.cli("show dslite pool")) + self.logger.info( + self.vapi.cli("show dslite aftr-tunnel-endpoint-address")) + self.logger.info(self.vapi.cli("show dslite sessions")) class TestDSliteCE(MethodHolder): @@ -8728,6 +8759,10 @@ class TestDSliteCE(MethodHolder): super(TestDSliteCE, cls).tearDownClass() raise + @classmethod + def tearDownClass(cls): + super(TestDSliteCE, cls).tearDownClass() + def test_dslite_ce(self): """ Test DS-Lite CE """ @@ -8801,11 +8836,12 @@ class TestDSliteCE(MethodHolder): def tearDown(self): super(TestDSliteCE, self).tearDown() - if not self.vpp_dead: - self.logger.info( - self.vapi.cli("show dslite aftr-tunnel-endpoint-address")) - self.logger.info( - self.vapi.cli("show dslite b4-tunnel-endpoint-address")) + + def show_commands_at_teardown(self): + self.logger.info( + self.vapi.cli("show dslite aftr-tunnel-endpoint-address")) + self.logger.info( + self.vapi.cli("show dslite b4-tunnel-endpoint-address")) class TestNAT66(MethodHolder): @@ -8831,6 +8867,10 @@ class TestNAT66(MethodHolder): super(TestNAT66, cls).tearDownClass() raise + @classmethod + def tearDownClass(cls): + super(TestNAT66, cls).tearDownClass() + def test_static(self): """ 1:1 NAT66 test """ self.vapi.nat66_add_del_interface(self.pg0.sw_if_index) @@ -8946,11 +8986,11 @@ class TestNAT66(MethodHolder): def tearDown(self): super(TestNAT66, self).tearDown() - if not self.vpp_dead: - self.logger.info(self.vapi.cli("show nat66 interfaces")) - self.logger.info(self.vapi.cli("show nat66 static mappings")) - self.clear_nat66() + self.clear_nat66() + def show_commands_at_teardown(self): + self.logger.info(self.vapi.cli("show nat66 interfaces")) + self.logger.info(self.vapi.cli("show nat66 static mappings")) if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)