Re: [Qemu-block] [Qemu-devel] [PATCH v3 4/4] qemu-iotests: Test creating floppy drives

2016-10-19 Thread Kevin Wolf
Am 19.10.2016 um 15:47 hat John Snow geschrieben:
> 
> 
> On 10/19/2016 03:37 AM, Kevin Wolf wrote:
> >Am 18.10.2016 um 21:53 hat Eric Blake geschrieben:
> >>On 10/18/2016 02:45 PM, John Snow wrote:
> >>>
> >>>
> >>>On 10/18/2016 06:22 AM, Kevin Wolf wrote:
> This tests the different supported methods to create floppy drives and
> how they interact.
> 
> >>
> +function check_floppy_qtree()
> +{
> +echo
> +echo Testing: "$@" | _filter_testdir
> +
> +# QEMU_OPTIONS contains -nodefaults, we don't want that here
> because the
> +# defaults are part of what should be checked here
> +echo "info qtree" |
> +QEMU_OPTIONS="" do_run_qemu "$@" | _filter_win32 |
> +grep -zo '[[:cntrl:]]\( *\)dev: isa-fdc.*\([[:cntrl:]]\1
> .*\)*[[:cntrl:]] *dev:'
> >>>
> >>>This grep invocation doesn't appear to actually terminate with the '-z'
> >>>option here. Not sure why, I haven't looked into the bash framework
> >>>much, hopefully it's not too hard for you to reproduce and correct.
> >
> >No, obviously I can't reproduce, otherwise I wouldn't have written the
> >test case like this. It passes just fine for me on RHEL 7.
> >
> 
> Wasn't sure if it was something that popped up more recently or not.
> Obviously it worked at some point.
> 
> I'm on Fedora 24, using bash 4.3.42-7.fc24 and grep 2.25-1.fc24.
> 
> >Just to clarify, it's grep that doesn't terminate, or qemu? Also, what
> >do you mean by the "bash framework"?
> >
> 
> It seems like it's the grep invocation; I don't see any QEMU
> processes in `ps`, the only thing I can find is the grep invocation.
> (Why would grep hang if qemu has exited?)

I haven't seen it myself, but from your description this sounds more
like a grep bug to me, honestly.

> By the 'bash framework' I meant the shell related infrastructure for
> iotests. I'm more familiar with the python parts.

If you mean the functions for spwaning a qemu instance in the background
and then controlling it from the script, this isn't even using it. I'm
just piping some static data into a monitor on stdio and waiting for the
qemu process to exit.

Essentially just something like this:

echo -e "info qtree\nquit" |
qemu-system-x86_64 -monitor stdio |
grep ...

Kevin



Re: [Qemu-block] [Qemu-devel] [PATCH v3 4/4] qemu-iotests: Test creating floppy drives

2016-10-19 Thread John Snow



On 10/19/2016 03:37 AM, Kevin Wolf wrote:

Am 18.10.2016 um 21:53 hat Eric Blake geschrieben:

On 10/18/2016 02:45 PM, John Snow wrote:



On 10/18/2016 06:22 AM, Kevin Wolf wrote:

This tests the different supported methods to create floppy drives and
how they interact.




+function check_floppy_qtree()
+{
+echo
+echo Testing: "$@" | _filter_testdir
+
+# QEMU_OPTIONS contains -nodefaults, we don't want that here
because the
+# defaults are part of what should be checked here
+echo "info qtree" |
+QEMU_OPTIONS="" do_run_qemu "$@" | _filter_win32 |
+grep -zo '[[:cntrl:]]\( *\)dev: isa-fdc.*\([[:cntrl:]]\1
.*\)*[[:cntrl:]] *dev:'


This grep invocation doesn't appear to actually terminate with the '-z'
option here. Not sure why, I haven't looked into the bash framework
much, hopefully it's not too hard for you to reproduce and correct.


No, obviously I can't reproduce, otherwise I wouldn't have written the
test case like this. It passes just fine for me on RHEL 7.



Wasn't sure if it was something that popped up more recently or not. 
Obviously it worked at some point.


I'm on Fedora 24, using bash 4.3.42-7.fc24 and grep 2.25-1.fc24.


Just to clarify, it's grep that doesn't terminate, or qemu? Also, what
do you mean by the "bash framework"?



It seems like it's the grep invocation; I don't see any QEMU processes 
in `ps`, the only thing I can find is the grep invocation. (Why would 
grep hang if qemu has exited?)


By the 'bash framework' I meant the shell related infrastructure for 
iotests. I'm more familiar with the python parts.



Is 'grep -z' even portable to BSD, or is it just a GNU extension?  Would
it be better to run the output through tr to convert things to a saner
subset of characters before then grepping a text file?


Is qemu-iotests even supposed to run on BSD? All our test cases specify
"_supported_os Linux". (And I don't think this means Linux kernel with
BSD userland :-))

Anyway, the tr thing you mean would be translating all newlines into
something else (which is hopefully otherwise unused), then grep, then
translate back?

What this line is supposed to do (if it wasn't obvious) is extracting
the full information for a single device from 'info qtree'. I don't
really mind how it's done, but multiline operation seems to be something
that isn't trivial with most tools... I think I've done multiline sed
before, so maybe that would be another option.

Kevin





Re: [Qemu-block] [Qemu-devel] [PATCH v3 4/4] qemu-iotests: Test creating floppy drives

2016-10-19 Thread Kevin Wolf
Am 18.10.2016 um 21:53 hat Eric Blake geschrieben:
> On 10/18/2016 02:45 PM, John Snow wrote:
> > 
> > 
> > On 10/18/2016 06:22 AM, Kevin Wolf wrote:
> >> This tests the different supported methods to create floppy drives and
> >> how they interact.
> >>
> 
> >> +function check_floppy_qtree()
> >> +{
> >> +echo
> >> +echo Testing: "$@" | _filter_testdir
> >> +
> >> +# QEMU_OPTIONS contains -nodefaults, we don't want that here
> >> because the
> >> +# defaults are part of what should be checked here
> >> +echo "info qtree" |
> >> +QEMU_OPTIONS="" do_run_qemu "$@" | _filter_win32 |
> >> +grep -zo '[[:cntrl:]]\( *\)dev: isa-fdc.*\([[:cntrl:]]\1
> >> .*\)*[[:cntrl:]] *dev:'
> > 
> > This grep invocation doesn't appear to actually terminate with the '-z'
> > option here. Not sure why, I haven't looked into the bash framework
> > much, hopefully it's not too hard for you to reproduce and correct.

No, obviously I can't reproduce, otherwise I wouldn't have written the
test case like this. It passes just fine for me on RHEL 7.

Just to clarify, it's grep that doesn't terminate, or qemu? Also, what
do you mean by the "bash framework"?

> Is 'grep -z' even portable to BSD, or is it just a GNU extension?  Would
> it be better to run the output through tr to convert things to a saner
> subset of characters before then grepping a text file?

Is qemu-iotests even supposed to run on BSD? All our test cases specify
"_supported_os Linux". (And I don't think this means Linux kernel with
BSD userland :-))

Anyway, the tr thing you mean would be translating all newlines into
something else (which is hopefully otherwise unused), then grep, then
translate back?

What this line is supposed to do (if it wasn't obvious) is extracting
the full information for a single device from 'info qtree'. I don't
really mind how it's done, but multiline operation seems to be something
that isn't trivial with most tools... I think I've done multiline sed
before, so maybe that would be another option.

Kevin


pgpSsbq2KMIZe.pgp
Description: PGP signature


Re: [Qemu-block] [Qemu-devel] [PATCH v3 4/4] qemu-iotests: Test creating floppy drives

2016-10-18 Thread Eric Blake
On 10/18/2016 02:45 PM, John Snow wrote:
> 
> 
> On 10/18/2016 06:22 AM, Kevin Wolf wrote:
>> This tests the different supported methods to create floppy drives and
>> how they interact.
>>

>> +function check_floppy_qtree()
>> +{
>> +echo
>> +echo Testing: "$@" | _filter_testdir
>> +
>> +# QEMU_OPTIONS contains -nodefaults, we don't want that here
>> because the
>> +# defaults are part of what should be checked here
>> +echo "info qtree" |
>> +QEMU_OPTIONS="" do_run_qemu "$@" | _filter_win32 |
>> +grep -zo '[[:cntrl:]]\( *\)dev: isa-fdc.*\([[:cntrl:]]\1
>> .*\)*[[:cntrl:]] *dev:'
> 
> This grep invocation doesn't appear to actually terminate with the '-z'
> option here. Not sure why, I haven't looked into the bash framework
> much, hopefully it's not too hard for you to reproduce and correct.

Is 'grep -z' even portable to BSD, or is it just a GNU extension?  Would
it be better to run the output through tr to convert things to a saner
subset of characters before then grepping a text file?

-- 
Eric Blake   eblake redhat com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature


Re: [Qemu-block] [Qemu-devel] [PATCH v3 4/4] qemu-iotests: Test creating floppy drives

2016-10-18 Thread John Snow



On 10/18/2016 06:22 AM, Kevin Wolf wrote:

This tests the different supported methods to create floppy drives and
how they interact.

Signed-off-by: Kevin Wolf 
---
 tests/qemu-iotests/172 |  242 +
 tests/qemu-iotests/172.out | 1205 
 tests/qemu-iotests/group   |1 +
 3 files changed, 1448 insertions(+)
 create mode 100755 tests/qemu-iotests/172
 create mode 100644 tests/qemu-iotests/172.out

diff --git a/tests/qemu-iotests/172 b/tests/qemu-iotests/172
new file mode 100755
index 000..8bb6443
--- /dev/null
+++ b/tests/qemu-iotests/172
@@ -0,0 +1,242 @@
+#!/bin/bash
+#
+# Test floppy configuration
+#
+# Copyright (C) 2016 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see .
+#
+
+# creator
+owner=kw...@redhat.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+status=1   # failure is the default!
+
+_cleanup()
+{
+   _cleanup_test_img
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_supported_fmt qcow2
+_supported_proto file
+_supported_os Linux
+
+if [ "$QEMU_DEFAULT_MACHINE" != "pc" ]; then
+_notrun "Requires a PC machine"
+fi
+
+function do_run_qemu()
+{
+(
+if ! test -t 0; then
+while read cmd; do
+echo $cmd
+done
+fi
+echo quit
+) | $QEMU -nographic -monitor stdio -serial none "$@"
+echo
+}
+
+function check_floppy_qtree()
+{
+echo
+echo Testing: "$@" | _filter_testdir
+
+# QEMU_OPTIONS contains -nodefaults, we don't want that here because the
+# defaults are part of what should be checked here
+echo "info qtree" |
+QEMU_OPTIONS="" do_run_qemu "$@" | _filter_win32 |
+grep -zo '[[:cntrl:]]\( *\)dev: isa-fdc.*\([[:cntrl:]]\1 .*\)*[[:cntrl:]] 
*dev:'


This grep invocation doesn't appear to actually terminate with the '-z' 
option here. Not sure why, I haven't looked into the bash framework 
much, hopefully it's not too hard for you to reproduce and correct.


...Sorry!

--js