From: Lucas Meneghel Rodrigues <lmr@redhat.com>
To: Michael Goldish <mgoldish@redhat.com>
Cc: autotest@test.kernel.org, kvm@vger.kernel.org
Subject: Re: [Autotest] [KVM-AUTOTEST PATCH 3/4] kvm_guest_wizard: allow keeping screendump history for debugging purposes
Date: Thu, 18 Jun 2009 11:30:34 -0300 [thread overview]
Message-ID: <1245335434.16589.8.camel@freedom> (raw)
In-Reply-To: <450b0ac3f003f5e9d56267d3dabee881ee35fe78.1245094830.git.mgoldish@redhat.com>
On Mon, 2009-06-15 at 22:45 +0300, Michael Goldish wrote:
> Add two new step file test parameters:
> - keep_screendump_history: if equals 'yes', screendump history is saved in
> test.debugdir/barrier_history in JPG format. Each screendump taken by the
> test is saved if it differs from the previous screendump. By default, when
> a barrier succeeds all history is removed, so eventually the remaining files
> are only those of the (last) failed barrier, if any.
> - keep_all_history: if equals 'yes', screendump history is not removed upon
> barrier success. The test leaves behind all the collected screendump history.
>
> Signed-off-by: Michael Goldish <mgoldish@redhat.com>
> ---
> client/tests/kvm/kvm_guest_wizard.py | 38 ++++++++++++++++++++++++++++-----
> 1 files changed, 32 insertions(+), 6 deletions(-)
>
> diff --git a/client/tests/kvm/kvm_guest_wizard.py b/client/tests/kvm/kvm_guest_wizard.py
> index eb0e2d5..73b830e 100644
> --- a/client/tests/kvm/kvm_guest_wizard.py
> +++ b/client/tests/kvm/kvm_guest_wizard.py
> @@ -1,6 +1,6 @@
> import os, time, md5, re, shutil, logging
> from autotest_lib.client.common_lib import utils, error
> -import kvm_utils, ppm_utils
> +import kvm_utils, ppm_utils, kvm_subprocess
I see, it depends on kvm subprocess, so I will apply this patch after
the kvm subprocess patch is applied.
> """
> Utilities to perform automatic guest installation using step files.
> @@ -53,6 +53,11 @@ def barrier_2(vm, words, params, debug_dir, data_scrdump_filename,
> else:
> stuck_detection_history = 2
>
> + keep_screendump_history = params.get("keep_screendump_history") == "yes"
> + if keep_screendump_history:
> + keep_all_history = params.get("keep_all_history") == "yes"
> + history_dir = os.path.join(debug_dir, "barrier_history")
> +
Here I also think that we should check for the presence of ImageMagick
to avoid failing the test out of necessity.
> end_time = time.time() + timeout
> end_time_stuck = time.time() + fail_if_stuck_for
> start_time = time.time()
> @@ -91,21 +96,42 @@ def barrier_2(vm, words, params, debug_dir, data_scrdump_filename,
> # Read image file
> (w, h, data) = ppm_utils.image_read_from_ppm_file(scrdump_filename)
>
> + # Compute md5sum of whole image
> + whole_image_md5sum = ppm_utils.image_md5sum(w, h, data)
> +
> + # Write screendump to history_dir (as JPG) if requested
> + # and if the screendump differs from the previous one
> + if (keep_screendump_history and
> + whole_image_md5sum not in prev_whole_image_md5sums[:1]):
> + try:
> + os.makedirs(history_dir)
> + except:
> + pass
> + history_scrdump_filename = os.path.join(history_dir,
> + "scrdump-step_%s-%s.jpg" % (current_step_num,
> + time.strftime("%Y%m%d-%H%M%S")))
> + kvm_subprocess.run_fg("convert -quality 30 %s %s" %
> + (scrdump_filename, history_scrdump_filename),
> + logging.debug, "(convert) ", timeout=30)
> +
> # Compare md5sum of barrier region with the expected md5sum
> calced_md5sum = ppm_utils.get_region_md5sum(w, h, data, x1, y1, dx, dy,
> cropped_scrdump_filename)
> if calced_md5sum == md5sum:
> + # Success -- remove screendump history unless requested not to
> + if keep_screendump_history and not keep_all_history:
> + kvm_subprocess.run_fg("rm -rvf %s" % history_dir,
> + logging.debug, "(rm) ", timeout=30)
> + # Report success
> return True
>
> - # Compute md5sum of whole image in order to compare it with
> - # previous ones
> - whole_image_md5sum = ppm_utils.image_md5sum(w, h, data)
> + # Insert image md5sum into queue of last seen images:
> # If md5sum is already in queue...
> if whole_image_md5sum in prev_whole_image_md5sums:
> # Remove md5sum from queue
> prev_whole_image_md5sums.remove(whole_image_md5sum)
> else:
> - # Extend 'stuck' timeout
> + # Otherwise extend 'stuck' timeout
> end_time_stuck = time.time() + fail_if_stuck_for
> # Insert md5sum at beginning of queue
> prev_whole_image_md5sums.insert(0, whole_image_md5sum)
> @@ -129,7 +155,7 @@ def barrier_2(vm, words, params, debug_dir, data_scrdump_filename,
> if data_scrdump_filename and os.path.exists(data_scrdump_filename):
> # Read expected screendump image
> (ew, eh, edata) = \
> - ppm_utils.image_read_from_ppm_file(data_scrdump_filename)
> + ppm_utils.image_read_from_ppm_file(data_scrdump_filename)
> # Write it in debug_dir
> ppm_utils.image_write_to_ppm_file(expected_scrdump_filename,
> ew, eh, edata)
--
Lucas Meneghel Rodrigues
Software Engineer (QE)
Red Hat - Emerging Technologies
next prev parent reply other threads:[~2009-06-18 14:30 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-15 19:45 [KVM-AUTOTEST PATCH 0/4] Step file tests: introducing a new feature and some small changes Michael Goldish
2009-06-15 19:45 ` [KVM-AUTOTEST PATCH 1/4] kvm_guest_wizard: rename output_dir to debug_dir in barrier_2() Michael Goldish
2009-06-15 19:45 ` [KVM-AUTOTEST PATCH 2/4] kvm_guest_wizard: pass 'params' directly to barrier_2() Michael Goldish
2009-06-16 14:57 ` Uri Lublin
2009-06-15 19:45 ` [KVM-AUTOTEST PATCH 3/4] kvm_guest_wizard: allow keeping screendump history for debugging purposes Michael Goldish
2009-06-18 14:30 ` Lucas Meneghel Rodrigues [this message]
2009-06-18 15:30 ` [Autotest] " Michael Goldish
2009-06-15 19:45 ` [KVM-AUTOTEST PATCH 4/4] kvm_tests.cfg.sample: add 'keep_screendump_history = yes' to step file tests Michael Goldish
2009-06-18 14:31 ` [Autotest] " Lucas Meneghel Rodrigues
2009-06-18 14:40 ` [KVM-AUTOTEST PATCH 0/4] Step file tests: introducing a new feature and some small changes Lucas Meneghel Rodrigues
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=1245335434.16589.8.camel@freedom \
--to=lmr@redhat.com \
--cc=autotest@test.kernel.org \
--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