diff mbox series

[2/6] iotests: Skip test 079 if it is not possible to create large files

Message ID 20191119170822.45649-3-thuth@redhat.com
State New
Headers show
Series Enable Travis builds on arm64, ppc64le and s390x | expand

Commit Message

Thomas Huth Nov. 19, 2019, 5:08 p.m. UTC
Test 079 fails in the arm64, s390x and ppc64le LXD containers, which
apparently do not allow large files to be created. Test 079 tries to
create a 4G sparse file, so check first whether we can really create
such files before executing the test.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 tests/qemu-iotests/079 | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Philippe Mathieu-Daudé Nov. 19, 2019, 5:29 p.m. UTC | #1
On 11/19/19 6:08 PM, Thomas Huth wrote:
> Test 079 fails in the arm64, s390x and ppc64le LXD containers, which
> apparently do not allow large files to be created. Test 079 tries to
> create a 4G sparse file, so check first whether we can really create
> such files before executing the test.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>   tests/qemu-iotests/079 | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/tests/qemu-iotests/079 b/tests/qemu-iotests/079
> index 81f0c21f53..e9b81419b7 100755
> --- a/tests/qemu-iotests/079
> +++ b/tests/qemu-iotests/079
> @@ -39,6 +39,12 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
>   _supported_fmt qcow2
>   _supported_proto file nfs
>   
> +# Some containers (e.g. non-x86 on Travis) do not allow large files
> +if ! truncate --size=4G "$TEST_IMG"; then

Shouldn't we restrict that to Travis-CI by checking some environment var?

> +    _notrun "file system on $TEST_DIR does not support large enough files"
> +fi
> +rm "$TEST_IMG"
> +
>   echo "=== Check option preallocation and cluster_size ==="
>   echo
>   cluster_sizes="16384 32768 65536 131072 262144 524288 1048576 2097152 4194304"
>
Thomas Huth Nov. 19, 2019, 5:34 p.m. UTC | #2
On 19/11/2019 18.29, Philippe Mathieu-Daudé wrote:
> On 11/19/19 6:08 PM, Thomas Huth wrote:
>> Test 079 fails in the arm64, s390x and ppc64le LXD containers, which
>> apparently do not allow large files to be created. Test 079 tries to
>> create a 4G sparse file, so check first whether we can really create
>> such files before executing the test.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>   tests/qemu-iotests/079 | 6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/tests/qemu-iotests/079 b/tests/qemu-iotests/079
>> index 81f0c21f53..e9b81419b7 100755
>> --- a/tests/qemu-iotests/079
>> +++ b/tests/qemu-iotests/079
>> @@ -39,6 +39,12 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
>>   _supported_fmt qcow2
>>   _supported_proto file nfs
>>   +# Some containers (e.g. non-x86 on Travis) do not allow large files
>> +if ! truncate --size=4G "$TEST_IMG"; then
> 
> Shouldn't we restrict that to Travis-CI by checking some environment var?

I'd rather like to keep it independent from Travis environment
variables, since somebody might want to run "make check" in other
non-Travis containers or on weird filesystems, and then the test should
ideally not fail, but simply skip, too.

 Thomas
Philippe Mathieu-Daudé Nov. 19, 2019, 5:38 p.m. UTC | #3
On 11/19/19 6:34 PM, Thomas Huth wrote:
> On 19/11/2019 18.29, Philippe Mathieu-Daudé wrote:
>> On 11/19/19 6:08 PM, Thomas Huth wrote:
>>> Test 079 fails in the arm64, s390x and ppc64le LXD containers, which
>>> apparently do not allow large files to be created. Test 079 tries to
>>> create a 4G sparse file, so check first whether we can really create
>>> such files before executing the test.
>>>
>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>> ---
>>>    tests/qemu-iotests/079 | 6 ++++++
>>>    1 file changed, 6 insertions(+)
>>>
>>> diff --git a/tests/qemu-iotests/079 b/tests/qemu-iotests/079
>>> index 81f0c21f53..e9b81419b7 100755
>>> --- a/tests/qemu-iotests/079
>>> +++ b/tests/qemu-iotests/079
>>> @@ -39,6 +39,12 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
>>>    _supported_fmt qcow2
>>>    _supported_proto file nfs
>>>    +# Some containers (e.g. non-x86 on Travis) do not allow large files
>>> +if ! truncate --size=4G "$TEST_IMG"; then
>>
>> Shouldn't we restrict that to Travis-CI by checking some environment var?
> 
> I'd rather like to keep it independent from Travis environment
> variables, since somebody might want to run "make check" in other
> non-Travis containers or on weird filesystems, and then the test should
> ideally not fail, but simply skip, too.

I see. But it would be bad if we stop catching normal bugs with this 
test because we restricted it to contained environments.

Maybe we can add a generic is_contained() routine that only checks for 
TRAVIS env var, and people using other containers can expand it.
Daniel P. Berrangé Nov. 19, 2019, 5:50 p.m. UTC | #4
On Tue, Nov 19, 2019 at 06:38:20PM +0100, Philippe Mathieu-Daudé wrote:
> On 11/19/19 6:34 PM, Thomas Huth wrote:
> > On 19/11/2019 18.29, Philippe Mathieu-Daudé wrote:
> > > On 11/19/19 6:08 PM, Thomas Huth wrote:
> > > > Test 079 fails in the arm64, s390x and ppc64le LXD containers, which
> > > > apparently do not allow large files to be created. Test 079 tries to
> > > > create a 4G sparse file, so check first whether we can really create
> > > > such files before executing the test.
> > > > 
> > > > Signed-off-by: Thomas Huth <thuth@redhat.com>
> > > > ---
> > > >    tests/qemu-iotests/079 | 6 ++++++
> > > >    1 file changed, 6 insertions(+)
> > > > 
> > > > diff --git a/tests/qemu-iotests/079 b/tests/qemu-iotests/079
> > > > index 81f0c21f53..e9b81419b7 100755
> > > > --- a/tests/qemu-iotests/079
> > > > +++ b/tests/qemu-iotests/079
> > > > @@ -39,6 +39,12 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
> > > >    _supported_fmt qcow2
> > > >    _supported_proto file nfs
> > > >    +# Some containers (e.g. non-x86 on Travis) do not allow large files
> > > > +if ! truncate --size=4G "$TEST_IMG"; then
> > > 
> > > Shouldn't we restrict that to Travis-CI by checking some environment var?
> > 
> > I'd rather like to keep it independent from Travis environment
> > variables, since somebody might want to run "make check" in other
> > non-Travis containers or on weird filesystems, and then the test should
> > ideally not fail, but simply skip, too.
> 
> I see. But it would be bad if we stop catching normal bugs with this test
> because we restricted it to contained environments.
> 
> Maybe we can add a generic is_contained() routine that only checks for
> TRAVIS env var, and people using other containers can expand it.

"is_contained" is still expressing the environment.

What we need is a way to express features, and be able to switch beteen
autodetecting features & mandatory enablement.

eg

   if has_feature "large_file"
   then
       ...stuff using large files...
   fi

The "has_feature" helper would by default call out to
"has_feature_large_file" todo automatic probing so that things
"just work" according to whatever env the tests are run inside.

There should, however, be a flag to "./check" which force enables
the feature eg  "./check --require-feature large_file" will force
execution and not attempt to probe for it.

We could have "--require-feature :all" to force enable all optional
bits.

Any formal CI systems should use --require-feature to explicitly
force testing of features that are expected to always work.

so Travis x86 would use "--require-feature large_large", but
the arch64 version would not pass this flag and so do probing
which will auto-skip.

Regards,
Daniel
Thomas Huth Nov. 19, 2019, 6:32 p.m. UTC | #5
On 19/11/2019 18.50, Daniel P. Berrangé wrote:
> On Tue, Nov 19, 2019 at 06:38:20PM +0100, Philippe Mathieu-Daudé wrote:
>> On 11/19/19 6:34 PM, Thomas Huth wrote:
>>> On 19/11/2019 18.29, Philippe Mathieu-Daudé wrote:
>>>> On 11/19/19 6:08 PM, Thomas Huth wrote:
>>>>> Test 079 fails in the arm64, s390x and ppc64le LXD containers, which
>>>>> apparently do not allow large files to be created. Test 079 tries to
>>>>> create a 4G sparse file, so check first whether we can really create
>>>>> such files before executing the test.
>>>>>
>>>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>>>> ---
>>>>>    tests/qemu-iotests/079 | 6 ++++++
>>>>>    1 file changed, 6 insertions(+)
>>>>>
>>>>> diff --git a/tests/qemu-iotests/079 b/tests/qemu-iotests/079
>>>>> index 81f0c21f53..e9b81419b7 100755
>>>>> --- a/tests/qemu-iotests/079
>>>>> +++ b/tests/qemu-iotests/079
>>>>> @@ -39,6 +39,12 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
>>>>>    _supported_fmt qcow2
>>>>>    _supported_proto file nfs
>>>>>    +# Some containers (e.g. non-x86 on Travis) do not allow large files
>>>>> +if ! truncate --size=4G "$TEST_IMG"; then
>>>>
>>>> Shouldn't we restrict that to Travis-CI by checking some environment var?
>>>
>>> I'd rather like to keep it independent from Travis environment
>>> variables, since somebody might want to run "make check" in other
>>> non-Travis containers or on weird filesystems, and then the test should
>>> ideally not fail, but simply skip, too.
>>
>> I see. But it would be bad if we stop catching normal bugs with this test
>> because we restricted it to contained environments.
>>
>> Maybe we can add a generic is_contained() routine that only checks for
>> TRAVIS env var, and people using other containers can expand it.
> 
> "is_contained" is still expressing the environment.
> 
> What we need is a way to express features, and be able to switch beteen
> autodetecting features & mandatory enablement.
> 
> eg
> 
>    if has_feature "large_file"
>    then
>        ...stuff using large files...
>    fi
> 
> The "has_feature" helper would by default call out to
> "has_feature_large_file" todo automatic probing so that things
> "just work" according to whatever env the tests are run inside.
> 
> There should, however, be a flag to "./check" which force enables
> the feature eg  "./check --require-feature large_file" will force
> execution and not attempt to probe for it.
> 
> We could have "--require-feature :all" to force enable all optional
> bits.
> 
> Any formal CI systems should use --require-feature to explicitly
> force testing of features that are expected to always work.
> 
> so Travis x86 would use "--require-feature large_large", but
> the arch64 version would not pass this flag and so do probing
> which will auto-skip.

Maybe a nice idea, but I think this is out of scope for this patch
series. We're using the "if ! truncate --size=4G" check in some other
tests already, so I'm not adding some new mechanism here.
If you want to see some more fine-grained control for the iotests,
please send some patches to rework these other tests first.

 Thomas
Alex Bennée Nov. 22, 2019, 12:57 p.m. UTC | #6
Thomas Huth <thuth@redhat.com> writes:

> Test 079 fails in the arm64, s390x and ppc64le LXD containers, which
> apparently do not allow large files to be created. Test 079 tries to
> create a 4G sparse file, so check first whether we can really create
> such files before executing the test.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  tests/qemu-iotests/079 | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/tests/qemu-iotests/079 b/tests/qemu-iotests/079
> index 81f0c21f53..e9b81419b7 100755
> --- a/tests/qemu-iotests/079
> +++ b/tests/qemu-iotests/079
> @@ -39,6 +39,12 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
>  _supported_fmt qcow2
>  _supported_proto file nfs
>  
> +# Some containers (e.g. non-x86 on Travis) do not allow large files
> +if ! truncate --size=4G "$TEST_IMG"; then
> +    _notrun "file system on $TEST_DIR does not support large enough files"
> +fi
> +rm "$TEST_IMG"
> +

Hmm we are repeating ourselves here. Maybe the test should be wrapped up
as __supported_filesize and the test can just do:

  __supported_filesize 4G

along with the other tests above.
diff mbox series

Patch

diff --git a/tests/qemu-iotests/079 b/tests/qemu-iotests/079
index 81f0c21f53..e9b81419b7 100755
--- a/tests/qemu-iotests/079
+++ b/tests/qemu-iotests/079
@@ -39,6 +39,12 @@  trap "_cleanup; exit \$status" 0 1 2 3 15
 _supported_fmt qcow2
 _supported_proto file nfs
 
+# Some containers (e.g. non-x86 on Travis) do not allow large files
+if ! truncate --size=4G "$TEST_IMG"; then
+    _notrun "file system on $TEST_DIR does not support large enough files"
+fi
+rm "$TEST_IMG"
+
 echo "=== Check option preallocation and cluster_size ==="
 echo
 cluster_sizes="16384 32768 65536 131072 262144 524288 1048576 2097152 4194304"