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 <th...@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