From: David Gibson <david@gibson.dropbear.id.au>
To: passt-dev@passt.top
Subject: [PATCH v3 12/12] test: Move video processing files to $STATEBASE
Date: Thu, 08 Sep 2022 16:57:28 +1000 [thread overview]
Message-ID: <20220908065728.2631730-13-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20220908065728.2631730-1-david@gibson.dropbear.id.au>
[-- Attachment #1: Type: text/plain, Size: 3871 bytes --]
The asciinema video handling creates a number of temporary files (.uncat,
.start, .stop) which currently go into the source tree. Put them in the
temporary state directory to avoid clutter. Put the final processed video
into the test_logs/ directory, since it's essentially a test output
artefact.
Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au>
---
test/.gitignore | 3 ---
test/lib/term | 8 ++++----
test/lib/video | 19 ++++++++++---------
3 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/test/.gitignore b/test/.gitignore
index 0f91c7d..58c8cf2 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -6,9 +6,6 @@ QEMU_EFI.fd
*.qcow2
*.raw
*.raw.xz
-*.uncut
-*.start
-*.stop
*.js
nsholder
guest-key
diff --git a/test/lib/term b/test/lib/term
index d6869c7..5a391e6 100755
--- a/test/lib/term
+++ b/test/lib/term
@@ -643,12 +643,12 @@ run_term() {
if [ ${CI} -eq 1 ]; then
printf '\e[8;50;240t'
- asciinema rec --overwrite ci.uncut -c "$TMUX /bin/sh -c './ci from_term'"
- video_postprocess ci.uncut
+ asciinema rec --overwrite "${STATEBASE}/ci.uncut" -c "$TMUX /bin/sh -c './ci from_term'"
+ video_postprocess "${STATEBASE}/ci.uncut"
elif [ ${DEMO} -eq 1 ]; then
printf '\e[8;40;130t'
- asciinema rec --overwrite demo.uncut -c "$TMUX /bin/sh -c './run_demo from_term'"
- video_postprocess demo.uncut
+ asciinema rec --overwrite "${STATEBASE}/demo.uncut" -c "$TMUX /bin/sh -c './run_demo from_term'"
+ video_postprocess "${STATEBASE}/demo.uncut"
else
$TMUX /bin/sh -c './run from_term'
fi
diff --git a/test/lib/video b/test/lib/video
index f609abf..915a42f 100755
--- a/test/lib/video
+++ b/test/lib/video
@@ -77,8 +77,8 @@ video_start() {
VIDEO_START_SECONDS=$(sed -n 's/\([0-9]*\).[0-9]* [0-9]*.[0-9]*/\1/p' /proc/uptime)
sync
- [ ${DEMO} -eq 1 ] && tail -1 "${BASEPATH}/demo.uncut" > "${BASEPATH}/${VIDEO_NAME}.start"
- [ ${CI} -eq 1 ] && tail -1 "${BASEPATH}/ci.uncut" > "${BASEPATH}/${VIDEO_NAME}.start"
+ [ ${DEMO} -eq 1 ] && tail -1 "${STATEBASE}/demo.uncut" > "${STATEBASE}/${VIDEO_NAME}.start"
+ [ ${CI} -eq 1 ] && tail -1 "${STATEBASE}/ci.uncut" > "${STATEBASE}/${VIDEO_NAME}.start"
sync
tmux refresh-client
@@ -89,8 +89,8 @@ video_stop() {
tmux refresh-client
sync
- [ ${DEMO} -eq 1 ] && tail -1 "${BASEPATH}/demo.uncut" > "${BASEPATH}/${VIDEO_NAME}.stop"
- [ ${CI} -eq 1 ] && tail -1 "${BASEPATH}/ci.uncut" > "${BASEPATH}/${VIDEO_NAME}.stop"
+ [ ${DEMO} -eq 1 ] && tail -1 "${STATEBASE}/demo.uncut" > "${STATEBASE}/${VIDEO_NAME}.stop"
+ [ ${CI} -eq 1 ] && tail -1 "${STATEBASE}/ci.uncut" > "${STATEBASE}/${VIDEO_NAME}.stop"
sync
sed -i 's/^.*$/&\\/g' "${BASEPATH}/${VIDEO_NAME}.js"
@@ -108,12 +108,13 @@ video_postprocess() {
[ -z "${__header}" ] && __header="${__l}" && continue
if [ -z "${__cast_name}" ]; then
- for __cast_cut in *.start; do
+ for __cast_cut in "${STATEBASE}/"*.start; do
[ "${__l}" != "$(cat "${__cast_cut}")" ] && continue
- __cast_name="${__cast_cut%.start}"
+ __cast_name="$(basename "${__cast_cut}")"
+ __cast_name="${__cast_name%.start}"
__cast_offset=
- __stop_line="$(cat ${__cast_name}.stop)"
- echo "${__header}" > "${__cast_name}.cast"
+ __stop_line="$(cat "${STATEBASE}/${__cast_name}.stop")"
+ echo "${__header}" > "${LOGDIR}/${__cast_name}.cast"
break
done
continue
@@ -125,7 +126,7 @@ video_postprocess() {
__l_rest="${__l#*.}"
[ -z "${__cast_offset}" ] && __cast_offset=${__l_offset}
__l_offset=$((__l_offset - __cast_offset))
- printf '[%s.%s\n' "${__l_offset}" "${__l_rest}" >> "${__cast_name}".cast
+ printf '[%s.%s\n' "${__l_offset}" "${__l_rest}" >> "${LOGDIR}/${__cast_name}".cast
done
unset IFS
}
--
@@ -77,8 +77,8 @@ video_start() {
VIDEO_START_SECONDS=$(sed -n 's/\([0-9]*\).[0-9]* [0-9]*.[0-9]*/\1/p' /proc/uptime)
sync
- [ ${DEMO} -eq 1 ] && tail -1 "${BASEPATH}/demo.uncut" > "${BASEPATH}/${VIDEO_NAME}.start"
- [ ${CI} -eq 1 ] && tail -1 "${BASEPATH}/ci.uncut" > "${BASEPATH}/${VIDEO_NAME}.start"
+ [ ${DEMO} -eq 1 ] && tail -1 "${STATEBASE}/demo.uncut" > "${STATEBASE}/${VIDEO_NAME}.start"
+ [ ${CI} -eq 1 ] && tail -1 "${STATEBASE}/ci.uncut" > "${STATEBASE}/${VIDEO_NAME}.start"
sync
tmux refresh-client
@@ -89,8 +89,8 @@ video_stop() {
tmux refresh-client
sync
- [ ${DEMO} -eq 1 ] && tail -1 "${BASEPATH}/demo.uncut" > "${BASEPATH}/${VIDEO_NAME}.stop"
- [ ${CI} -eq 1 ] && tail -1 "${BASEPATH}/ci.uncut" > "${BASEPATH}/${VIDEO_NAME}.stop"
+ [ ${DEMO} -eq 1 ] && tail -1 "${STATEBASE}/demo.uncut" > "${STATEBASE}/${VIDEO_NAME}.stop"
+ [ ${CI} -eq 1 ] && tail -1 "${STATEBASE}/ci.uncut" > "${STATEBASE}/${VIDEO_NAME}.stop"
sync
sed -i 's/^.*$/&\\/g' "${BASEPATH}/${VIDEO_NAME}.js"
@@ -108,12 +108,13 @@ video_postprocess() {
[ -z "${__header}" ] && __header="${__l}" && continue
if [ -z "${__cast_name}" ]; then
- for __cast_cut in *.start; do
+ for __cast_cut in "${STATEBASE}/"*.start; do
[ "${__l}" != "$(cat "${__cast_cut}")" ] && continue
- __cast_name="${__cast_cut%.start}"
+ __cast_name="$(basename "${__cast_cut}")"
+ __cast_name="${__cast_name%.start}"
__cast_offset=
- __stop_line="$(cat ${__cast_name}.stop)"
- echo "${__header}" > "${__cast_name}.cast"
+ __stop_line="$(cat "${STATEBASE}/${__cast_name}.stop")"
+ echo "${__header}" > "${LOGDIR}/${__cast_name}.cast"
break
done
continue
@@ -125,7 +126,7 @@ video_postprocess() {
__l_rest="${__l#*.}"
[ -z "${__cast_offset}" ] && __cast_offset=${__l_offset}
__l_offset=$((__l_offset - __cast_offset))
- printf '[%s.%s\n' "${__l_offset}" "${__l_rest}" >> "${__cast_name}".cast
+ printf '[%s.%s\n' "${__l_offset}" "${__l_rest}" >> "${LOGDIR}/${__cast_name}".cast
done
unset IFS
}
--
2.37.3
prev parent reply other threads:[~2022-09-08 6:57 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-08 6:57 [PATCH v3 00/12] Improve handling of test temporary files David Gibson
2022-09-08 6:57 ` [PATCH v3 01/12] test: Group tests by context then protocol, rather than the reverse David Gibson
2022-09-08 6:57 ` [PATCH v3 02/12] test: Remove unused variable FFMPEG_PID_FILE David Gibson
2022-09-08 6:57 ` [PATCH v3 03/12] test: Actually run cleanup function David Gibson
2022-09-08 6:57 ` [PATCH v3 04/12] test: Create common state directories for temporary files David Gibson
2022-09-08 6:57 ` [PATCH v3 05/12] test: Move passt_test_log_pipe to state directory David Gibson
2022-09-08 6:57 ` [PATCH v3 06/12] test: Move context temporary files to state dir David Gibson
2022-09-08 6:57 ` [PATCH v3 07/12] test: Dont regnerate small test file in pasta/tcp David Gibson
2022-09-08 6:57 ` [PATCH v3 08/12] test: Use paths in __STATEDIR__ instead of 'temp' and 'tempdir' directives David Gibson
2022-09-08 6:57 ` [PATCH v3 09/12] test: Move pause temporary file to state directory David Gibson
2022-09-08 6:57 ` [PATCH v3 10/12] test: Store pcap files in $LOGDIR instead of /tmp David Gibson
2022-09-08 6:57 ` [PATCH v3 11/12] test: Move pidfiles and nsholder sockets into state directory David Gibson
2022-09-08 6:57 ` David Gibson [this message]
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=20220908065728.2631730-13-david@gibson.dropbear.id.au \
--to=david@gibson.dropbear.id.au \
--cc=passt-dev@passt.top \
/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.
Code repositories for project(s) associated with this public inbox
https://passt.top/passt
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 IMAP folder(s).