public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Lucas Meneghel Rodrigues <lmr@redhat.com>
To: Michael Goldish <mgoldish@redhat.com>
Cc: Avi Kivity <avi@redhat.com>,
	kvm@vger.kernel.org, David Huff <dhuff@redhat.com>
Subject: Re: [PATCH][KVM_AUTOTEST] Added functionality to the preprocessor to run scripts
Date: Wed, 03 Jun 2009 20:31:47 -0300	[thread overview]
Message-ID: <1244071907.2901.14.camel@localhost.localdomain> (raw)
In-Reply-To: <511807252.1061881244009668219.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com>

On Wed, 2009-06-03 at 02:14 -0400, Michael Goldish wrote:
> ----- "Avi Kivity" <avi@redhat.com> wrote:
> 
> > David Huff wrote:
> > > This patch will run pre and post scripts
> > > defined in config file with the parameter pre_command
> > > and post_command post_command.
> > >
> > > Also exports all the prameters in preprocess for passing
> > > arguments to the script.
> > >  
> > > +   #execute any pre_commands
> > > +    pre_command = params.get("pre_command")
> > > +    if pre_command:
> > > +        # export environment vars
> > > +        for k in params.keys():
> > > +            kvm_log.info("Adding KVM_TEST_%s to Environment" %
> > (k))
> > > +            os.putenv("KVM_TEST_%s" % (k), str(params[k]))
> > > +        # execute command
> > > +        kvm_log.info("Executing command '%s'..." % pre_command)
> > > +        timeout = int(params.get("pre_commmand_timeout", "600"))
> > > +        (status, pid, output) = kvm_utils.run_bg("cd %s; %s" %
> > (test.bindir, pre_command),
> > > +                                                 None,
> > kvm_log.debug, "(pre_command) ", timeout=timeout)
> > > +        if status != 0:
> > > +            kvm_utils.safe_kill(pid, signal.SIGTERM)
> > > +            raise error.TestError, "Custom processing pre_command
> > failed"
> > >   
> > 
> > kvm_utils.run_bg should throw an exception instead of returning
> > status.

utils.system or utils.run will throw a error.CmdError exception on exit
code !=0. The representation and the printed format of CmdErrors contain
the exit code, the full string of the command and stuff like that.

And yes, I agree in general that we should throw exceptions when command
fails. If the failure is not bad enough to stop the whole test, we can
catch the exception and increment failure counters or something to keep
record of the failures. 

> - What if we're interested in the status for some reason? Its value
> may indicate what went wrong with the child process.
> - If we throw an exception we should add a parameter that controls
> whether an exception should be thrown (something like "ignore_status")
> because in some cases we don't want to throw an exception.
> - A run_bg call has 3 possible outcomes: success (status == 0), failure
> (status != 0) and timeout (process still running). If we throw an exception
> upon failure, what do we do upon timeout? Sometimes it's good (qemu should
> keep running unless something went wrong) and sometimes bad (pre_command
> should probably not time out). So we end up needing an ignore_timeout
> parameter as well.
> - What if we want the test to fail with an informative test-specific
> exception such as "something failed after migration"?
> 
> > But if status != 0, will there actually be a pid to kill?
> 
> If the timeout expires and the process is still running, status is None.
> 
> > -- 
> > error compiling committee.c: too many arguments to function
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe kvm" in
> > the body of a message to majordomo@vger.kernel.org
> > 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@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
-- 
Lucas Meneghel Rodrigues
Software Engineer (QE)
Red Hat - Emerging Technologies


  parent reply	other threads:[~2009-06-03 23:31 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <91999434.1061671244009504146.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com>
2009-06-03  6:14 ` [PATCH][KVM_AUTOTEST] Added functionality to the preprocessor to run scripts Michael Goldish
2009-06-03  6:45   ` Avi Kivity
2009-06-03 23:31   ` Lucas Meneghel Rodrigues [this message]
     [not found] <837206814.1138871244056506696.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com>
2009-06-03 19:15 ` Michael Goldish
     [not found] <1680667705.1130361244052268822.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com>
2009-06-03 18:05 ` Michael Goldish
2009-06-03 18:17   ` Avi Kivity
     [not found] <1788153169.1063471244013561944.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com>
2009-06-03  7:21 ` Michael Goldish
2009-06-03  8:13   ` Avi Kivity
     [not found] <1222268607.226581242993156722.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com>
2009-05-22 11:58 ` [PATCH] [KVM_Autotest] " Michael Goldish
2009-05-26 16:07   ` David Huff
2009-05-26 21:08     ` [PATCH][KVM_AUTOTEST] " David Huff
2009-05-31 11:23       ` Avi Kivity
2009-05-27 17:13     ` [PATCH] [KVM_Autotest] " sudhir kumar
2009-05-21 20:22 David Huff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1244071907.2901.14.camel@localhost.localdomain \
    --to=lmr@redhat.com \
    --cc=avi@redhat.com \
    --cc=dhuff@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mgoldish@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox