Re: [PATCH v2 10/10] KVM test: Add a helper to search the panic in the log
On Mon, 2010-05-17 at 15:28 +0800, Jason Wang wrote: > Michael Goldish wrote: > > 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 > >> --- > >> 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 000..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. ^ Typo here, search. > >> +""" > >> +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? > > > > > Just follow the style of other pre_command, maybe Lucas like it. When I made the first pre command script, I opted to use a class to represent the unattended install setup, and other pre commands followed this style. Since the code is small, I see no problem in putting it under __main__ altogether. So Jason, you can remove the code from the class and put it under __main__, please. > >> 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 ^ typo, should be search_pattern > >> +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. > > > > > Would change it, and do you have any other comments about this patchset? Other than the issues pointed out, looks good. -- 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
Re: [PATCH v2 10/10] KVM test: Add a helper to search the panic in the log
Michael Goldish wrote: 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 --- 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 000..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? Just follow the style of other pre_command, maybe Lucas like it. 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. Would change it, and do you have any other comments about this patchset? 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 majord...@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 majord...@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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 10/10] KVM test: Add a helper to search the panic in the log
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 > --- > 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 000..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 majord...@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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v2 10/10] KVM test: Add a helper to search the panic in the log
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 --- 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 000..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" \ + % 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" \ + " check the log") + + +if __name__ == "__main__": +checker = SerialChecker() +checker.check() 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" 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html