session: API cleanup
[vpp.git] / test / test_ip_ecmp.py
index 17b0a6c..1d3e872 100644 (file)
@@ -1,11 +1,10 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import unittest
 import random
 import socket
 from ipaddress import IPv4Address, IPv6Address, AddressValueError
 
-
 from framework import VppTestCase, VppTestRunner
 from util import ppp
 
@@ -13,6 +12,7 @@ from scapy.packet import Raw
 from scapy.layers.l2 import Ether
 from scapy.layers.inet import IP, UDP
 from scapy.layers.inet6 import IPv6
+from vpp_ip_route import VppIpRoute, VppRoutePath
 
 try:
     text_type = unicode
@@ -73,9 +73,10 @@ class TestECMP(VppTestCase):
         Show various debug prints after each test.
         """
         super(TestECMP, self).tearDown()
-        if not self.vpp_dead:
-            self.logger.info(self.vapi.ppcli("show ip arp"))
-            self.logger.info(self.vapi.ppcli("show ip6 neighbors"))
+
+    def show_commands_at_teardown(self):
+        self.logger.info(self.vapi.ppcli("show ip4 neighbors"))
+        self.logger.info(self.vapi.ppcli("show ip6 neighbors"))
 
     def get_ip_address(self, ip_addr_start, ip_prefix_len):
         """
@@ -138,7 +139,7 @@ class TestECMP(VppTestCase):
         for packet in capture:
             try:
                 ip_received = packet[ip_l]
-                payload_info = self.payload_to_info(str(packet[Raw]))
+                payload_info = self.payload_to_info(packet[Raw])
                 packet_index = payload_info.index
                 ip_sent = self._packet_infos[packet_index].data[ip_l]
                 self.logger.debug("Got packet on port %s: src=%u (id=%u)" %
@@ -178,20 +179,18 @@ class TestECMP(VppTestCase):
         :param int dst_prefix_len: IP address prefix length.
         :param int is_ipv6: 0 if an ip4 route, else ip6
         """
-        af = socket.AF_INET if is_ipv6 == 0 else socket.AF_INET6
-        dst_ip = socket.inet_pton(af, dst_ip_net)
 
+        paths = []
         for pg_if in self.pg_interfaces[1:]:
             for nh_host in pg_if.remote_hosts:
                 nh_host_ip = nh_host.ip4 if is_ipv6 == 0 else nh_host.ip6
-                next_hop_address = socket.inet_pton(af, nh_host_ip)
-                next_hop_sw_if_index = pg_if.sw_if_index
-                self.vapi.ip_add_del_route(
-                    dst_ip, dst_prefix_len, next_hop_address,
-                    next_hop_sw_if_index=next_hop_sw_if_index,
-                    is_ipv6=is_ipv6, is_multipath=1)
-                self.logger.info("Route via %s on %s created" %
-                                 (nh_host_ip, pg_if.name))
+                paths.append(VppRoutePath(nh_host_ip,
+                                          pg_if.sw_if_index))
+
+        rip = VppIpRoute(self, dst_ip_net, dst_prefix_len, paths)
+        rip.add_vpp_config()
+        self.logger.info("Route via %s on %s created" %
+                         (nh_host_ip, pg_if.name))
 
         self.logger.debug(self.vapi.ppcli("show ip fib"))
         self.logger.debug(self.vapi.ppcli("show ip6 fib"))