This follows the corresponding change for e1000e. This fixes: tests/avocado/netdev-ethtool.py:NetDevEthtool.test_igb Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
		
			
				
	
	
		
			102 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# ethtool tests for emulated network devices
 | 
						|
#
 | 
						|
# This test leverages ethtool's --test sequence to validate network
 | 
						|
# device behaviour.
 | 
						|
#
 | 
						|
# SPDX-License-Identifier: GPL-2.0-or-late
 | 
						|
 | 
						|
from avocado import skip
 | 
						|
from avocado_qemu import QemuSystemTest
 | 
						|
from avocado_qemu import wait_for_console_pattern
 | 
						|
 | 
						|
class NetDevEthtool(QemuSystemTest):
 | 
						|
    """
 | 
						|
    :avocado: tags=arch:x86_64
 | 
						|
    :avocado: tags=machine:q35
 | 
						|
    """
 | 
						|
 | 
						|
    # Runs in about 17s under KVM, 19s under TCG, 25s under GCOV
 | 
						|
    timeout = 45
 | 
						|
 | 
						|
    # Fetch assets from the netdev-ethtool subdir of my shared test
 | 
						|
    # images directory on fileserver.linaro.org.
 | 
						|
    def get_asset(self, name, sha1):
 | 
						|
        base_url = ('https://fileserver.linaro.org/s/'
 | 
						|
                    'kE4nCFLdQcoBF9t/download?'
 | 
						|
                    'path=%2Fnetdev-ethtool&files=' )
 | 
						|
        url = base_url + name
 | 
						|
        # use explicit name rather than failing to neatly parse the
 | 
						|
        # URL into a unique one
 | 
						|
        return self.fetch_asset(name=name, locations=(url), asset_hash=sha1)
 | 
						|
 | 
						|
    def common_test_code(self, netdev, extra_args=None):
 | 
						|
 | 
						|
        # This custom kernel has drivers for all the supported network
 | 
						|
        # devices we can emulate in QEMU
 | 
						|
        kernel = self.get_asset("bzImage",
 | 
						|
                                "33469d7802732d5815226166581442395cb289e2")
 | 
						|
 | 
						|
        rootfs = self.get_asset("rootfs.squashfs",
 | 
						|
                                "9793cea7021414ae844bda51f558bd6565b50cdc")
 | 
						|
 | 
						|
        append = 'printk.time=0 console=ttyS0 '
 | 
						|
        append += 'root=/dev/sr0 rootfstype=squashfs '
 | 
						|
 | 
						|
        # any additional kernel tweaks for the test
 | 
						|
        if extra_args:
 | 
						|
            append += extra_args
 | 
						|
 | 
						|
        # finally invoke ethtool directly
 | 
						|
        append += ' init=/usr/sbin/ethtool -- -t eth1 offline'
 | 
						|
 | 
						|
        # add the rootfs via a readonly cdrom image
 | 
						|
        drive = f"file={rootfs},if=ide,index=0,media=cdrom"
 | 
						|
 | 
						|
        self.vm.add_args('-kernel', kernel,
 | 
						|
                         '-append', append,
 | 
						|
                         '-drive', drive,
 | 
						|
                         '-device', netdev)
 | 
						|
 | 
						|
        self.vm.set_console(console_index=0)
 | 
						|
        self.vm.launch()
 | 
						|
 | 
						|
        wait_for_console_pattern(self,
 | 
						|
                                 "The test result is PASS",
 | 
						|
                                 "The test result is FAIL",
 | 
						|
                                 vm=None)
 | 
						|
        # no need to gracefully shutdown, just finish
 | 
						|
        self.vm.kill()
 | 
						|
 | 
						|
    def test_igb(self):
 | 
						|
        """
 | 
						|
        :avocado: tags=device:igb
 | 
						|
        """
 | 
						|
        self.common_test_code("igb")
 | 
						|
 | 
						|
    def test_igb_nomsi(self):
 | 
						|
        """
 | 
						|
        :avocado: tags=device:igb
 | 
						|
        """
 | 
						|
        self.common_test_code("igb", "pci=nomsi")
 | 
						|
 | 
						|
    # It seems the other popular cards we model in QEMU currently fail
 | 
						|
    # the pattern test with:
 | 
						|
    #
 | 
						|
    #   pattern test failed (reg 0x00178): got 0x00000000 expected 0x00005A5A
 | 
						|
    #
 | 
						|
    # So for now we skip them.
 | 
						|
 | 
						|
    @skip("Incomplete reg 0x00178 support")
 | 
						|
    def test_e1000(self):
 | 
						|
        """
 | 
						|
        :avocado: tags=device:e1000
 | 
						|
        """
 | 
						|
        self.common_test_code("e1000")
 | 
						|
 | 
						|
    @skip("Incomplete reg 0x00178 support")
 | 
						|
    def test_i82550(self):
 | 
						|
        """
 | 
						|
        :avocado: tags=device:i82550
 | 
						|
        """
 | 
						|
        self.common_test_code("i82550")
 |