diff mbox series

[v2,2/4] tests/qemu-iotests/group: Remove some more tests from the "auto" group

Message ID 20190716122836.31187-3-thuth@redhat.com (mailing list archive)
State New, archived
Headers show
Series Enable iotests during "make check" | expand

Commit Message

Thomas Huth July 16, 2019, 12:28 p.m. UTC
Remove some more tests from the "auto" group that either have issues
in certain environments (like macOS or FreeBSD, or on certain file systems
like ZFS or tmpfs), do not work with the qcow2 format, or that are simply
taking too much time.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/qemu-iotests/group | 114 ++++++++++++++++++++-------------------
 1 file changed, 58 insertions(+), 56 deletions(-)

Comments

Max Reitz July 16, 2019, 3:26 p.m. UTC | #1
On 16.07.19 14:28, Thomas Huth wrote:
> Remove some more tests from the "auto" group that either have issues
> in certain environments (like macOS or FreeBSD, or on certain file systems
> like ZFS or tmpfs), do not work with the qcow2 format, or that are simply
> taking too much time.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  tests/qemu-iotests/group | 114 ++++++++++++++++++++-------------------
>  1 file changed, 58 insertions(+), 56 deletions(-)

I just looked through the list to see whether any of the test seems like
we’d want to keep it even though it is a bit slow.  Mostly I was looking
for tests that cover complex cases.

255 is the only one that seemed to fit that bill to me.  So why do you
remove it?  Is it because it takes two seconds?

Max
Thomas Huth July 16, 2019, 3:31 p.m. UTC | #2
On 16/07/2019 17.26, Max Reitz wrote:
> On 16.07.19 14:28, Thomas Huth wrote:
>> Remove some more tests from the "auto" group that either have issues
>> in certain environments (like macOS or FreeBSD, or on certain file systems
>> like ZFS or tmpfs), do not work with the qcow2 format, or that are simply
>> taking too much time.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>  tests/qemu-iotests/group | 114 ++++++++++++++++++++-------------------
>>  1 file changed, 58 insertions(+), 56 deletions(-)
> 
> I just looked through the list to see whether any of the test seems like
> we’d want to keep it even though it is a bit slow.  Mostly I was looking
> for tests that cover complex cases.
> 
> 255 is the only one that seemed to fit that bill to me.  So why do you
> remove it?  Is it because it takes two seconds?

No, I removed it because it was failing on macOS:

 https://cirrus-ci.com/task/4860239294234624

("OSError: AF_UNIX path too long" is the error, if I got that right)

 Thomas
Max Reitz July 16, 2019, 3:44 p.m. UTC | #3
On 16.07.19 17:31, Thomas Huth wrote:
> On 16/07/2019 17.26, Max Reitz wrote:
>> On 16.07.19 14:28, Thomas Huth wrote:
>>> Remove some more tests from the "auto" group that either have issues
>>> in certain environments (like macOS or FreeBSD, or on certain file systems
>>> like ZFS or tmpfs), do not work with the qcow2 format, or that are simply
>>> taking too much time.
>>>
>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>> ---
>>>  tests/qemu-iotests/group | 114 ++++++++++++++++++++-------------------
>>>  1 file changed, 58 insertions(+), 56 deletions(-)
>>
>> I just looked through the list to see whether any of the test seems like
>> we’d want to keep it even though it is a bit slow.  Mostly I was looking
>> for tests that cover complex cases.
>>
>> 255 is the only one that seemed to fit that bill to me.  So why do you
>> remove it?  Is it because it takes two seconds?
> 
> No, I removed it because it was failing on macOS:
> 
>  https://cirrus-ci.com/task/4860239294234624
> 
> ("OSError: AF_UNIX path too long" is the error, if I got that right)

Ah, OK.  So, uh, we effectively can’t run any Python tests on macOS?

Max
Max Reitz July 16, 2019, 3:45 p.m. UTC | #4
On 16.07.19 17:44, Max Reitz wrote:
> On 16.07.19 17:31, Thomas Huth wrote:
>> On 16/07/2019 17.26, Max Reitz wrote:
>>> On 16.07.19 14:28, Thomas Huth wrote:
>>>> Remove some more tests from the "auto" group that either have issues
>>>> in certain environments (like macOS or FreeBSD, or on certain file systems
>>>> like ZFS or tmpfs), do not work with the qcow2 format, or that are simply
>>>> taking too much time.
>>>>
>>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>>> ---
>>>>  tests/qemu-iotests/group | 114 ++++++++++++++++++++-------------------
>>>>  1 file changed, 58 insertions(+), 56 deletions(-)
>>>
>>> I just looked through the list to see whether any of the test seems like
>>> we’d want to keep it even though it is a bit slow.  Mostly I was looking
>>> for tests that cover complex cases.
>>>
>>> 255 is the only one that seemed to fit that bill to me.  So why do you
>>> remove it?  Is it because it takes two seconds?
>>
>> No, I removed it because it was failing on macOS:
>>
>>  https://cirrus-ci.com/task/4860239294234624
>>
>> ("OSError: AF_UNIX path too long" is the error, if I got that right)
> 
> Ah, OK.  So, uh, we effectively can’t run any Python tests on macOS?

(Forgot the

Reviewed-by: Max Reitz <mreitz@redhat.com>

because I’m so... amazed by that possibility)
Eric Blake July 16, 2019, 3:56 p.m. UTC | #5
On 7/16/19 10:44 AM, Max Reitz wrote:
> On 16.07.19 17:31, Thomas Huth wrote:
>> On 16/07/2019 17.26, Max Reitz wrote:
>>> On 16.07.19 14:28, Thomas Huth wrote:
>>>> Remove some more tests from the "auto" group that either have issues
>>>> in certain environments (like macOS or FreeBSD, or on certain file systems
>>>> like ZFS or tmpfs), do not work with the qcow2 format, or that are simply
>>>> taking too much time.
>>>>
>>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>>> ---
>>>>  tests/qemu-iotests/group | 114 ++++++++++++++++++++-------------------
>>>>  1 file changed, 58 insertions(+), 56 deletions(-)
>>>
>>> I just looked through the list to see whether any of the test seems like
>>> we’d want to keep it even though it is a bit slow.  Mostly I was looking
>>> for tests that cover complex cases.
>>>
>>> 255 is the only one that seemed to fit that bill to me.  So why do you
>>> remove it?  Is it because it takes two seconds?
>>
>> No, I removed it because it was failing on macOS:
>>
>>  https://cirrus-ci.com/task/4860239294234624
>>
>> ("OSError: AF_UNIX path too long" is the error, if I got that right)
> 
> Ah, OK.  So, uh, we effectively can’t run any Python tests on macOS?

Not when our CI is set up to use super-long file names:

+  File
"/private/var/folders/sy/2x5qvs0n4lg18fry9jz4y21m0000gn/T/cirrus-ci-build/tests/qemu-iotests/../../python/qemu/machine.py",
line 294, in launch

Is there any way to create our sockets somewhere under /tmp instead of
inside tests/qemu-iotests, so that we have a shorter filename for
sockets no matter how deep in the file hierarchy the tests themselves live?

Also, at one point, we tossed around the idea of
s/qemu-iotests/iotests/, to shave off 5 characters that don't really add
anything.
Max Reitz July 16, 2019, 3:58 p.m. UTC | #6
On 16.07.19 17:56, Eric Blake wrote:
> On 7/16/19 10:44 AM, Max Reitz wrote:
>> On 16.07.19 17:31, Thomas Huth wrote:
>>> On 16/07/2019 17.26, Max Reitz wrote:
>>>> On 16.07.19 14:28, Thomas Huth wrote:
>>>>> Remove some more tests from the "auto" group that either have issues
>>>>> in certain environments (like macOS or FreeBSD, or on certain file systems
>>>>> like ZFS or tmpfs), do not work with the qcow2 format, or that are simply
>>>>> taking too much time.
>>>>>
>>>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>>>> ---
>>>>>  tests/qemu-iotests/group | 114 ++++++++++++++++++++-------------------
>>>>>  1 file changed, 58 insertions(+), 56 deletions(-)
>>>>
>>>> I just looked through the list to see whether any of the test seems like
>>>> we’d want to keep it even though it is a bit slow.  Mostly I was looking
>>>> for tests that cover complex cases.
>>>>
>>>> 255 is the only one that seemed to fit that bill to me.  So why do you
>>>> remove it?  Is it because it takes two seconds?
>>>
>>> No, I removed it because it was failing on macOS:
>>>
>>>  https://cirrus-ci.com/task/4860239294234624
>>>
>>> ("OSError: AF_UNIX path too long" is the error, if I got that right)
>>
>> Ah, OK.  So, uh, we effectively can’t run any Python tests on macOS?
> 
> Not when our CI is set up to use super-long file names:
> 
> +  File
> "/private/var/folders/sy/2x5qvs0n4lg18fry9jz4y21m0000gn/T/cirrus-ci-build/tests/qemu-iotests/../../python/qemu/machine.py",
> line 294, in launch

That isn’t really long.

> Is there any way to create our sockets somewhere under /tmp instead of
> inside tests/qemu-iotests, so that we have a shorter filename for
> sockets no matter how deep in the file hierarchy the tests themselves live?
> 
> Also, at one point, we tossed around the idea of
> s/qemu-iotests/iotests/, to shave off 5 characters that don't really add
> anything.

I’d personally rather just skip the iotests if we detect such a silly
OS, but maybe that’s just me.

Max
Eric Blake July 16, 2019, 4:09 p.m. UTC | #7
On 7/16/19 10:58 AM, Max Reitz wrote:

>>> Ah, OK.  So, uh, we effectively can’t run any Python tests on macOS?
>>
>> Not when our CI is set up to use super-long file names:
>>
>> +  File
>> "/private/var/folders/sy/2x5qvs0n4lg18fry9jz4y21m0000gn/T/cirrus-ci-build/tests/qemu-iotests/../../python/qemu/machine.py",
>> line 294, in launch
> 
> That isn’t really long.

The MacOS limit is 104 (or 103 if you insist on using the trailing NUL
yourself), compared to Linux at 108 (107).  And:

$ printf
"/private/var/folders/sy/2x5qvs0n4lg18fry9jz4y21m0000gn/T/cirrus-ci-build/tests/qemu-iotests/scratch/name"
| wc -c
104

shows that we are right on the verge of overflowing the space allotted,
with any socket name worth using when the socket lives inside
qemu-iotests/scratch.

> 
>> Is there any way to create our sockets somewhere under /tmp instead of
>> inside tests/qemu-iotests, so that we have a shorter filename for
>> sockets no matter how deep in the file hierarchy the tests themselves live?
>>
>> Also, at one point, we tossed around the idea of
>> s/qemu-iotests/iotests/, to shave off 5 characters that don't really add
>> anything.
> 
> I’d personally rather just skip the iotests if we detect such a silly
> OS, but maybe that’s just me.

It's a rather unfortunate limit, but it's not all that silly (the limit
is based on the fact that struct sockaddr has to fit inside a nice
power-of-2 structure somewhere in the kernel, and enough else is used
that you really are left with just 104/108 bytes, or even 92 bytes if
you use HP-UX 11).  POSIX does not place a minimum length on sun_path,
but I know of no system that does not allow at least 92 bytes, if you
are aiming for a portably-small name.
Max Reitz July 16, 2019, 4:12 p.m. UTC | #8
On 16.07.19 18:09, Eric Blake wrote:
> On 7/16/19 10:58 AM, Max Reitz wrote:
> 
>>>> Ah, OK.  So, uh, we effectively can’t run any Python tests on macOS?
>>>
>>> Not when our CI is set up to use super-long file names:
>>>
>>> +  File
>>> "/private/var/folders/sy/2x5qvs0n4lg18fry9jz4y21m0000gn/T/cirrus-ci-build/tests/qemu-iotests/../../python/qemu/machine.py",
>>> line 294, in launch
>>
>> That isn’t really long.
> 
> The MacOS limit is 104 (or 103 if you insist on using the trailing NUL
> yourself), compared to Linux at 108 (107).  And:
> 
> $ printf
> "/private/var/folders/sy/2x5qvs0n4lg18fry9jz4y21m0000gn/T/cirrus-ci-build/tests/qemu-iotests/scratch/name"
> | wc -c
> 104
> 
> shows that we are right on the verge of overflowing the space allotted,
> with any socket name worth using when the socket lives inside
> qemu-iotests/scratch.
> 
>>
>>> Is there any way to create our sockets somewhere under /tmp instead of
>>> inside tests/qemu-iotests, so that we have a shorter filename for
>>> sockets no matter how deep in the file hierarchy the tests themselves live?
>>>
>>> Also, at one point, we tossed around the idea of
>>> s/qemu-iotests/iotests/, to shave off 5 characters that don't really add
>>> anything.
>>
>> I’d personally rather just skip the iotests if we detect such a silly
>> OS, but maybe that’s just me.
> 
> It's a rather unfortunate limit, but it's not all that silly (the limit
> is based on the fact that struct sockaddr has to fit inside a nice
> power-of-2 structure somewhere in the kernel, and enough else is used
> that you really are left with just 104/108 bytes, or even 92 bytes if
> you use HP-UX 11).  POSIX does not place a minimum length on sun_path,
> but I know of no system that does not allow at least 92 bytes, if you
> are aiming for a portably-small name.

It does come to me as a surprise that the sockaddr is a path instead of,
say, an inode number.

But shaving off the “qemu-” seems like the wrong approach to me still.

Max
Thomas Huth July 18, 2019, 7:42 a.m. UTC | #9
On 16/07/2019 18.12, Max Reitz wrote:
> On 16.07.19 18:09, Eric Blake wrote:
>> On 7/16/19 10:58 AM, Max Reitz wrote:
[...]
>>>> Is there any way to create our sockets somewhere under /tmp instead of
>>>> inside tests/qemu-iotests, so that we have a shorter filename for
>>>> sockets no matter how deep in the file hierarchy the tests themselves live?
>>>>
>>>> Also, at one point, we tossed around the idea of
>>>> s/qemu-iotests/iotests/, to shave off 5 characters that don't really add
>>>> anything.
>>>
>>> I’d personally rather just skip the iotests if we detect such a silly
>>> OS, but maybe that’s just me.
>>
>> It's a rather unfortunate limit, but it's not all that silly (the limit
>> is based on the fact that struct sockaddr has to fit inside a nice
>> power-of-2 structure somewhere in the kernel, and enough else is used
>> that you really are left with just 104/108 bytes, or even 92 bytes if
>> you use HP-UX 11).  POSIX does not place a minimum length on sun_path,
>> but I know of no system that does not allow at least 92 bytes, if you
>> are aiming for a portably-small name.
> 
> It does come to me as a surprise that the sockaddr is a path instead of,
> say, an inode number.
> 
> But shaving off the “qemu-” seems like the wrong approach to me still.

Anyway, it would be great if someone who's familiar with the code could
find a proper fix for this problem. FWIW, it also happens on Linux:

mkdir /tmp/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
cd /tmp/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789/
~/path/to/qemu/configure --target-list=x86_64-softmmu
make -j8
cd tests/qemu-iotests/
./check -g quick -qcow2
...
058      fail       [09:29:33] [09:29:34]                    output mismatch (see 058.out.bad)
--- /home/thuth/devel/qemu/tests/qemu-iotests/058.out	2019-04-23 16:43:12.000000000 +0200
+++ /tmp/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789/tests/qemu-iotests/058.out.bad	2019-07-18 09:29:34.305070819 +0200
@@ -17,18 +17,22 @@
 4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 read 4096/4096 bytes at offset 8192
 4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+qemu-nbd: UNIX socket path '/tmp/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789/tests/qemu-iotests/scratch/qemu-nbd.sock' is too long
+Path must be less than 108 bytes
...
065      fail       [09:29:38] [09:29:38]                    output mismatch (see 065.out.bad)
--- /home/thuth/devel/qemu/tests/qemu-iotests/065.out	2019-04-23 16:43:12.000000000 +0200
+++ /tmp/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789/tests/qemu-iotests/065.out.bad	2019-07-18 09:29:38.568118520 +0200
@@ -1,5 +1,41 @@
-........
+....E..E
+======================================================================
+ERROR: test_qmp (__main__.TestQCow3LazyQMP)
+----------------------------------------------------------------------
+Traceback (most recent call last):
+  File "065", line 75, in setUp
+    self.vm.launch()
+  File "/home/thuth/devel/qemu/tests/qemu-iotests/../../python/qemu/machine.py", line 294, in launch
+    self._launch()
+  File "/home/thuth/devel/qemu/tests/qemu-iotests/../../python/qemu/machine.py", line 311, in _launch
+    self._pre_launch()
+  File "/home/thuth/devel/qemu/tests/qemu-iotests/../../python/qemu/qtest.py", line 103, in _pre_launch
+    super(QEMUQtestMachine, self)._pre_launch()
+  File "/home/thuth/devel/qemu/tests/qemu-iotests/../../python/qemu/machine.py", line 262, in _pre_launch
+    server=True)
+  File "/home/thuth/devel/qemu/tests/qemu-iotests/../../python/qemu/qmp.py", line 60, in __init__
+    self.__sock.bind(self.__address)
+OSError: AF_UNIX path too long
...

 Thomas
diff mbox series

Patch

diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index b34c8e3c0c..0ae555b610 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -14,7 +14,9 @@ 
 #   runnable in any case. That means they should run with every QEMU binary
 #   (also non-x86), with every QEMU configuration (i.e. must not fail if
 #   an optional feature is not compiled in - but reporting a "skip" is ok),
-#   and work all kind of host filesystems and users (e.g. "nobody" or "root").
+#   work at least with the qcow2 file format, work with all kind of host
+#   filesystems and users (e.g. "nobody" or "root") and must not take too
+#   much memory and disk space (since CI pipelines tend to fail otherwise).
 #
 
 #
@@ -33,8 +35,8 @@ 
 011 rw auto quick
 012 auto quick
 013 rw auto
-014 rw auto
-015 rw snapshot auto
+014 rw
+015 rw snapshot
 # 016 was removed, do not reuse
 017 rw backing auto quick
 018 rw backing auto quick
@@ -42,7 +44,7 @@ 
 020 rw backing auto quick
 021 io auto quick
 022 rw snapshot auto
-023 rw auto
+023 rw
 024 rw backing auto quick
 025 rw auto quick
 026 rw blkdbg
@@ -78,94 +80,94 @@ 
 056 rw backing
 057 rw
 058 rw quick
-059 rw auto quick
+059 rw quick
 060 rw auto quick
 061 rw auto
 062 rw auto quick
 063 rw auto quick
-064 rw auto quick
+064 rw quick
 065 rw quick
 066 rw auto quick
 067 rw quick
 068 rw quick
 069 rw auto quick
-070 rw auto quick
+070 rw quick
 071 rw auto quick
 072 rw auto quick
 073 rw auto quick
 074 rw auto quick
-075 rw auto quick
-076 auto
-077 rw auto quick
-078 rw auto quick
+075 rw quick
+076 io
+077 rw quick
+078 rw quick
 079 rw auto
 080 rw auto
-081 rw auto quick
-082 rw auto quick
-083 rw auto
-084 img auto quick
+081 rw quick
+082 rw quick
+083 rw
+084 img quick
 085 rw
 086 rw auto quick
 087 rw quick
-088 rw auto quick
+088 rw quick
 089 rw auto quick
 090 rw auto quick
-091 rw auto migration
-092 rw auto quick
+091 rw migration
+092 rw quick
 093 throttle
-094 rw auto quick
+094 rw quick
 095 rw quick
 096 rw quick
 097 rw auto backing
 098 rw auto backing quick
 099 rw auto quick
 # 100 was removed, do not reuse
-101 rw auto quick
-102 rw auto quick
+101 rw quick
+102 rw quick
 103 rw auto quick
 104 rw auto
 105 rw auto quick
-106 rw auto quick
+106 rw quick
 107 rw auto quick
 108 rw auto quick
-109 rw auto
+109 rw
 110 rw auto backing quick
 111 rw auto quick
 112 rw
-113 rw auto quick
+113 rw quick
 114 rw auto quick
 115 rw
-116 rw auto quick
+116 rw quick
 117 rw auto
 118 rw
-119 rw auto quick
+119 rw quick
 120 rw auto quick
 121 rw
 122 rw auto
-123 rw auto quick
+123 rw quick
 124 rw backing
 125 rw
 126 rw auto backing
 127 rw backing quick
-128 rw auto quick
+128 rw quick
 129 rw quick
 130 rw auto quick
-131 rw auto quick
+131 rw quick
 132 rw quick
 133 auto quick
 134 rw auto quick
-135 rw auto
+135 rw
 136 rw
 137 rw auto
 138 rw auto quick
 139 rw quick
 140 rw auto quick
 141 rw auto quick
-142 auto
+142
 143 auto quick
 144 rw quick
 145 quick
-146 auto quick
+146 quick
 147 img
 148 rw quick
 149 rw sudo
@@ -179,18 +181,18 @@ 
 157 quick
 158 rw auto quick
 159 rw auto quick
-160 rw auto quick
+160 rw quick
 161 rw auto quick
 162 quick
 163 rw
 165 rw quick
 169 rw quick migration
 170 rw auto quick
-171 rw auto quick
+171 rw quick
 172 auto
-173 rw auto
+173 rw
 174 auto
-175 auto quick
+175 quick
 176 rw auto backing
 177 rw auto quick
 178 img
@@ -210,7 +212,7 @@ 
 194 rw migration quick
 195 rw auto quick
 196 rw quick migration
-197 rw auto quick
+197 rw quick
 198 rw
 199 rw migration
 200 rw
@@ -220,52 +222,52 @@ 
 204 rw quick
 205 rw quick
 206 rw
-207 rw auto
+207 rw
 208 rw quick
 209 rw quick
-210 rw auto
-211 rw auto quick
-212 rw auto quick
-213 rw auto quick
+210 rw
+211 rw quick
+212 rw quick
+213 rw quick
 214 rw auto
-215 rw auto quick
+215 rw quick
 216 rw quick
 217 rw auto quick
 218 rw quick
 219 rw
 220 rw auto
-221 rw auto quick
+221 rw quick
 222 rw quick
 223 rw quick
 224 rw quick
-225 rw auto quick
+225 rw quick
 226 auto quick
 227 quick
 228 rw quick
 229 auto quick
-231 auto quick
+231 quick
 232 quick
-233 auto quick
+233 quick
 234 quick migration
 235 quick
 236 quick
-237 rw auto quick
+237 rw quick
 238 quick
-239 rw auto quick
+239 rw quick
 240 quick
-241 rw auto quick
+241 rw quick
 242 rw quick
-243 rw auto quick
+243 rw quick
 244 rw auto quick
 245 rw
 246 rw quick
 247 rw quick
 248 rw quick
 249 rw auto quick
-250 rw auto quick
+250 rw quick
 251 rw auto quick
 252 rw auto backing quick
-253 rw auto quick
-254 rw auto backing quick
-255 rw auto quick
-256 rw auto quick
+253 rw quick
+254 rw backing quick
+255 rw quick
+256 rw quick