From: Nicholas Piggin <npiggin@gmail.com>
To: Thomas Huth <thuth@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>,
linux-s390@vger.kernel.org, Nico Boehr <nrb@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
kvm@vger.kernel.org, David Hildenbrand <david@redhat.com>,
linuxppc-dev@lists.ozlabs.org,
Shaoqin Huang <shahuang@redhat.com>,
Nicholas Piggin <npiggin@gmail.com>,
Andrew Jones <andrew.jones@linux.dev>,
Eric Auger <eric.auger@redhat.com>,
kvmarm@lists.linux.dev, Paolo Bonzini <pbonzini@redhat.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
Alexandru Elisei <alexandru.elisei@arm.com>
Subject: [kvm-unit-tests PATCH 6/9] arch-run: rename migration variables
Date: Fri, 22 Dec 2023 23:50:45 +1000 [thread overview]
Message-ID: <20231222135048.1924672-7-npiggin@gmail.com> (raw)
In-Reply-To: <20231222135048.1924672-1-npiggin@gmail.com>
Using 1 and 2 for source and destination is confusing, particularly
now with multiple migrations that flip between them. Do a rename
pass to tidy things up.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
scripts/arch-run.bash | 112 +++++++++++++++++++++---------------------
1 file changed, 57 insertions(+), 55 deletions(-)
diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash
index 1ea0f8bc..0feaa190 100644
--- a/scripts/arch-run.bash
+++ b/scripts/arch-run.bash
@@ -129,38 +129,39 @@ run_migration ()
return 77
fi
- migsock=$(mktemp -u -t mig-helper-socket.XXXXXXXXXX)
- migout1=$(mktemp -t mig-helper-stdout1.XXXXXXXXXX)
- migout_fifo1=$(mktemp -u -t mig-helper-fifo-stdout1.XXXXXXXXXX)
- migout2=$(mktemp -t mig-helper-stdout2.XXXXXXXXXX)
- migout_fifo2=$(mktemp -u -t mig-helper-fifo-stdout2.XXXXXXXXXX)
- qmp1=$(mktemp -u -t mig-helper-qmp1.XXXXXXXXXX)
- qmp2=$(mktemp -u -t mig-helper-qmp2.XXXXXXXXXX)
- fifo=$(mktemp -u -t mig-helper-fifo.XXXXXXXXXX)
+ dst_incoming=$(mktemp -u -t mig-helper-socket-incoming.XXXXXXXXXX)
+ src_out=$(mktemp -t mig-helper-stdout1.XXXXXXXXXX)
+ src_outfifo=$(mktemp -u -t mig-helper-fifo-stdout1.XXXXXXXXXX)
+ dst_out=$(mktemp -t mig-helper-stdout2.XXXXXXXXXX)
+ dst_outfifo=$(mktemp -u -t mig-helper-fifo-stdout2.XXXXXXXXXX)
+ src_qmp=$(mktemp -u -t mig-helper-qmp1.XXXXXXXXXX)
+ dst_qmp=$(mktemp -u -t mig-helper-qmp2.XXXXXXXXXX)
+ dst_infifo=$(mktemp -u -t mig-helper-fifo-stdin.XXXXXXXXXX)
# race here between file creation and trap
trap "trap - TERM ; kill 0 ; exit 2" INT TERM
- trap "rm -f ${migout1} ${migout2} ${migout_fifo1} ${migout_fifo2} ${migsock} ${qmp1} ${qmp2} ${fifo}" RETURN EXIT
+ trap "rm -f ${src_out} ${dst_out} ${src_outfifo} ${dst_outfifo} ${dst_incoming} ${src_qmp} ${dst_qmp} ${dst_infifo}" RETURN EXIT
+
+ src_qmpout=/dev/null
+ dst_qmpout=/dev/null
- qmpout1=/dev/null
- qmpout2=/dev/null
migcmdline=$@
- mkfifo ${migout_fifo1}
- mkfifo ${migout_fifo2}
+ mkfifo ${src_outfifo}
+ mkfifo ${dst_outfifo}
eval "$migcmdline" \
- -chardev socket,id=mon1,path=${qmp1},server=on,wait=off \
- -mon chardev=mon1,mode=control > ${migout_fifo1} &
+ -chardev socket,id=mon,path=${src_qmp},server=on,wait=off \
+ -mon chardev=mon,mode=control > ${src_outfifo} &
live_pid=$!
- cat ${migout_fifo1} | tee ${migout1} &
+ cat ${src_outfifo} | tee ${src_out} &
# The test must prompt the user to migrate, so wait for the "migrate"
# keyword
- while ! grep -q -i "Now migrate the VM" < ${migout1} ; do
+ while ! grep -q -i "Now migrate the VM" < ${src_out} ; do
if ! ps -p ${live_pid} > /dev/null ; then
echo "ERROR: Test exit before migration point." >&2
- qmp ${qmp1} '"quit"'> ${qmpout1} 2>/dev/null
+ qmp ${src_qmp} '"quit"'> ${src_qmpout} 2>/dev/null
return 3
fi
sleep 0.1
@@ -173,7 +174,7 @@ run_migration ()
while ps -p ${live_pid} > /dev/null ; do
# Wait for EXIT or further migrations
- if ! grep -q -i "Now migrate the VM" < ${migout1} ; then
+ if ! grep -q -i "Now migrate the VM" < ${src_out} ; then
sleep 0.1
else
do_migration || return $?
@@ -195,79 +196,80 @@ do_migration ()
# We have to use cat to open the named FIFO, because named FIFO's,
# unlike pipes, will block on open() until the other end is also
# opened, and that totally breaks QEMU...
- mkfifo ${fifo}
+ mkfifo ${dst_infifo}
eval "$migcmdline" \
- -chardev socket,id=mon2,path=${qmp2},server=on,wait=off \
- -mon chardev=mon2,mode=control -incoming unix:${migsock} \
- < <(cat ${fifo}) > ${migout_fifo2} &
+ -chardev socket,id=mon,path=${dst_qmp},server=on,wait=off \
+ -mon chardev=mon,mode=control -incoming unix:${dst_incoming} \
+ < <(cat ${dst_infifo}) > ${dst_outfifo} &
incoming_pid=$!
- cat ${migout_fifo2} | tee ${migout2} &
+ cat ${dst_outfifo} | tee ${dst_out} &
# The test must prompt the user to migrate, so wait for the "migrate" keyword
- while ! grep -q -i "Now migrate the VM" < ${migout1} ; do
+ while ! grep -q -i "Now migrate the VM" < ${src_out} ; do
if ! ps -p ${live_pid} > /dev/null ; then
echo "ERROR: Test exit before migration point." >&2
- echo > ${fifo}
- qmp ${qmp1} '"quit"'> ${qmpout1} 2>/dev/null
- qmp ${qmp2} '"quit"'> ${qmpout2} 2>/dev/null
+ echo > ${dst_infifo}
+ qmp ${src_qmp} '"quit"'> ${src_qmpout} 2>/dev/null
+ qmp ${dst_qmp} '"quit"'> ${dst_qmpout} 2>/dev/null
return 3
fi
sleep 0.1
done
# Wait until the destination has created the incoming and qmp sockets
- while ! [ -S ${migsock} ] ; do sleep 0.1 ; done
- while ! [ -S ${qmp2} ] ; do sleep 0.1 ; done
+ while ! [ -S ${dst_incoming} ] ; do sleep 0.1 ; done
+ while ! [ -S ${dst_qmp} ] ; do sleep 0.1 ; done
- qmp ${qmp1} '"migrate", "arguments": { "uri": "unix:'${migsock}'" }' > ${qmpout1}
+ qmp ${src_qmp} '"migrate", "arguments": { "uri": "unix:'${dst_incoming}'" }' > ${src_qmpout}
# Wait for the migration to complete
- migstatus=`qmp ${qmp1} '"query-migrate"' | grep return`
+ migstatus=`qmp ${src_qmp} '"query-migrate"' | grep return`
while ! grep -q '"completed"' <<<"$migstatus" ; do
sleep 0.1
- if ! migstatus=`qmp ${qmp1} '"query-migrate"'`; then
+ if ! migstatus=`qmp ${src_qmp} '"query-migrate"'`; then
echo "ERROR: Querying migration state failed." >&2
- echo > ${fifo}
- qmp ${qmp2} '"quit"'> ${qmpout2} 2>/dev/null
+ echo > ${dst_infifo}
+ qmp ${dst_qmp} '"quit"'> ${dst_qmpout} 2>/dev/null
return 2
fi
migstatus=`grep return <<<"$migstatus"`
if grep -q '"failed"' <<<"$migstatus"; then
echo "ERROR: Migration failed." >&2
- echo > ${fifo}
- qmp ${qmp1} '"quit"'> ${qmpout1} 2>/dev/null
- qmp ${qmp2} '"quit"'> ${qmpout2} 2>/dev/null
+ echo > ${dst_infifo}
+ qmp ${src_qmp} '"quit"'> ${src_qmpout} 2>/dev/null
+ qmp ${dst_qmp} '"quit"'> ${dst_qmpout} 2>/dev/null
return 2
fi
done
- qmp ${qmp1} '"quit"'> ${qmpout1} 2>/dev/null
+ qmp ${src_qmp} '"quit"'> ${src_qmpout} 2>/dev/null
# keypress to dst so getchar completes and test continues
- echo > ${fifo}
- rm ${fifo}
+ echo > ${dst_infifo}
+ rm ${dst_infifo}
# Ensure the incoming socket is removed, ready for next destination
- if [ -S ${migsock} ] ; then
+ if [ -S ${dst_incoming} ] ; then
echo "ERROR: Incoming migration socket not removed after migration." >& 2
- qmp ${qmp2} '"quit"'> ${qmpout2} 2>/dev/null
+ qmp ${dst_qmp} '"quit"'> ${dst_qmpout} 2>/dev/null
return 2
fi
wait ${live_pid}
ret=$?
- # Now flip the variables because dest becomes source
+ # Now flip the variables because destination machine becomes source
+ # for the next migration.
live_pid=${incoming_pid}
- tmp=${migout1}
- migout1=${migout2}
- migout2=${tmp}
- tmp=${migout_fifo1}
- migout_fifo1=${migout_fifo2}
- migout_fifo2=${tmp}
- tmp=${qmp1}
- qmp1=${qmp2}
- qmp2=${tmp}
+ tmp=${src_out}
+ src_out=${dst_out}
+ dst_out=${tmp}
+ tmp=${src_outfifo}
+ src_outfifo=${dst_outfifo}
+ dst_outfifo=${tmp}
+ tmp=${src_qmp}
+ src_qmp=${dst_qmp}
+ dst_qmp=${tmp}
return $ret
}
@@ -290,8 +292,8 @@ run_panic ()
trap "rm -f ${qmp}" RETURN EXIT
# start VM stopped so we don't miss any events
- eval "$@" -chardev socket,id=mon1,path=${qmp},server=on,wait=off \
- -mon chardev=mon1,mode=control -S &
+ eval "$@" -chardev socket,id=mon,path=${qmp},server=on,wait=off \
+ -mon chardev=mon,mode=control -S &
panic_event_count=$(qmp_events ${qmp} | jq -c 'select(.event == "GUEST_PANICKED")' | wc -l)
if [ "$panic_event_count" -lt 1 ]; then
--
2.42.0
next prev parent reply other threads:[~2023-12-22 13:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-22 13:50 [kvm-unit-tests PATCH 0/9] Multi-migration support Nicholas Piggin
2023-12-22 13:50 ` [kvm-unit-tests PATCH 1/9] s390x: clean lib/auxinfo.o Nicholas Piggin
2023-12-22 15:04 ` Claudio Imbrenda
2023-12-23 5:18 ` Nicholas Piggin
2023-12-22 13:50 ` [kvm-unit-tests PATCH 2/9] arch-run: Clean up temporary files properly Nicholas Piggin
2023-12-22 13:50 ` [kvm-unit-tests PATCH 3/9] arch-run: Clean up initrd cleanup Nicholas Piggin
2023-12-22 13:50 ` [kvm-unit-tests PATCH 4/9] migration: use a more robust way to wait for background job Nicholas Piggin
2023-12-22 13:50 ` [kvm-unit-tests PATCH 5/9] migration: Support multiple migrations Nicholas Piggin
2023-12-22 13:50 ` Nicholas Piggin [this message]
2023-12-22 13:50 ` [kvm-unit-tests PATCH 7/9] migration: Add quiet migration support Nicholas Piggin
2023-12-22 13:50 ` [kvm-unit-tests PATCH 8/9] Add common/ directory for architecture-independent tests Nicholas Piggin
2023-12-22 13:50 ` [kvm-unit-tests PATCH 9/9] migration: add a migration selftest Nicholas Piggin
2023-12-22 15:15 ` Claudio Imbrenda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231222135048.1924672-7-npiggin@gmail.com \
--to=npiggin@gmail.com \
--cc=alexandru.elisei@arm.com \
--cc=andrew.jones@linux.dev \
--cc=david@redhat.com \
--cc=eric.auger@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-s390@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lvivier@redhat.com \
--cc=nrb@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=shahuang@redhat.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).