From: John Snow <jsnow@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
qemu-devel@nongnu.org, qemu-block@nongnu.org,
Max Reitz <mreitz@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 2/2] iotests: use python logging for iotests.log()
Date: Mon, 29 Jul 2019 11:43:45 -0400 [thread overview]
Message-ID: <877cc22f-cb47-96cf-2181-c8c08aac4270@redhat.com> (raw)
In-Reply-To: <20190728233648.GA4313@habkost.net>
On 7/28/19 7:36 PM, Eduardo Habkost wrote:
> On Fri, Jul 26, 2019 at 06:52:01PM -0400, John Snow wrote:
>> We can turn logging on/off globally instead of per-function.
>>
>> Remove use_log from run_job, and use python logging to turn on
>> diffable output when we run through a script entry point.
>>
>> (No, I have no idea why output on 245 changed. I really don't.)
>
> I believe this happens because the logging StreamHandler will
> flush the stream at every call.
>
I'm surprised print doesn't flush that often.
> I see the same output reordering on 245 if I add a
> sys.stdout.flush() call to iotests.log(), or if I change
> iotests.main() to use sys.stdout for the unittest runner output.
>
>>
>> Signed-off-by: John Snow <jsnow@redhat.com>
>> ---
>> tests/qemu-iotests/030 | 4 +--
>> tests/qemu-iotests/245 | 1 +
>> tests/qemu-iotests/245.out | 24 +++++++++---------
>> tests/qemu-iotests/iotests.py | 48 ++++++++++++++++++++---------------
>> 4 files changed, 43 insertions(+), 34 deletions(-)
>>
>> diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
>> index 1b69f318c6..a382cb430b 100755
>> --- a/tests/qemu-iotests/030
>> +++ b/tests/qemu-iotests/030
>> @@ -411,8 +411,8 @@ class TestParallelOps(iotests.QMPTestCase):
>> result = self.vm.qmp('block-job-set-speed', device='drive0', speed=0)
>> self.assert_qmp(result, 'return', {})
>>
>> - self.vm.run_job(job='drive0', auto_dismiss=True, use_log=False)
>> - self.vm.run_job(job='node4', auto_dismiss=True, use_log=False)
>> + self.vm.run_job(job='drive0', auto_dismiss=True)
>> + self.vm.run_job(job='node4', auto_dismiss=True)
>
> So, this one is the only run_job() caller specifying
> use_log=False. It doesn't call activate_logging() anywhere, so
> it seems OK.
>
Yah
> However, we need to ensure all the other run_job() callers will
> actually enable logging. The remaining run_job() callers are:
> 206 207 210 211 212 213 237 245 255 256.
>
> These look OK:
> 206:iotests.script_initialize(supported_fmts=['qcow2'])
> 245: iotests.activate_logging()
> 255:iotests.script_initialize(supported_fmts=['qcow2'])
> 256:iotests.script_initialize(supported_fmts=['qcow2'])
> 257: iotests.script_main(main, supported_fmts=['qcow2'])
>
> These don't seem to call activate_logging() anywhere:
> 207 210 211 212 213 237.
>
There's the quick hack -- not verifying all the non-qcow tests as per usual.
All of these are script-style and should call to script_initialize now
instead. Fixed!
> What about other scripts calling log() that aren't calling activate_logging()?
> Let's see:
>
> $ git grep -LE 'script_main|script_initialize|activate_logging' \
> $(grep -lP '(?<!get_)log\(' [0-9]*)
> 207
> 210
> 211
> 212
> 213
> 237
> $
>
>
> I didn't run all of these test cases, but I can see that 210 is
> now failing:
>
> $ ./check -luks 210
> QEMU -- "/home/ehabkost/rh/proj/virt/qemu/tests/qemu-iotests/../../x86_64-softmmu/qemu-system-x86_64" -nodefaults -machine accel=qtest
> QEMU_IMG -- "/home/ehabkost/rh/proj/virt/qemu/tests/qemu-iotests/../../qemu-img"
> QEMU_IO -- "/home/ehabkost/rh/proj/virt/qemu/tests/qemu-iotests/../../qemu-io" --cache writeback
> QEMU_NBD -- "/home/ehabkost/rh/proj/virt/qemu/tests/qemu-iotests/../../qemu-nbd"
> IMGFMT -- luks (iter-time=10)
> IMGPROTO -- file
>
> TEST_DIR -- /home/ehabkost/rh/proj/virt/qemu/tests/qemu-iotests/scratch
> SOCKET_SCM_HELPER -- /home/ehabkost/rh/proj/virt/qemu/tests/qemu-iotests/socket_scm_helper
>
> 210 fail [20:20:37] [20:21:00] (last: 22s) output mismatch (see 210.out.bad)
> --- /home/ehabkost/rh/proj/virt/qemu/tests/qemu-iotests/210.out 2019-07-28 18:38:18.040555415 -0300
> +++ /home/ehabkost/rh/proj/virt/qemu/tests/qemu-iotests/210.out.bad 2019-07-28 20:20:37.398971280 -0300
> @@ -1,231 +0,0 @@
> -=== Successful image creation (defaults) ===
> -
> -{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.luks", "size": 0}}}
> [...]
>
>
> As most test cases require logging to be enabled, my suggestion
> is to activate logging by default and provide a
> disable_test_logging() function that can be used by 030.
>
Actually, we'd need to disable logging for all the unittest style tests,
so it's probably a wash as to whether we do enable-or-disable by
default. I think disable-by-default has the benefit of making it obvious
when you're missing a call to script_initialize, so I'd like to go that
route.
So basically you have:
A) Unittest - disabled by default
B) script-style - enabled by default
You only need to override this layout for one case -- test 245 -- which
was written to expect run_job logging, which I did in this patch.
I'll send a V2 that mocks this up.
--js
prev parent reply other threads:[~2019-07-29 15:44 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-26 22:51 [Qemu-devel] [PATCH 0/2] iotests: use python logging John Snow
2019-07-26 22:52 ` [Qemu-devel] [PATCH 1/2] iotests: add script_initialize John Snow
2019-07-29 0:07 ` Eduardo Habkost
2019-07-29 20:19 ` John Snow
2019-07-26 22:52 ` [Qemu-devel] [PATCH 2/2] iotests: use python logging for iotests.log() John Snow
2019-07-28 23:36 ` Eduardo Habkost
2019-07-29 15:43 ` John Snow [this message]
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=877cc22f-cb47-96cf-2181-c8c08aac4270@redhat.com \
--to=jsnow@redhat.com \
--cc=ehabkost@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/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;
as well as URLs for NNTP newsgroup(s).