[PATCH v4 00/54] tests/qtest: Enable running qtest on Windows

Bin Meng posted 54 patches 1 year, 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220927110632.1973965-1-bmeng.cn@gmail.com
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, "Philippe Mathieu-Daudé" <f4bug@amsat.org>, Thomas Huth <thuth@redhat.com>, Wainer dos Santos Moschetta <wainersm@redhat.com>, Beraldo Leal <bleal@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, Greg Kurz <groug@kaod.org>, Christian Schoenebeck <qemu_oss@crudebyte.com>, Gerd Hoffmann <kraxel@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Yanan Wang <wangyanan55@huawei.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, John Snow <jsnow@redhat.com>, "Cédric Le Goater" <clg@kaod.org>, Peter Maydell <peter.maydell@linaro.org>, Andrew Jeffery <andrew@aj.id.au>, Joel Stanley <joel@jms.id.au>, "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <ani@anisinha.ca>, Alexander Bulekov <alxndr@bu.edu>, Bandan Das <bsd@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, Darren Kenny <darren.kenny@oracle.com>, Qiuhao Li <Qiuhao.Li@outlook.com>, Juan Quintela <quintela@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Markus Armbruster <armbru@redhat.com>, Coiby Xu <Coiby.Xu@gmail.com>, Jason Wang <jasowang@redhat.com>, Fam Zheng <fam@euphon.net>, Michael Roth <michael.roth@amd.com>, Konstantin Kostiuk <kkostiuk@redhat.com>
There is a newer version of this series
docs/devel/testing.rst                  |  30 +++++
include/hw/core/cpu.h                   |   1 +
include/qemu/sockets.h                  |   2 +
tests/qtest/fuzz/generic_fuzz_configs.h |   4 +-
tests/qtest/libqtest-single.h           |   4 +
tests/qtest/libqtest.h                  |   8 ++
accel/dummy-cpus.c                      |  15 +--
block/vvfat.c                           |   9 +-
fsdev/virtfs-proxy-helper.c             |   3 +-
hw/usb/dev-mtp.c                        |   4 +-
io/channel-watch.c                      |  12 +-
semihosting/arm-compat-semi.c           |   3 +-
softmmu/cpus.c                          |  10 +-
tcg/tcg.c                               |   3 +-
tests/qtest/ahci-test.c                 |  36 ++++--
tests/qtest/aspeed_smc-test.c           |   5 +-
tests/qtest/bios-tables-test.c          |  12 +-
tests/qtest/boot-serial-test.c          |  11 +-
tests/qtest/cxl-test.c                  |  15 +--
tests/qtest/fdc-test.c                  |   5 +-
tests/qtest/fuzz/virtio_blk_fuzz.c      |   4 +-
tests/qtest/hd-geo-test.c               |  24 ++--
tests/qtest/i440fx-test.c               |  54 +++-----
tests/qtest/ide-test.c                  |  30 ++++-
tests/qtest/libqmp.c                    |   5 +-
tests/qtest/libqtest.c                  | 157 ++++++++++++++++++++----
tests/qtest/microbit-test.c             |  10 +-
tests/qtest/migration-test.c            |  38 +++++-
tests/qtest/pflash-cfi02-test.c         |  15 ++-
tests/qtest/qmp-test.c                  |  17 ++-
tests/qtest/vhost-user-blk-test.c       |   3 +-
tests/qtest/vhost-user-test.c           |  10 +-
tests/qtest/virtio-blk-test.c           |   4 +-
tests/qtest/virtio-net-failover.c       |   9 +-
tests/qtest/virtio-net-test.c           |  13 +-
tests/qtest/virtio-scsi-test.c          |   4 +-
tests/unit/test-image-locking.c         |   8 +-
tests/unit/test-qga.c                   |   2 +-
tests/vhost-user-bridge.c               |   3 +-
util/osdep.c                            |  33 +++++
util/qemu-sockets.c                     |   5 +-
.gitlab-ci.d/windows.yml                |   8 +-
accel/meson.build                       |   1 +
accel/qtest/meson.build                 |   1 +
tests/qtest/meson.build                 |  42 +++----
45 files changed, 452 insertions(+), 240 deletions(-)
[PATCH v4 00/54] tests/qtest: Enable running qtest on Windows
Posted by Bin Meng 1 year, 7 months ago
In preparation to adding virtio-9p support on Windows, this series
enables running qtest on Windows, so that we can run the virtio-9p
tests on Windows to make sure it does not break accidently.

Changes in v4:
- Do not use g_autofree and g_steal_pointer
- Update the error reporting by using the GError "error" argument
  of g_dir_make_tmp()
- Remove the const from tmpfs declaration
- Replace the whole block with a g_assert_no_error()
- Replace the error reporting with g_assert_no_error()
- Update error reporting
- Move the new text section after the "QTest" section instead
- Use plural in both cases: "on POSIX hosts as well as Windows hosts"
- Use "The following list shows some best practices"
- Fix typo of delimiter
- New patch: "tests/qtest: boot-serial-test: Close the serial file before starting QEMU"
- Drop patch: "chardev/char-file: Add FILE_SHARE_WRITE when openning the file for win32"

Changes in v3:
- Remove unnecessary "error = NULL" statements
- Split to a separate patch
- Ensure g_autofree variable is initialized
- Split to a separate patch
- Ensure g_autofree variable is initialized
- Split to a separate patch
- Ensure g_autofree variable is initialized
- Split to a separate patch
- Ensure g_autofree variable is initialized
- Split to a separate patch
- Split to a separate patch
- Split to a separate patch
- Split to a separate patch
- Ensure g_autofree variable is initialized
- Use g_steal_pointer() in create_test_img()
- Split to a separate patch
- Split to a separate patch
- Split to a separate patch
- Split to a separate patch
- Split to a separate patch
- Split to a separate patch
- Ensure g_autofree variable is initialized
- Split to a separate patch
- Split to a separate patch
- Ensure g_autofree variable is initialized
- Split to a separate patch
- Ensure g_autofree variable is initialized
- Split to a separate patch
- Ensure g_autofree variable is initialized
- Split to a separate patch
- Split to a separate patch
- Add a usleep(1) in the busy wait loop
- Drop the host test
- Drop patch: "tests: Change to use g_mkdir()"
- Drop patch: "block: Unify the get_tmp_filename() implementation",
  and send it as a separate patch

Changes in v2:
- new patch: "tests/qtest: i440fx-test: Rewrite create_blob_file() to be portable"
- Use g_autofree to declare the variable
- Change to use g_mkdir()
- Change to use g_mkdir()
- Change to use g_mkdir()
- Change to skip only part of the virtio-net-test cases that require
  socketpair() intead of disabling all of them
- Introduce a new variable qtests_filter and add that to the
  qtests_ARCH variables
- Add a comment in the code to explain why test_qmp_oob test case
  is skipped on win32
- Replace signal by the semaphore on posix too
- Use __declspec(selectany) for the common weak symbol on Windows
- Introduce qemu_send_full() and use it
- Move the enabling of building qtests on Windows to a separate
  patch to keep bisectablity
- Call socket_init() unconditionally
- Add a missing CloseHandle() call
- Drop ahci-test.c changes that are no longer needed
- Change the place that sets IO redirection in the command line
- Change to a busy wait after migration is canceled
- new patch: "io/channel-watch: Drop the unnecessary cast"
- Change the timeout limit to 90 minutes
- new patch: Display meson test logs in the Windows CI
- new patch: "tests/qtest: Enable qtest build on Windows"
- Minor wording changes
- Drop patches that were already applied in the mainline
- Drop patch: "qga/commands-posix-ssh: Use g_mkdir_with_parents()"
- Drop patch: "tests: Skip iotests and qtest when '--without-default-devices'"
- Drop patch: "tests/qtest: Fix ERROR_SHARING_VIOLATION for win32"

Bin Meng (48):
  tests/qtest: i440fx-test: Rewrite create_blob_file() to be portable
  semihosting/arm-compat-semi: Avoid using hardcoded /tmp
  tcg: Avoid using hardcoded /tmp
  util/qemu-sockets: Use g_get_tmp_dir() to get the directory for
    temporary files
  tests/qtest: ahci-test: Avoid using hardcoded /tmp
  tests/qtest: aspeed_smc-test: Avoid using hardcoded /tmp
  tests/qtest: boot-serial-test: Avoid using hardcoded /tmp
  tests/qtest: cxl-test: Avoid using hardcoded /tmp
  tests/qtest: fdc-test: Avoid using hardcoded /tmp
  tests/qtest: generic_fuzz: Avoid using hardcoded /tmp
  tests/qtest: virtio_blk_fuzz: Avoid using hardcoded /tmp
  tests/qtest: hd-geo-test: Avoid using hardcoded /tmp
  tests/qtest: ide-test: Avoid using hardcoded /tmp
  tests/qtest: migration-test: Avoid using hardcoded /tmp
  tests/qtest: pflash-cfi02-test: Avoid using hardcoded /tmp
  tests/qtest: qmp-test: Avoid using hardcoded /tmp
  tests/qtest: vhost-user-blk-test: Avoid using hardcoded /tmp
  tests/qtest: vhost-user-test: Avoid using hardcoded /tmp
  tests/qtest: virtio-blk-test: Avoid using hardcoded /tmp
  tests/qtest: virtio-scsi-test: Avoid using hardcoded /tmp
  tests/qtest: libqtest: Avoid using hardcoded /tmp
  tests/unit: test-image-locking: Avoid using hardcoded /tmp
  tests/unit: test-qga: Avoid using hardcoded /tmp
  tests: vhost-user-bridge: Avoid using hardcoded /tmp
  block/vvfat: Unify the mkdir() call
  fsdev/virtfs-proxy-helper: Use g_mkdir()
  hw/usb: dev-mtp: Use g_mkdir()
  tests/qtest: Skip running virtio-net-test cases that require
    socketpair() for win32
  tests/qtest: Build test-filter-{mirror,redirector} cases for posix
    only
  tests/qtest: qmp-test: Skip running test_qmp_oob for win32
  tests/qtest: libqtest: Exclude the *_fds APIs for win32
  tests/qtest: libqtest: Install signal handler via signal()
  tests/qtest: Support libqtest to build and run on Windows
  tests/qtest: {ahci,ide}-test: Use relative path for temporary files
    for win32
  tests/qtest: bios-tables-test: Adapt the case for win32
  tests/qtest: boot-serial-test: Close the serial file before starting
    QEMU
  tests/qtest: microbit-test: Fix socket access for win32
  tests/qtest: migration-test: Disable IO redirection for win32
  tests/qtest: libqtest: Replace the call to close a socket with
    closesocket()
  tests/qtest: libqtest: Correct the timeout unit of blocking receive
    calls for win32
  io/channel-watch: Drop a superfluous '#ifdef WIN32'
  io/channel-watch: Drop the unnecessary cast
  io/channel-watch: Fix socket watch on Windows
  tests/qtest: migration-test: Skip running some TLS cases for win32
  .gitlab-ci.d/windows.yml: Increase the timeout to 90 minutes
  .gitlab-ci.d/windows.yml: Display meson test logs
  tests/qtest: Enable qtest build on Windows
  docs/devel: testing: Document writing portable test cases

Xuzhou Cheng (6):
  accel/qtest: Implement a portable qtest accelerator
  tests/qtest: libqtest: Adapt global_qtest declaration for win32
  tests/qtest: Use send/recv for socket communication
  tests/qtest: ide-test: Open file in binary mode
  tests/qtest: migration-test: Make sure QEMU process "to" exited after
    migration is canceled
  tests/qtest: virtio-net-failover: Disable migration tests for win32

 docs/devel/testing.rst                  |  30 +++++
 include/hw/core/cpu.h                   |   1 +
 include/qemu/sockets.h                  |   2 +
 tests/qtest/fuzz/generic_fuzz_configs.h |   4 +-
 tests/qtest/libqtest-single.h           |   4 +
 tests/qtest/libqtest.h                  |   8 ++
 accel/dummy-cpus.c                      |  15 +--
 block/vvfat.c                           |   9 +-
 fsdev/virtfs-proxy-helper.c             |   3 +-
 hw/usb/dev-mtp.c                        |   4 +-
 io/channel-watch.c                      |  12 +-
 semihosting/arm-compat-semi.c           |   3 +-
 softmmu/cpus.c                          |  10 +-
 tcg/tcg.c                               |   3 +-
 tests/qtest/ahci-test.c                 |  36 ++++--
 tests/qtest/aspeed_smc-test.c           |   5 +-
 tests/qtest/bios-tables-test.c          |  12 +-
 tests/qtest/boot-serial-test.c          |  11 +-
 tests/qtest/cxl-test.c                  |  15 +--
 tests/qtest/fdc-test.c                  |   5 +-
 tests/qtest/fuzz/virtio_blk_fuzz.c      |   4 +-
 tests/qtest/hd-geo-test.c               |  24 ++--
 tests/qtest/i440fx-test.c               |  54 +++-----
 tests/qtest/ide-test.c                  |  30 ++++-
 tests/qtest/libqmp.c                    |   5 +-
 tests/qtest/libqtest.c                  | 157 ++++++++++++++++++++----
 tests/qtest/microbit-test.c             |  10 +-
 tests/qtest/migration-test.c            |  38 +++++-
 tests/qtest/pflash-cfi02-test.c         |  15 ++-
 tests/qtest/qmp-test.c                  |  17 ++-
 tests/qtest/vhost-user-blk-test.c       |   3 +-
 tests/qtest/vhost-user-test.c           |  10 +-
 tests/qtest/virtio-blk-test.c           |   4 +-
 tests/qtest/virtio-net-failover.c       |   9 +-
 tests/qtest/virtio-net-test.c           |  13 +-
 tests/qtest/virtio-scsi-test.c          |   4 +-
 tests/unit/test-image-locking.c         |   8 +-
 tests/unit/test-qga.c                   |   2 +-
 tests/vhost-user-bridge.c               |   3 +-
 util/osdep.c                            |  33 +++++
 util/qemu-sockets.c                     |   5 +-
 .gitlab-ci.d/windows.yml                |   8 +-
 accel/meson.build                       |   1 +
 accel/qtest/meson.build                 |   1 +
 tests/qtest/meson.build                 |  42 +++----
 45 files changed, 452 insertions(+), 240 deletions(-)

-- 
2.34.1
Re: [PATCH v4 00/54] tests/qtest: Enable running qtest on Windows
Posted by Thomas Huth 1 year, 7 months ago
On 27/09/2022 13.05, Bin Meng wrote:
> In preparation to adding virtio-9p support on Windows, this series
> enables running qtest on Windows, so that we can run the virtio-9p
> tests on Windows to make sure it does not break accidently.

Thanks for your patches - I've picked many of them for my pull request that 
I sent out earlier today, so you don't have to carry them along anymore once 
the PR got merged.

For the patches that are not directly related to tests/ ... could you maybe 
ask the corresponding maintainers to pick those up? I'm not sure whether 
they should go through my testing branch, too...

Anyway, there seems to be one more issue: The migration test sometimes seems 
to be failing on aarch64 with all your patches applied:

87/470 qemu:qtest+qtest-aarch64 / qtest-aarch64/migration-test 
             ERROR          261.71s   killed by signal 6 SIGABRT
 >>> MALLOC_PERTURB_=171 QTEST_QEMU_BINARY=./qemu-system-aarch64 
QTEST_QEMU_IMG=./qemu-img 
G_TEST_DBUS_DAEMON=/home/thuth/devel/qemu/tests/dbus-vmstate-daemon.sh 
QTEST_QEMU_STORAGE_DAEMON_BINARY=./storage-daemon/qemu-storage-daemon 
/home/thuth/tmp/qemu-build/tests/qtest/migration-test --tap -k
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
stderr:
**
ERROR:../../devel/qemu/tests/qtest/migration-helpers.c:205:wait_for_migration_status: 
assertion failed: (g_test_timer_elapsed() < MIGRATION_STATUS_WAIT_TIMEOUT)
../../devel/qemu/tests/qtest/libqtest.c:201: kill_qemu() tried to terminate 
QEMU process but encountered exit status 1 (expected 0)

(test program exited with status code -6)
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

Not sure whether it's really related to your patches or whether it's 
something else that has been merged recently, I'm having problems to 
reproduce it reliably, but it's definitely something we should keep an eye on...

  Thomas


Re: [PATCH v4 00/54] tests/qtest: Enable running qtest on Windows
Posted by Thomas Huth 1 year, 7 months ago
On 28/09/2022 12.31, Thomas Huth wrote:
> On 27/09/2022 13.05, Bin Meng wrote:
>> In preparation to adding virtio-9p support on Windows, this series
>> enables running qtest on Windows, so that we can run the virtio-9p
>> tests on Windows to make sure it does not break accidently.
> 
> Thanks for your patches - I've picked many of them for my pull request that 
> I sent out earlier today, so you don't have to carry them along anymore once 
> the PR got merged.
> 
> For the patches that are not directly related to tests/ ... could you maybe 
> ask the corresponding maintainers to pick those up? I'm not sure whether 
> they should go through my testing branch, too...
> 
> Anyway, there seems to be one more issue: The migration test sometimes seems 
> to be failing on aarch64 with all your patches applied:
> 
> 87/470 qemu:qtest+qtest-aarch64 / qtest-aarch64/migration-test             
> ERROR          261.71s   killed by signal 6 SIGABRT
>  >>> MALLOC_PERTURB_=171 QTEST_QEMU_BINARY=./qemu-system-aarch64 
> QTEST_QEMU_IMG=./qemu-img 
> G_TEST_DBUS_DAEMON=/home/thuth/devel/qemu/tests/dbus-vmstate-daemon.sh 
> QTEST_QEMU_STORAGE_DAEMON_BINARY=./storage-daemon/qemu-storage-daemon 
> /home/thuth/tmp/qemu-build/tests/qtest/migration-test --tap -k
> ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
> stderr:
> **
> ERROR:../../devel/qemu/tests/qtest/migration-helpers.c:205:wait_for_migration_status: 
> assertion failed: (g_test_timer_elapsed() < MIGRATION_STATUS_WAIT_TIMEOUT)
> ../../devel/qemu/tests/qtest/libqtest.c:201: kill_qemu() tried to terminate 
> QEMU process but encountered exit status 1 (expected 0)
> 
> (test program exited with status code -6)
> ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
> 
> Not sure whether it's really related to your patches or whether it's 
> something else that has been merged recently, I'm having problems to 
> reproduce it reliably, but it's definitely something we should keep an eye 
> on...

Seems like somebody also ran into this issue with a vanilla QEMU:

  https://gitlab.com/qemu-project/qemu/-/issues/1230

So it's not related to your patch series.

  Thomas



Re: [PATCH v4 00/54] tests/qtest: Enable running qtest on Windows
Posted by Daniel P. Berrangé 1 year, 7 months ago
On Wed, Sep 28, 2022 at 05:24:56PM +0200, Thomas Huth wrote:
> On 28/09/2022 12.31, Thomas Huth wrote:
> > On 27/09/2022 13.05, Bin Meng wrote:
> > > In preparation to adding virtio-9p support on Windows, this series
> > > enables running qtest on Windows, so that we can run the virtio-9p
> > > tests on Windows to make sure it does not break accidently.
> > 
> > Thanks for your patches - I've picked many of them for my pull request
> > that I sent out earlier today, so you don't have to carry them along
> > anymore once the PR got merged.
> > 
> > For the patches that are not directly related to tests/ ... could you
> > maybe ask the corresponding maintainers to pick those up? I'm not sure
> > whether they should go through my testing branch, too...
> > 
> > Anyway, there seems to be one more issue: The migration test sometimes
> > seems to be failing on aarch64 with all your patches applied:
> > 
> > 87/470 qemu:qtest+qtest-aarch64 / qtest-aarch64/migration-test
> > ERROR          261.71s   killed by signal 6 SIGABRT
> >  >>> MALLOC_PERTURB_=171 QTEST_QEMU_BINARY=./qemu-system-aarch64
> > QTEST_QEMU_IMG=./qemu-img
> > G_TEST_DBUS_DAEMON=/home/thuth/devel/qemu/tests/dbus-vmstate-daemon.sh
> > QTEST_QEMU_STORAGE_DAEMON_BINARY=./storage-daemon/qemu-storage-daemon
> > /home/thuth/tmp/qemu-build/tests/qtest/migration-test --tap -k
> > ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
> > stderr:
> > **
> > ERROR:../../devel/qemu/tests/qtest/migration-helpers.c:205:wait_for_migration_status:
> > assertion failed: (g_test_timer_elapsed() <
> > MIGRATION_STATUS_WAIT_TIMEOUT)
> > ../../devel/qemu/tests/qtest/libqtest.c:201: kill_qemu() tried to
> > terminate QEMU process but encountered exit status 1 (expected 0)
> > 
> > (test program exited with status code -6)
> > ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
> > 
> > Not sure whether it's really related to your patches or whether it's
> > something else that has been merged recently, I'm having problems to
> > reproduce it reliably, but it's definitely something we should keep an
> > eye on...
> 
> Seems like somebody also ran into this issue with a vanilla QEMU:
> 
>  https://gitlab.com/qemu-project/qemu/-/issues/1230
> 
> So it's not related to your patch series.

This status timeout was something we merged in last cycle. We've
long had wierd hangs in the migration tests and this timeout change
was an attempt to turn the test suite hangs into explicit failures
for greater visibility. I guess this is working as intended, but
we're not really closer to understanding what the root problem is
we're hitting.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Re: [PATCH v4 00/54] tests/qtest: Enable running qtest on Windows
Posted by Marc-André Lureau 1 year, 7 months ago
Hi Bin

On Tue, Sep 27, 2022 at 3:18 PM Bin Meng <bmeng.cn@gmail.com> wrote:

> In preparation to adding virtio-9p support on Windows, this series
> enables running qtest on Windows, so that we can run the virtio-9p
> tests on Windows to make sure it does not break accidently.
>
> Changes in v4:
> - Do not use g_autofree and g_steal_pointer
> - Update the error reporting by using the GError "error" argument
>   of g_dir_make_tmp()
> - Remove the const from tmpfs declaration
> - Replace the whole block with a g_assert_no_error()
> - Replace the error reporting with g_assert_no_error()
> - Update error reporting
> - Move the new text section after the "QTest" section instead
> - Use plural in both cases: "on POSIX hosts as well as Windows hosts"
> - Use "The following list shows some best practices"
> - Fix typo of delimiter
> - New patch: "tests/qtest: boot-serial-test: Close the serial file before
> starting QEMU"
> - Drop patch: "chardev/char-file: Add FILE_SHARE_WRITE when openning the
> file for win32"
>
>
Could you post a v5 rebased on the current master? thanks

(I think most of the remaining patches are simple enough that I could take
them in a misc PR if they are not picked by subsystem maintainers)

Changes in v3:
> - Remove unnecessary "error = NULL" statements
> - Split to a separate patch
> - Ensure g_autofree variable is initialized
> - Split to a separate patch
> - Ensure g_autofree variable is initialized
> - Split to a separate patch
> - Ensure g_autofree variable is initialized
> - Split to a separate patch
> - Ensure g_autofree variable is initialized
> - Split to a separate patch
> - Split to a separate patch
> - Split to a separate patch
> - Split to a separate patch
> - Ensure g_autofree variable is initialized
> - Use g_steal_pointer() in create_test_img()
> - Split to a separate patch
> - Split to a separate patch
> - Split to a separate patch
> - Split to a separate patch
> - Split to a separate patch
> - Split to a separate patch
> - Ensure g_autofree variable is initialized
> - Split to a separate patch
> - Split to a separate patch
> - Ensure g_autofree variable is initialized
> - Split to a separate patch
> - Ensure g_autofree variable is initialized
> - Split to a separate patch
> - Ensure g_autofree variable is initialized
> - Split to a separate patch
> - Split to a separate patch
> - Add a usleep(1) in the busy wait loop
> - Drop the host test
> - Drop patch: "tests: Change to use g_mkdir()"
> - Drop patch: "block: Unify the get_tmp_filename() implementation",
>   and send it as a separate patch
>
> Changes in v2:
> - new patch: "tests/qtest: i440fx-test: Rewrite create_blob_file() to be
> portable"
> - Use g_autofree to declare the variable
> - Change to use g_mkdir()
> - Change to use g_mkdir()
> - Change to use g_mkdir()
> - Change to skip only part of the virtio-net-test cases that require
>   socketpair() intead of disabling all of them
> - Introduce a new variable qtests_filter and add that to the
>   qtests_ARCH variables
> - Add a comment in the code to explain why test_qmp_oob test case
>   is skipped on win32
> - Replace signal by the semaphore on posix too
> - Use __declspec(selectany) for the common weak symbol on Windows
> - Introduce qemu_send_full() and use it
> - Move the enabling of building qtests on Windows to a separate
>   patch to keep bisectablity
> - Call socket_init() unconditionally
> - Add a missing CloseHandle() call
> - Drop ahci-test.c changes that are no longer needed
> - Change the place that sets IO redirection in the command line
> - Change to a busy wait after migration is canceled
> - new patch: "io/channel-watch: Drop the unnecessary cast"
> - Change the timeout limit to 90 minutes
> - new patch: Display meson test logs in the Windows CI
> - new patch: "tests/qtest: Enable qtest build on Windows"
> - Minor wording changes
> - Drop patches that were already applied in the mainline
> - Drop patch: "qga/commands-posix-ssh: Use g_mkdir_with_parents()"
> - Drop patch: "tests: Skip iotests and qtest when
> '--without-default-devices'"
> - Drop patch: "tests/qtest: Fix ERROR_SHARING_VIOLATION for win32"
>
> Bin Meng (48):
>   tests/qtest: i440fx-test: Rewrite create_blob_file() to be portable
>   semihosting/arm-compat-semi: Avoid using hardcoded /tmp
>   tcg: Avoid using hardcoded /tmp
>   util/qemu-sockets: Use g_get_tmp_dir() to get the directory for
>     temporary files
>   tests/qtest: ahci-test: Avoid using hardcoded /tmp
>   tests/qtest: aspeed_smc-test: Avoid using hardcoded /tmp
>   tests/qtest: boot-serial-test: Avoid using hardcoded /tmp
>   tests/qtest: cxl-test: Avoid using hardcoded /tmp
>   tests/qtest: fdc-test: Avoid using hardcoded /tmp
>   tests/qtest: generic_fuzz: Avoid using hardcoded /tmp
>   tests/qtest: virtio_blk_fuzz: Avoid using hardcoded /tmp
>   tests/qtest: hd-geo-test: Avoid using hardcoded /tmp
>   tests/qtest: ide-test: Avoid using hardcoded /tmp
>   tests/qtest: migration-test: Avoid using hardcoded /tmp
>   tests/qtest: pflash-cfi02-test: Avoid using hardcoded /tmp
>   tests/qtest: qmp-test: Avoid using hardcoded /tmp
>   tests/qtest: vhost-user-blk-test: Avoid using hardcoded /tmp
>   tests/qtest: vhost-user-test: Avoid using hardcoded /tmp
>   tests/qtest: virtio-blk-test: Avoid using hardcoded /tmp
>   tests/qtest: virtio-scsi-test: Avoid using hardcoded /tmp
>   tests/qtest: libqtest: Avoid using hardcoded /tmp
>   tests/unit: test-image-locking: Avoid using hardcoded /tmp
>   tests/unit: test-qga: Avoid using hardcoded /tmp
>   tests: vhost-user-bridge: Avoid using hardcoded /tmp
>   block/vvfat: Unify the mkdir() call
>   fsdev/virtfs-proxy-helper: Use g_mkdir()
>   hw/usb: dev-mtp: Use g_mkdir()
>   tests/qtest: Skip running virtio-net-test cases that require
>     socketpair() for win32
>   tests/qtest: Build test-filter-{mirror,redirector} cases for posix
>     only
>   tests/qtest: qmp-test: Skip running test_qmp_oob for win32
>   tests/qtest: libqtest: Exclude the *_fds APIs for win32
>   tests/qtest: libqtest: Install signal handler via signal()
>   tests/qtest: Support libqtest to build and run on Windows
>   tests/qtest: {ahci,ide}-test: Use relative path for temporary files
>     for win32
>   tests/qtest: bios-tables-test: Adapt the case for win32
>   tests/qtest: boot-serial-test: Close the serial file before starting
>     QEMU
>   tests/qtest: microbit-test: Fix socket access for win32
>   tests/qtest: migration-test: Disable IO redirection for win32
>   tests/qtest: libqtest: Replace the call to close a socket with
>     closesocket()
>   tests/qtest: libqtest: Correct the timeout unit of blocking receive
>     calls for win32
>   io/channel-watch: Drop a superfluous '#ifdef WIN32'
>   io/channel-watch: Drop the unnecessary cast
>   io/channel-watch: Fix socket watch on Windows
>   tests/qtest: migration-test: Skip running some TLS cases for win32
>   .gitlab-ci.d/windows.yml: Increase the timeout to 90 minutes
>   .gitlab-ci.d/windows.yml: Display meson test logs
>   tests/qtest: Enable qtest build on Windows
>   docs/devel: testing: Document writing portable test cases
>
> Xuzhou Cheng (6):
>   accel/qtest: Implement a portable qtest accelerator
>   tests/qtest: libqtest: Adapt global_qtest declaration for win32
>   tests/qtest: Use send/recv for socket communication
>   tests/qtest: ide-test: Open file in binary mode
>   tests/qtest: migration-test: Make sure QEMU process "to" exited after
>     migration is canceled
>   tests/qtest: virtio-net-failover: Disable migration tests for win32
>
>  docs/devel/testing.rst                  |  30 +++++
>  include/hw/core/cpu.h                   |   1 +
>  include/qemu/sockets.h                  |   2 +
>  tests/qtest/fuzz/generic_fuzz_configs.h |   4 +-
>  tests/qtest/libqtest-single.h           |   4 +
>  tests/qtest/libqtest.h                  |   8 ++
>  accel/dummy-cpus.c                      |  15 +--
>  block/vvfat.c                           |   9 +-
>  fsdev/virtfs-proxy-helper.c             |   3 +-
>  hw/usb/dev-mtp.c                        |   4 +-
>  io/channel-watch.c                      |  12 +-
>  semihosting/arm-compat-semi.c           |   3 +-
>  softmmu/cpus.c                          |  10 +-
>  tcg/tcg.c                               |   3 +-
>  tests/qtest/ahci-test.c                 |  36 ++++--
>  tests/qtest/aspeed_smc-test.c           |   5 +-
>  tests/qtest/bios-tables-test.c          |  12 +-
>  tests/qtest/boot-serial-test.c          |  11 +-
>  tests/qtest/cxl-test.c                  |  15 +--
>  tests/qtest/fdc-test.c                  |   5 +-
>  tests/qtest/fuzz/virtio_blk_fuzz.c      |   4 +-
>  tests/qtest/hd-geo-test.c               |  24 ++--
>  tests/qtest/i440fx-test.c               |  54 +++-----
>  tests/qtest/ide-test.c                  |  30 ++++-
>  tests/qtest/libqmp.c                    |   5 +-
>  tests/qtest/libqtest.c                  | 157 ++++++++++++++++++++----
>  tests/qtest/microbit-test.c             |  10 +-
>  tests/qtest/migration-test.c            |  38 +++++-
>  tests/qtest/pflash-cfi02-test.c         |  15 ++-
>  tests/qtest/qmp-test.c                  |  17 ++-
>  tests/qtest/vhost-user-blk-test.c       |   3 +-
>  tests/qtest/vhost-user-test.c           |  10 +-
>  tests/qtest/virtio-blk-test.c           |   4 +-
>  tests/qtest/virtio-net-failover.c       |   9 +-
>  tests/qtest/virtio-net-test.c           |  13 +-
>  tests/qtest/virtio-scsi-test.c          |   4 +-
>  tests/unit/test-image-locking.c         |   8 +-
>  tests/unit/test-qga.c                   |   2 +-
>  tests/vhost-user-bridge.c               |   3 +-
>  util/osdep.c                            |  33 +++++
>  util/qemu-sockets.c                     |   5 +-
>  .gitlab-ci.d/windows.yml                |   8 +-
>  accel/meson.build                       |   1 +
>  accel/qtest/meson.build                 |   1 +
>  tests/qtest/meson.build                 |  42 +++----
>  45 files changed, 452 insertions(+), 240 deletions(-)
>
> --
> 2.34.1
>
>
>

-- 
Marc-André Lureau
Re: [PATCH v4 00/54] tests/qtest: Enable running qtest on Windows
Posted by Bin Meng 1 year, 7 months ago
Hi Marc-André,

On Mon, Oct 3, 2022 at 5:26 PM Marc-André Lureau
<marcandre.lureau@gmail.com> wrote:
>
> Hi Bin
>
> On Tue, Sep 27, 2022 at 3:18 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>>
>> In preparation to adding virtio-9p support on Windows, this series
>> enables running qtest on Windows, so that we can run the virtio-9p
>> tests on Windows to make sure it does not break accidently.
>>
>> Changes in v4:
>> - Do not use g_autofree and g_steal_pointer
>> - Update the error reporting by using the GError "error" argument
>>   of g_dir_make_tmp()
>> - Remove the const from tmpfs declaration
>> - Replace the whole block with a g_assert_no_error()
>> - Replace the error reporting with g_assert_no_error()
>> - Update error reporting
>> - Move the new text section after the "QTest" section instead
>> - Use plural in both cases: "on POSIX hosts as well as Windows hosts"
>> - Use "The following list shows some best practices"
>> - Fix typo of delimiter
>> - New patch: "tests/qtest: boot-serial-test: Close the serial file before starting QEMU"
>> - Drop patch: "chardev/char-file: Add FILE_SHARE_WRITE when openning the file for win32"
>>
>
> Could you post a v5 rebased on the current master? thanks
>

Sure, will do.

> (I think most of the remaining patches are simple enough that I could take them in a misc PR if they are not picked by subsystem maintainers)

Thank you.

Regards,
Bin