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 <mgoldish@xxxxxxxxxx> > Signed-off-by: Eduardo Habkost <ehabkost@xxxxxxxxxx> > --- > 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html