On Wed, Jan 05, 2011 at 05:45:26PM +0200, Michael Goldish wrote:
> In complex tests (KVM) an exception string is often not informative enough and
> the traceback and source code have to be examined in order to figure out what
> caused the exception.  Context strings are a way for tests to provide
> information about what they're doing, so that when an exception is raised, 
> this
> information will be embedded in the exception string.  The result is a concise
> yet highly informative exception string, which should make it very easy to
> figure out where/when the exception was raised.
> 
> A typical example for a test where this may be useful is KVM's reboot test.
> Some exceptions can be raised either before or after the VM is rebooted (e.g.
> logging into the guest can fail) and whether they are raised before or after
> is critical to the understanding of the failure.  Normally the traceback would
> have to be examined, but the proposed method makes it easy to know where the
> exception is raised without doing so.  To achieve this, the reboot test should
> place calls to error.context() as follows:
> 
> error.context("before reboot")
> <carry out pre-reboot actions>
> error.context("sending reboot command")
> <send the reboot command>
> error.context("after reboot")
> <carry out post-reboot actions>
> 
> If login fails in the pre-reboot section, the resulting exception string can
> can have something like "context: before reboot" embedded in it.  (The actual
> embedding is done in the next patch in the series.)
> 
> Signed-off-by: Michael Goldish <mgold...@redhat.com>
> Signed-off-by: Eduardo Habkost <ehabk...@redhat.com>
> ---
>  client/common_lib/error.py |   97 
> +++++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 95 insertions(+), 2 deletions(-)
> 

Where's the automated test code?  ;)


> +# def a():
> +#     error.context("hello")
> +#     b()
> +#     error.context("world")
> +#     get_context() ----> 'world'
> +#
> +# def b():
> +#     error.context("foo")
> +#     c()
> +#
> +# def c():
> +#     error.context("bar")
> +#     get_context() ----> 'hello --> foo --> bar'

The example above is outdated, isn't? It doesn't have the @context_aware
decorator.

-- 
Eduardo
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to