X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_bond.py;h=5ef865f26d431f2dcb6a7a33acb9f32baf2df745;hb=cbe25aab3be72154f2c706c39eeba6a77f34450f;hp=b54a1f1deb58d3c67a53fc7f9b21f290112753cb;hpb=9cd2d7a5a4fafadb65d772c48109d55d1e19d425;p=vpp.git diff --git a/test/test_bond.py b/test/test_bond.py index b54a1f1deb5..5ef865f26d4 100644 --- a/test/test_bond.py +++ b/test/test_bond.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import socket import unittest @@ -7,8 +7,8 @@ from framework import VppTestCase, VppTestRunner from scapy.packet import Raw from scapy.layers.l2 import Ether from scapy.layers.inet import IP, UDP -from util import mactobinary from vpp_bond_interface import VppBondInterface +from vpp_papi import MACAddress class TestBondInterface(VppTestCase): @@ -31,13 +31,18 @@ class TestBondInterface(VppTestCase): for i in cls.pg_interfaces: i.admin_up() + @classmethod + def tearDownClass(cls): + super(TestBondInterface, cls).tearDownClass() + def setUp(self): super(TestBondInterface, self).setUp() def tearDown(self): super(TestBondInterface, self).tearDown() - if not self.vpp_dead: - self.logger.info(self.vapi.ppcli("show interface")) + + def show_commands_at_teardown(self): + self.logger.info(self.vapi.ppcli("show interface")) def test_bond_traffic(self): """ Bond traffic test """ @@ -56,18 +61,18 @@ class TestBondInterface(VppTestCase): # create interface (BondEthernet0) # self.logger.info("create bond") bond0_mac = "02:fe:38:30:59:3c" - mac = mactobinary(bond0_mac) + mac = MACAddress(bond0_mac).packed bond0 = VppBondInterface(self, mode=3, lb=1, + numa_only=0, use_custom_mac=1, mac_address=mac) bond0.add_vpp_config() bond0.admin_up() - bond0_addr = socket.inet_pton(socket.AF_INET, "10.10.10.1") - self.vapi.sw_interface_add_del_address(bond0.sw_if_index, - bond0_addr, - 24) + self.vapi.sw_interface_add_del_address( + sw_if_index=bond0.sw_if_index, + prefix="10.10.10.1/24") self.pg2.config_ip4() self.pg2.resolve_arp() @@ -76,17 +81,13 @@ class TestBondInterface(VppTestCase): self.logger.info(self.vapi.cli("show interface")) self.logger.info(self.vapi.cli("show interface address")) - self.logger.info(self.vapi.cli("show ip arp")) + self.logger.info(self.vapi.cli("show ip neighbors")) # enslave pg0 and pg1 to BondEthernet0 self.logger.info("bond enslave interface pg0 to BondEthernet0") - bond0.enslave_vpp_bond_interface(sw_if_index=self.pg0.sw_if_index, - is_passive=0, - is_long_timeout=0) + bond0.enslave_vpp_bond_interface(sw_if_index=self.pg0.sw_if_index) self.logger.info("bond enslave interface pg1 to BondEthernet0") - bond0.enslave_vpp_bond_interface(sw_if_index=self.pg1.sw_if_index, - is_passive=0, - is_long_timeout=0) + bond0.enslave_vpp_bond_interface(sw_if_index=self.pg1.sw_if_index) # verify both slaves in BondEthernet0 if_dump = self.vapi.sw_interface_slave_dump(bond0.sw_if_index) @@ -98,7 +99,7 @@ class TestBondInterface(VppTestCase): p2 = (Ether(src=bond0_mac, dst=self.pg2.local_mac) / IP(src=self.pg2.local_ip4, dst="10.10.10.12") / UDP(sport=1235, dport=1235) / - Raw('\xa5' * 100)) + Raw(b'\xa5' * 100)) self.pg2.add_stream(p2) # generate a packet from pg3 -> BondEthernet0 -> pg0 @@ -107,7 +108,7 @@ class TestBondInterface(VppTestCase): p3 = (Ether(src=bond0_mac, dst=self.pg3.local_mac) / IP(src=self.pg3.local_ip4, dst="10.10.10.11") / UDP(sport=1234, dport=1234) / - Raw('\xa5' * 100)) + Raw(b'\xa5' * 100)) self.pg3.add_stream(p3) self.pg_enable_capture(self.pg_interfaces) @@ -115,9 +116,9 @@ class TestBondInterface(VppTestCase): # set up the static arp entries pointing to the BondEthernet0 interface # so that it does not try to resolve the ip address self.logger.info(self.vapi.cli( - "set ip arp static BondEthernet0 10.10.10.12 abcd.abcd.0002")) + "set ip neighbor static BondEthernet0 10.10.10.12 abcd.abcd.0002")) self.logger.info(self.vapi.cli( - "set ip arp static BondEthernet0 10.10.10.11 abcd.abcd.0004")) + "set ip neighbor static BondEthernet0 10.10.10.11 abcd.abcd.0004")) # clear the interface counters self.logger.info(self.vapi.cli("clear interfaces")) @@ -136,19 +137,11 @@ class TestBondInterface(VppTestCase): found = 1 self.assertEqual(found, 1) - # pg0 tx bytes = 142 - intfs = self.vapi.cli("show interface pg0").split("\n") - found = 0 - for intf in intfs: - if "tx bytes" in intf and "142" in intf: - found = 1 - self.assertEqual(found, 1) - - # pg0 tx bytes = 142 - intfs = self.vapi.cli("show interface pg1").split("\n") + # BondEthernet0 tx bytes = 284 + intfs = self.vapi.cli("show interface BondEthernet0").split("\n") found = 0 for intf in intfs: - if "tx bytes" in intf and "142" in intf: + if "tx bytes" in intf and "284" in intf: found = 1 self.assertEqual(found, 1) @@ -236,8 +229,8 @@ class TestBondInterface(VppTestCase): # verify both interfaces in the show ifs = self.vapi.cli("show interface") - self.assertNotEqual(ifs.find('BondEthernet0'), -1) - self.assertNotEqual(ifs.find('BondEthernet1'), -1) + self.assertIn('BondEthernet0', ifs) + self.assertIn('BondEthernet1', ifs) # verify they are in the dump also if_dump = self.vapi.sw_interface_bond_dump() @@ -252,10 +245,10 @@ class TestBondInterface(VppTestCase): ifs = self.vapi.cli("show interface") # verify BondEthernet0 still in the show - self.assertNotEqual(ifs.find('BondEthernet0'), -1) + self.assertIn('BondEthernet0', ifs) # verify BondEthernet1 not in the show - self.assertEqual(ifs.find('BondEthernet1'), -1) + self.assertNotIn('BondEthernet1', ifs) # verify BondEthernet1 is not in the dump if_dump = self.vapi.sw_interface_bond_dump() @@ -272,11 +265,12 @@ class TestBondInterface(VppTestCase): # verify BondEthernet0 not in the show ifs = self.vapi.cli("show interface") - self.assertEqual(ifs.find('BondEthernet0'), -1) + self.assertNotIn('BondEthernet0', ifs) # verify BondEthernet0 is not in the dump if_dump = self.vapi.sw_interface_bond_dump() self.assertFalse(bond0.is_interface_config_in_dump(if_dump)) + if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)