X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_bond.py;h=5df86ae5b0f6a7920c99168fdb48e82d51dfd351;hb=cf1e8c1eeab1dc07d69210f410a086d7ae4eae90;hp=911b1fb4debd99ccfc03eaa147ae626645e3d605;hpb=4c4223edfd46841062340fe449cd97a93dccc498;p=vpp.git diff --git a/test/test_bond.py b/test/test_bond.py index 911b1fb4deb..5df86ae5b0f 100644 --- a/test/test_bond.py +++ b/test/test_bond.py @@ -3,12 +3,13 @@ import socket import unittest -from framework import VppTestCase, VppTestRunner from scapy.packet import Raw from scapy.layers.l2 import Ether from scapy.layers.inet import IP, UDP + +from framework import VppTestCase, VppTestRunner from vpp_bond_interface import VppBondInterface -from vpp_papi import MACAddress +from vpp_papi import MACAddress, VppEnum class TestBondInterface(VppTestCase): @@ -62,12 +63,13 @@ class TestBondInterface(VppTestCase): # self.logger.info("create bond") bond0_mac = "02:fe:38:30:59:3c" mac = MACAddress(bond0_mac).packed - bond0 = VppBondInterface(self, - mode=3, - lb=1, - numa_only=0, - use_custom_mac=1, - mac_address=mac) + bond0 = VppBondInterface( + self, + mode=VppEnum.vl_api_bond_mode_t.BOND_API_MODE_XOR, + lb=VppEnum.vl_api_bond_lb_algo_t.BOND_API_LB_ALGO_L34, + numa_only=0, + use_custom_mac=1, + mac_address=mac) bond0.add_vpp_config() bond0.admin_up() self.vapi.sw_interface_add_del_address( @@ -168,7 +170,10 @@ class TestBondInterface(VppTestCase): # create interface (BondEthernet0) and set bond mode to LACP self.logger.info("create bond") - bond0 = VppBondInterface(self, mode=5) + bond0 = VppBondInterface( + self, + mode=VppEnum.vl_api_bond_mode_t.BOND_API_MODE_LACP, + enable_gso=0) bond0.add_vpp_config() bond0.admin_up() @@ -221,12 +226,14 @@ class TestBondInterface(VppTestCase): self.logger.info("Bond add interfaces") # create interface 1 (BondEthernet0) - bond0 = VppBondInterface(self, mode=5) + bond0 = VppBondInterface( + self, mode=VppEnum.vl_api_bond_mode_t.BOND_API_MODE_LACP) bond0.add_vpp_config() bond0.admin_up() # create interface 2 (BondEthernet1) - bond1 = VppBondInterface(self, mode=3) + bond1 = VppBondInterface( + self, mode=VppEnum.vl_api_bond_mode_t.BOND_API_MODE_XOR) bond1.add_vpp_config() bond1.admin_up() @@ -275,6 +282,40 @@ class TestBondInterface(VppTestCase): sw_if_index=bond0.sw_if_index) self.assertFalse(bond0.is_interface_config_in_dump(if_dump)) + def test_bond_link(self): + """ Bond hw interface link state test """ + + # for convenience + bond_modes = VppEnum.vl_api_bond_mode_t + intf_flags = VppEnum.vl_api_if_status_flags_t + + # create interface 1 (BondEthernet0) + self.logger.info("Create bond interface") + # use round-robin mode to avoid negotiation required by LACP + bond0 = VppBondInterface(self, + mode=bond_modes.BOND_API_MODE_ROUND_ROBIN) + bond0.add_vpp_config() + + # set bond admin up. + self.logger.info("set interface BondEthernet0 admin up") + bond0.admin_up() + # confirm link up + bond0.assert_interface_state(intf_flags.IF_STATUS_API_FLAG_ADMIN_UP, + intf_flags.IF_STATUS_API_FLAG_LINK_UP) + + # toggle bond admin state + self.logger.info("toggle interface BondEthernet0") + bond0.admin_down() + bond0.admin_up() + + # confirm link is still up + bond0.assert_interface_state(intf_flags.IF_STATUS_API_FLAG_ADMIN_UP, + intf_flags.IF_STATUS_API_FLAG_LINK_UP) + + # delete BondEthernet0 + self.logger.info("Deleting BondEthernet0") + bond0.remove_vpp_config() + if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)