On 05/11/2010 12:04 PM, Jason Wang wrote: > This checker serves as the post_command to find the panic information > in the file which contains the content of guest serial console. > > Signed-off-by: Jason Wang <jasowang@xxxxxxxxxx> > --- > client/tests/kvm/scripts/check_serial.py | 41 ++++++++++++++++++++++++++++++ > client/tests/kvm/tests_base.cfg.sample | 7 ++++- > 2 files changed, 46 insertions(+), 2 deletions(-) > create mode 100644 client/tests/kvm/scripts/check_serial.py > > diff --git a/client/tests/kvm/scripts/check_serial.py b/client/tests/kvm/scripts/check_serial.py > new file mode 100644 > index 0000000..969bbe3 > --- /dev/null > +++ b/client/tests/kvm/scripts/check_serial.py > @@ -0,0 +1,41 @@ > +import os, sys, glob, re > + > + > +class SerialCheckerError(Exception): > + """ > + Simple wrapper for the builtin Exception class. > + """ > + pass > + > + > +class SerialChecker(object): > + """ > + Serach the panic or other keywords in the guest serial. > + """ > + def __init__(self): > + """ > + Gets params from environment variables and sets class attributes. > + """ > + client_dir = os.environ['AUTODIR'] > + self.pattern = os.environ['KVM_TEST_search_pattern'] > + self.shortname = os.environ['KVM_TEST_shortname'] > + self.debugdir = os.path.join(client_dir, "results/default/kvm.%s/debug" \ I think the final backslash is unnecessary. > + % self.shortname) > + self.serial_files = glob.glob(os.path.join(self.debugdir, 'serial*')) > + > + > + def check(self): > + """ > + Check whether the pattern were found in the serial files > + """ > + fail = [ f for f in self.serial_files if > + re.findall(self.pattern, file(f).read(), re.I) ] > + if fail: > + print "%s is found in %s" % (self.pattern, fail) > + raise SerialCheckerError("Error found during the check, Please" \ Same here. > + " check the log") > + > + > +if __name__ == "__main__": > + checker = SerialChecker() > + checker.check() I wonder why we need a class. Why not just put all the code here? > diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample > index 3c0933e..3ac8f0d 100644 > --- a/client/tests/kvm/tests_base.cfg.sample > +++ b/client/tests/kvm/tests_base.cfg.sample > @@ -52,6 +52,10 @@ address_index = 0 > # Misc > profilers = kvm_stat > > +# pattern serach in guest serial console > +serach_pattern = panic > +post_command = "python scripts/check_serial.py" > +post_command_noncritical = no > > # Tests > variants: > @@ -1314,10 +1318,9 @@ virtio|virtio_blk|e1000|balloon_check: > variants: > - @qcow2: > image_format = qcow2 > - post_command = " python scripts/check_image.py;" > + post_command = " python scripts/check_image.py; python scripts/check_serial.py" ^ This should be +=, because post_command may have been previously assigned some value. > remove_image = no > post_command_timeout = 600 > - post_command_noncritical = yes > - vmdk: > only Fedora Ubuntu Windows > only smp2 > > -- > 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