new file mode 100644
@@ -0,0 +1,31 @@
+import logging
+from autotest_lib.client.common_lib import error
+import kvm_subprocess, kvm_test_utils
+
+
+def run_pxe(test, params, env):
+ """
+ PXE test:
+
+ 1) Snoop the tftp packet in the tap device.
+ 2) Wait for some seconds.
+ 3) Check whether we could capture TFTP packets.
+
+ @param test: KVM test object.
+ @param params: Dictionary with the test parameters.
+ @param env: Dictionary with test environment.
+ """
+ vm = kvm_test_utils.get_living_vm(env, params.get("main_vm"))
+ timeout = int(params.get("pxe_timeout", 60))
+
+ logging.info("Try to boot from PXE")
+ status, output = kvm_subprocess.run_fg("tcpdump -nli %s" % vm.get_ifname(),
+ logging.debug,
+ "(pxe capture) ",
+ timeout)
+
+ logging.info("Analyzing the tcpdump result...")
+ if not "tftp" in output:
+ raise error.TestFail("Couldn't find any TFTP packets after %s seconds" %
+ timeout)
+ logging.info("Found TFTP packet")
@@ -501,6 +501,19 @@ variants:
mgroup_count = 20
flood_minutes = 1
+ - pxe:
+ type = pxe
+ images = pxe
+ image_name_pxe = pxe-test
+ image_size_pxe = 1G
+ force_create_image_pxe = yes
+ remove_image_pxe = yes
+ extra_params += ' -boot n'
+ kill_vm_on_error = yes
+ network = bridge
+ restart_vm = yes
+ pxe_timeout = 60
+
- physical_resources_check: install setup unattended_install.cdrom
type = physical_resources_check
catch_uuid_cmd = dmidecode | awk -F: '/UUID/ {print $2}'