Table of Contents

Daniel Verkamp: Automated regression testing

Project Plan

Summary

There is currently no automated way to test gPXE's features. This project would involve implementing an automated regression testing framework to test gPXE's features, both in virtual machines and on real hardware. This would allow gPXE developers to ensure their modifications do not break existing functionality, and it would allow third-party vendors to verify that their particular hardware works with gPXE.

Outline

The automated testing framework should allow automatic, unattended execution both in virtual machines (qemu, VMware, etc.) and on real hardware.

For tests that require external infrastructure (i.e. servers) to be set up, some kind of automated setup scripts will be provided.

Tests that run in VMs could be parallelizable (for example with make -j) to improve testing speed on more powerful hosts.

Some of the areas that can be tested include:

  1. protocol tests
    1. download images (of various sizes) from each protocol source and verify their contents (md5sum)
    2. possibly time the tests to measure download speed
  1. serial console
    1. test in qemu with -serial (file)
    2. test on real hardware with null modem cable
  1. booting
    1. linux kernel - supply script that boots some basic kernel with initrd and checks to see if it gets to the login prompt
    2. pxe - some basic pxe payload to test (pxelinux?)
    3. comboot
    4. Windows RIS
  1. APIs
    1. pxe
    2. comboot
    3. gdb stub
    4. gPXE scripting language
  1. driver tests
    1. test each virtual device in QEMU, bochs, virtualbox, etc.
  1. various memory sizes/layouts (using a VM/emulator)

Milestones and Timeline

Week 3

  1. Write 4 detailed test cases and run them manually, documenting the procedure and taking a screenshot of the success condition
    1. Linux mkbootfs
    2. Windows iSCSI
    3. WinPE
    4. one other Linux-based test

Week 4

  1. Finish writing Linux test cases from week 3
  2. Write more detailed tests and run them manually, documenting the procedure and success condition
    1. Windows RIS (version to be determined)
    2. Windows 7 install on iSCSI
    3. Possibly more; to be determined