Re: [Qemu-devel] [RFC PATCH 10/14] KVM-test: Add a subtest of pxe

Amos Kong
2010-08-10T06:11:47Z

On Wed, Jul 28, 2010 at 07:07:34PM -0300, Lucas Meneghel Rodrigues wrote:
> On Tue, 2010-07-20 at 09:36 +0800, Amos Kong wrote:
> > This case just snoop tftp packet through tcpdump, it depends on public dhcp
> > server, better to test it through dnsmasq.
>
> It would be a good idea to have an alternate implementation using
> dnsmasq, but not urgent.

I changed unattended_install to use dnsmasq, but it was blocked by a pxe bug.
Also need completed test, we can add this later.

> > Signed-off-by: Jason Wang <jasowang@redhat.com>
> > Signed-off-by: Amos Kong <akong@redhat.com>
> > ---
> > 0 files changed, 0 insertions(+), 0 deletions(-)
> >
> > diff --git a/client/tests/kvm/tests/pxe.py b/client/tests/kvm/tests/pxe.py
> > new file mode 100644
> > index 0000000..8859aaa
> > --- /dev/null
> > +++ b/client/tests/kvm/tests/pxe.py
> > @@ -0,0 +1,30 @@
> > +import logging
> > +from autotest_lib.client.common_lib import error
> > +import kvm_subprocess, kvm_test_utils, kvm_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 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) ",
> > + timeout)
>
> ^ The only complaint I could make here is that since this command
> doesn't need to live throughout tests, utils.run would do just fine.
> Other than that, looks fine to me.

utils.run() desen't support timeout, tcpdump would not stop by itself.
also could not add output prefix "(pxe) " ?

> > + logging.info("Analysing the tcpdump result...")
>
> ^ typo, analyzing
>
> > + if not "tftp" in output:
> > + raise error.TestFail("Couldn't find tftp packet in %s seconds" % timeout)
> > + logging.info("Found tftp packet")
> > diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample
> > index 9594a38..5515601 100644
> > --- a/client/tests/kvm/tests_base.cfg.sample
> > +++ b/client/tests/kvm/tests_base.cfg.sample
> > @@ -381,6 +381,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}'
> >
> >
>
>