[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 00/67] iotests: Honor $IMGOPTS in Python tests
From: |
John Snow |
Subject: |
Re: [PATCH 00/67] iotests: Honor $IMGOPTS in Python tests |
Date: |
Tue, 1 Oct 2019 17:47:59 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.0 |
On 10/1/19 3:46 PM, Max Reitz wrote:
> First of all: Sorry.
>
Thank you for finding the time to do it.
>
> Second:
>
> Based-on: My block branch
> (https://github.com/XanClic/qemu.git block)
>
> Based-on: address@hidden
> (“iotests: use python logging”)
>
> Based-on: address@hidden
> (“iotests: Allow ./check -o data_file”)
>
> Based-on: address@hidden
> (“iotests: Selfish patches”)
>
> Based-on: address@hidden
> (“block: Skip COR for inactive nodes”)
>
>
> OK, now:
>
> Hi,
>
> My recent series “iotests: Allow ./check -o data_file” enabled our bash
> tests to interpret the data_file qcow2 option. It didn’t do anything
> for Python tests because those currently completely ignore all image
> format options.
>
> This is where it gets hairy. To do so, we need two things: First of
> all, whatever way Python tests use to create images needs to interpret
> $IMGOPTS. Second, when deleting image files, they must not use a plain
> os.remove(), but a special function that will clean up data files, too.
>
> The heap of patches in this series comes from making the Python tests
> use these new functions.
>
> Most Python tests just run qemu-img through a helper function that does
> not care about the exact subcommand to create images. I could add
> $IMGOPTS support to it, but that doesn’t feel quite right to me, and it
> wouldn’t reduce the patch count because we still need a special removal
> function.
>
>
> This series is structured as follows:
> - Patches 1 through 7 add support to handle image files differently from
> other files (consider $IMGOPTS when creating them, consider data files
> when deleting them, separate ImagePaths from FilePaths, and so on)
OK, that makes sense. I suppose we've been playing a bit fast and loose
with these such things.
>
> - Patches 8 and 9 add two filters we’ll need in the next range:
>
> - Patches 10 through 13 address some issues in a handful of tests that
> just need to be changed a little so they can overall work with some
> format options
>
> - Patch 14 makes all tests pass unsupported_imgopts where there are
> options that they cannot support.
>
> - Patches 15 through 65 make all Python tests use the new functions
> introduced in the first 7 patches so they no longer ignore $IMGOPTS.
>
> I felt like this is much better than munching everything together into
> a single big commit (better to rebase, better to review), and I don’t
> really like ideas like “Just do five patches that each address ten
> iotests”.
>
This is the right approach, for the exact reasons you specify.
> But I’m still very much open to suggestions on how to combine these
> many small patches to reduce the overall patch count.
>
You could group them by release windows, if you really wanted to;
- [...etc...]
- Update iotests added for 3.2
- Update iotests added for 4.0
- Update iotests added for 4.1
- Individual patches thereafter
But maybe that doesn't really solve anything for anyone. If you didn't
find a more obvious grouping for these, I'd just leave it alone. I'll
get to reviewing them.
> - Patch 66 ensures that Python tests always use the new function to
> create test images so they won’t bypass $IMGOPTS.
>
> - Patch 67 cleans up. qemu_img_log() is only used for image creation,
> and I don’t see the point in that. The output is predictable and it
> is very unlikely to fail. We can see in the bash tests that regularly
> we basically just filter everything from it anyway.
> (So this series replaces log(qemu_img_pipe()) instances by asserting
> that image creation did not fail.)
> ((qemu_img_create() obviously no longer has any use after this
> series.))
>
>
> After this series, running the iotests with -o compat=0.10,
> -o refcount_bits=1, and -o 'data_file=$TEST_IMG.data_file' does
> something sensible even for the Python tests, and it passes.
>
No minor accomplishment.
I'll make sure to review at least 1-14, but not before Friday.
>
> Max Reitz (67):
> iotests.py: Read $IMGOPTS
> iotests.py: Add @skip_for_imgopts()
> iotests.py: Add unsupported_imgopts
> iotests.py: create_test_image, remove_test_image
> iotests.py: Add ImagePaths
> iotests.py: Add image_path()
> iotests.py: Filter data_file in filter_img_info
> iotests.py: Add filter_json_filename()
> iotests.py: Add @hide_fields to img_info_log
> iotests/169: Skip persistent cases for compat=0.10
> iotests/224: Filter json:{} from commit command
> iotests/228: Filter json:{} filenames
> iotests/242: Hide refcount bit information
> iotests: Use unsupported_imgopts in Python tests
> iotests/030: Honor $IMGOPTS
> iotests/040: Honor $IMGOPTS
> iotests/041: Honor $IMGOPTS
> iotests/044: Honor $IMGOPTS
> iotests/045: Honor $IMGOPTS
> iotests/055: Honor $IMGOPTS
> iotests/056: Honor $IMGOPTS
> iotests/057: Honor $IMGOPTS
> iotests/065: Honor $IMGOPTS
> iotests/096: Honor $IMGOPTS
> iotests/118: Honor $IMGOPTS
> iotests/124: Honor $IMGOPTS
> iotests/129: Honor $IMGOPTS
> iotests/132: Honor $IMGOPTS
> iotests/139: Honor $IMGOPTS
> iotests/147: Honor $IMGOPTS
> iotests/148: Honor $IMGOPTS
> iotests/151: Honor $IMGOPTS
> iotests/152: Honor $IMGOPTS
> iotests/155: Honor $IMGOPTS
> iotests/163: Honor $IMGOPTS
> iotests/165: Honor $IMGOPTS
> iotests/169: Honor $IMGOPTS
> iotests/194: Honor $IMGOPTS
> iotests/196: Honor $IMGOPTS
> iotests/199: Honor $IMGOPTS
> iotests/202: Honor $IMGOPTS
> iotests/203: Honor $IMGOPTS
> iotests/205: Honor $IMGOPTS
> iotests/208: Honor $IMGOPTS
> iotests/208: Honor $IMGOPTS
> iotests/216: Honor $IMGOPTS
> iotests/218: Honor $IMGOPTS
> iotests/219: Honor $IMGOPTS
> iotests/222: Honor $IMGOPTS
> iotests/224: Honor $IMGOPTS
> iotests/228: Honor $IMGOPTS
> iotests/234: Honor $IMGOPTS
> iotests/235: Honor $IMGOPTS
> iotests/236: Honor $IMGOPTS
> iotests/237: Honor $IMGOPTS
> iotests/242: Honor $IMGOPTS
> iotests/245: Honor $IMGOPTS
> iotests/246: Honor $IMGOPTS
> iotests/248: Honor $IMGOPTS
> iotests/254: Honor $IMGOPTS
> iotests/255: Honor $IMGOPTS
> iotests/256: Honor $IMGOPTS
> iotests/257: Honor $IMGOPTS
> iotests/258: Honor $IMGOPTS
> iotests/262: Honor $IMGOPTS
> iotests.py: Forbid qemu_img*('create', ...)
> iotests.py: Drop qemu_img_log(), qemu_img_create()
>
> tests/qemu-iotests/030 | 69 ++++++------
> tests/qemu-iotests/040 | 42 ++++----
> tests/qemu-iotests/041 | 108 +++++++++----------
> tests/qemu-iotests/044 | 11 +-
> tests/qemu-iotests/045 | 26 ++---
> tests/qemu-iotests/055 | 41 +++----
> tests/qemu-iotests/056 | 30 +++---
> tests/qemu-iotests/057 | 10 +-
> tests/qemu-iotests/065 | 21 ++--
> tests/qemu-iotests/096 | 5 +-
> tests/qemu-iotests/118 | 26 ++---
> tests/qemu-iotests/124 | 29 +++--
> tests/qemu-iotests/129 | 11 +-
> tests/qemu-iotests/132 | 6 +-
> tests/qemu-iotests/139 | 15 ++-
> tests/qemu-iotests/147 | 11 +-
> tests/qemu-iotests/148 | 5 +-
> tests/qemu-iotests/151 | 10 +-
> tests/qemu-iotests/152 | 6 +-
> tests/qemu-iotests/155 | 29 +++--
> tests/qemu-iotests/163 | 29 ++---
> tests/qemu-iotests/165 | 10 +-
> tests/qemu-iotests/169 | 23 ++--
> tests/qemu-iotests/194 | 9 +-
> tests/qemu-iotests/196 | 10 +-
> tests/qemu-iotests/199 | 10 +-
> tests/qemu-iotests/202 | 9 +-
> tests/qemu-iotests/203 | 9 +-
> tests/qemu-iotests/205 | 7 +-
> tests/qemu-iotests/206 | 5 +-
> tests/qemu-iotests/208 | 5 +-
> tests/qemu-iotests/209 | 9 +-
> tests/qemu-iotests/216 | 11 +-
> tests/qemu-iotests/218 | 6 +-
> tests/qemu-iotests/219 | 5 +-
> tests/qemu-iotests/222 | 13 +--
> tests/qemu-iotests/224 | 33 +++---
> tests/qemu-iotests/224.out | 4 +-
> tests/qemu-iotests/228 | 25 ++---
> tests/qemu-iotests/228.out | 8 +-
> tests/qemu-iotests/234 | 9 +-
> tests/qemu-iotests/235 | 7 +-
> tests/qemu-iotests/236 | 6 +-
> tests/qemu-iotests/237 | 15 +--
> tests/qemu-iotests/237.out | 6 --
> tests/qemu-iotests/242 | 21 ++--
> tests/qemu-iotests/242.out | 5 -
> tests/qemu-iotests/245 | 21 ++--
> tests/qemu-iotests/246 | 11 +-
> tests/qemu-iotests/248 | 14 ++-
> tests/qemu-iotests/254 | 10 +-
> tests/qemu-iotests/255 | 20 ++--
> tests/qemu-iotests/255.out | 8 --
> tests/qemu-iotests/256 | 10 +-
> tests/qemu-iotests/257 | 18 ++--
> tests/qemu-iotests/258 | 16 +--
> tests/qemu-iotests/262 | 5 +-
> tests/qemu-iotests/iotests.py | 197 +++++++++++++++++++++++++++-------
> 58 files changed, 654 insertions(+), 496 deletions(-)
>
- [PATCH 59/67] iotests/248: Honor $IMGOPTS, (continued)
- [PATCH 59/67] iotests/248: Honor $IMGOPTS, Max Reitz, 2019/10/01
- [PATCH 58/67] iotests/246: Honor $IMGOPTS, Max Reitz, 2019/10/01
- [PATCH 60/67] iotests/254: Honor $IMGOPTS, Max Reitz, 2019/10/01
- [PATCH 61/67] iotests/255: Honor $IMGOPTS, Max Reitz, 2019/10/01
- [PATCH 62/67] iotests/256: Honor $IMGOPTS, Max Reitz, 2019/10/01
- [PATCH 65/67] iotests/262: Honor $IMGOPTS, Max Reitz, 2019/10/01
- [PATCH 63/67] iotests/257: Honor $IMGOPTS, Max Reitz, 2019/10/01
- [PATCH 64/67] iotests/258: Honor $IMGOPTS, Max Reitz, 2019/10/01
- [PATCH 66/67] iotests.py: Forbid qemu_img*('create', ...), Max Reitz, 2019/10/01
- [PATCH 67/67] iotests.py: Drop qemu_img_log(), qemu_img_create(), Max Reitz, 2019/10/01
- Re: [PATCH 00/67] iotests: Honor $IMGOPTS in Python tests,
John Snow <=