Re: [PATCH] KVM test: Ensure multiple pre/post commands can run

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



----- "Lucas Meneghel Rodrigues" <lmr@xxxxxxxxxx> wrote:

> The way tests are currently defined, running unattended
> install + hugepages will allways skip unattended install
> setup step (coincidentally the tests on our test farm
> were working because previous executions of the unattended
> install script ran, leaving the environment prepared for
> unattended install).
> 
> So, make sure pre_commands on default tests.cfg file are
> additive, and the preprocessor splits the pre_command
> string, and executes pre/post commands in sequence.
> 
> Signed-off-by: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx>

Why not just append ';' to each command?

For example:

pre_command = "scripts/unattended.py;"
...
pre_command += " scripts/hugepage.py;"

(the quotes can be omitted)

IMO this is simpler.

Also, by using "".split() you're not allowing commands that
contain spaces.

> ---
>  client/tests/kvm/kvm_preprocessing.py  |   29
> ++++++++++++++++-------------
>  client/tests/kvm/tests_base.cfg.sample |    4 ++--
>  2 files changed, 18 insertions(+), 15 deletions(-)
> 
> diff --git a/client/tests/kvm/kvm_preprocessing.py
> b/client/tests/kvm/kvm_preprocessing.py
> index 8a0c151..2e35d9f 100644
> --- a/client/tests/kvm/kvm_preprocessing.py
> +++ b/client/tests/kvm/kvm_preprocessing.py
> @@ -126,7 +126,7 @@ def postprocess_vm(test, params, env, name):
>          vm.destroy(gracefully = params.get("kill_vm_gracefully") ==
> "yes")
>  
>  
> -def process_command(test, params, env, command, command_timeout,
> +def process_command(test, params, env, commands, command_timeout,
>                      command_noncritical):
>      """
>      Pre- or post- custom commands to be executed before/after a test
> is run
> @@ -134,22 +134,23 @@ def process_command(test, params, env, command,
> command_timeout,
>      @param test: An Autotest test object.
>      @param params: A dict containing all VM and image parameters.
>      @param env: The environment (a dict-like object).
> -    @param command: Command to be run.
> +    @param commands: List of commands to be run.
>      @param command_timeout: Timeout for command execution.
>      @param command_noncritical: If True test will not fail if command
> fails.
>      """
>      # Export environment vars
>      for k in params.keys():
>          os.putenv("KVM_TEST_%s" % k, str(params[k]))
> -    # Execute command
> -    try:
> -        utils.system("cd %s; %s" % (test.bindir, command))
> -    except error.CmdError, e:
> -        logging.warn("Custom processing command '%s' failed, output
> is: %s",
> -                     command, str(e))
> -        if not command_noncritical:
> -            raise error.TestError("Custom processing command failed:
> %s" %
> -                                  str(e))
> +    # Execute commands
> +    for command in commands:
> +        try:
> +            utils.system("cd %s; %s" % (test.bindir, command))
> +        except error.CmdError, e:
> +            logging.warn("Custom processing command '%s' failed,
> output is: %s",
> +                         command, str(e))
> +            if not command_noncritical:
> +                raise error.TestError("Custom processing command
> failed: %s" %
> +                                      str(e))
>  
>  
>  def process(test, params, env, image_func, vm_func):
> @@ -220,7 +221,8 @@ def preprocess(test, params, env):
>  
>      # Execute any pre_commands
>      if params.get("pre_command"):
> -        process_command(test, params, env,
> params.get("pre_command"),
> +        pre_commands = params.get("pre_command").spit()
> +        process_command(test, params, env, pre_commands,
>                          int(params.get("pre_command_timeout",
> "600")),
>                          params.get("pre_command_noncritical") ==
> "yes")
>  
> @@ -296,7 +298,8 @@ def postprocess(test, params, env):
>  
>      # Execute any post_commands
>      if params.get("post_command"):
> -        process_command(test, params, env,
> params.get("post_command"),
> +        post_commands = params.get("post_command").split()
> +        process_command(test, params, env, post_commands,
>                          int(params.get("post_command_timeout",
> "600")),
>                          params.get("post_command_noncritical") ==
> "yes")
>  
> diff --git a/client/tests/kvm/tests_base.cfg.sample
> b/client/tests/kvm/tests_base.cfg.sample
> index 91daf48..8f88f3b 100644
> --- a/client/tests/kvm/tests_base.cfg.sample
> +++ b/client/tests/kvm/tests_base.cfg.sample
> @@ -66,7 +66,7 @@ variants:
>          kill_vm_gracefully = yes
>          kill_vm_on_error = yes
>          force_create_image = yes
> -        pre_command = scripts/unattended.py
> +        pre_command += " scripts/unattended.py"
>          floppy = "images/floppy.img"
>          extra_params += " -boot d"
>          nic_mode = user
> @@ -953,7 +953,7 @@ variants:
>  variants:
>      - @smallpages:
>      - hugepages:
> -        pre_command = "/usr/bin/python scripts/hugepage.py
> /mnt/kvm_hugepage"
> +        pre_command += " scripts/hugepage.py"
>          extra_params += " -mem-path /mnt/kvm_hugepage"
>  
>  
> -- 
> 1.6.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux