From: David Gibson <david@gibson.dropbear.id.au>
To: passt-dev@passt.top
Subject: [PATCH v5 13/14] test: Move video processing files to $STATEBASE
Date: Tue, 13 Sep 2022 14:35:28 +1000 [thread overview]
Message-ID: <20220913043529.3079003-14-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20220913043529.3079003-1-david@gibson.dropbear.id.au>
[-- Attachment #1: Type: text/plain, Size: 6476 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.
The final processed output is now placed into test_logs/web/ along with the
corresponding .js file with links, since they're essentially test
artefacts. hooks/pre-push is updated to look for those files in the new
location when updating the web site.
Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au>
---
hooks/pre-push | 12 ++++++------
test/.gitignore | 4 ----
test/lib/term | 8 ++++----
test/lib/video | 37 +++++++++++++++++++++----------------
4 files changed, 31 insertions(+), 30 deletions(-)
diff --git a/hooks/pre-push b/hooks/pre-push
index 1060802..1c221e7 100755
--- a/hooks/pre-push
+++ b/hooks/pre-push
@@ -34,15 +34,15 @@ ssh "${USER_HOST}" "mkdir -p ${WEB} ${TEST} ${BIN}"
cd test
./ci
-gzip -fk9 perf.js ci.js
-scp perf.js perf.js.gz ci.js ci.js.gz "${USER_HOST}:${WEB}/"
+gzip -fk9 perf.js
+scp perf.js perf.js.gz "${USER_HOST}:${WEB}/"
scp test_logs/* "${USER_HOST}:${TEST}/"
./run_demo
-for cast in ci demo_pasta demo_podman demo_passt; do
- gzip -fk9 "${cast}.cast"
- scp "${cast}.cast" "${USER_HOST}:${WEB}/"
- scp "${cast}.cast.gz" "${USER_HOST}:${WEB}/"
+for f in test_logs/web/*.cast test_logs/web/*.js; do
+ gzip -fk9 "${f}"
+ scp "${f}" "${USER_HOST}:${WEB}/"
+ scp "${f}.gz" "${USER_HOST}:${WEB}/"
done
cd ..
diff --git a/test/.gitignore b/test/.gitignore
index 0f91c7d..2e75cb5 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -6,10 +6,6 @@ QEMU_EFI.fd
*.qcow2
*.raw
*.raw.xz
-*.uncut
-*.start
-*.stop
-*.js
nsholder
guest-key
guest-key.pub
diff --git a/test/lib/term b/test/lib/term
index c9720be..b31deac 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..0ed6a3e 100755
--- a/test/lib/video
+++ b/test/lib/video
@@ -60,7 +60,8 @@ VIDEO_LINKS_COUNT=0
# video_append_links() - Append generic string to JavaScript links file
video_append_links()
{
- printf "${@}" >> "${BASEPATH}/${VIDEO_NAME}.js"
+ __web="${LOGDIR}/web"
+ printf "${@}" >> "${__web}/${VIDEO_NAME}.js"
}
# video_append_links() - Append generic string to buffer for links
@@ -72,13 +73,14 @@ video_append_links_js()
# video_start() - Mark start of a test in capture, record start timestamp
video_start() {
VIDEO_NAME="${1}"
-
- echo "${VIDEO_LINKS_TEMPLATE}" > "${BASEPATH}/${VIDEO_NAME}.js"
+ __web="${LOGDIR}/web"
+ mkdir -p "${__web}"
+ echo "${VIDEO_LINKS_TEMPLATE}" > "${__web}/${VIDEO_NAME}.js"
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
@@ -86,34 +88,37 @@ video_start() {
# video_stop() - Mark stop of a test in capture, finalise JavaScript fragments
video_stop() {
+ __web="${LOGDIR}/web"
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"
- echo "${VIDEO_LINKS_TEMPLATE_JS}" | sed "s/__VIDEO_NAME__/${VIDEO_NAME}/g" >> "${BASEPATH}/${VIDEO_NAME}.js"
- echo "${VIDEO_LINKS_BUF}" >> "${BASEPATH}/${VIDEO_NAME}.js"
- echo "${VIDEO_LINKS_TEMPLATE_POST}" | sed "s/__VIDEO_NAME__/${VIDEO_NAME}/g" >> "${BASEPATH}/${VIDEO_NAME}.js"
+ sed -i 's/^.*$/&\\/g' "${__web}/${VIDEO_NAME}.js"
+ echo "${VIDEO_LINKS_TEMPLATE_JS}" | sed "s/__VIDEO_NAME__/${VIDEO_NAME}/g" >> "${__web}/${VIDEO_NAME}.js"
+ echo "${VIDEO_LINKS_BUF}" >> "${__web}/${VIDEO_NAME}.js"
+ echo "${VIDEO_LINKS_TEMPLATE_POST}" | sed "s/__VIDEO_NAME__/${VIDEO_NAME}/g" >> "${__web}/${VIDEO_NAME}.js"
}
# video_postprocess() - Cut terminal recordings based on .start and .stop files
video_postprocess() {
IFS='
'
+ __web="${LOGDIR}/web"
__cast_name=
for __l in $(cat ${1}); do
[ -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}" > "${__web}/${__cast_name}.cast"
break
done
continue
@@ -125,7 +130,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}" >> "${__web}/${__cast_name}".cast
done
unset IFS
}
--
@@ -60,7 +60,8 @@ VIDEO_LINKS_COUNT=0
# video_append_links() - Append generic string to JavaScript links file
video_append_links()
{
- printf "${@}" >> "${BASEPATH}/${VIDEO_NAME}.js"
+ __web="${LOGDIR}/web"
+ printf "${@}" >> "${__web}/${VIDEO_NAME}.js"
}
# video_append_links() - Append generic string to buffer for links
@@ -72,13 +73,14 @@ video_append_links_js()
# video_start() - Mark start of a test in capture, record start timestamp
video_start() {
VIDEO_NAME="${1}"
-
- echo "${VIDEO_LINKS_TEMPLATE}" > "${BASEPATH}/${VIDEO_NAME}.js"
+ __web="${LOGDIR}/web"
+ mkdir -p "${__web}"
+ echo "${VIDEO_LINKS_TEMPLATE}" > "${__web}/${VIDEO_NAME}.js"
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
@@ -86,34 +88,37 @@ video_start() {
# video_stop() - Mark stop of a test in capture, finalise JavaScript fragments
video_stop() {
+ __web="${LOGDIR}/web"
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"
- echo "${VIDEO_LINKS_TEMPLATE_JS}" | sed "s/__VIDEO_NAME__/${VIDEO_NAME}/g" >> "${BASEPATH}/${VIDEO_NAME}.js"
- echo "${VIDEO_LINKS_BUF}" >> "${BASEPATH}/${VIDEO_NAME}.js"
- echo "${VIDEO_LINKS_TEMPLATE_POST}" | sed "s/__VIDEO_NAME__/${VIDEO_NAME}/g" >> "${BASEPATH}/${VIDEO_NAME}.js"
+ sed -i 's/^.*$/&\\/g' "${__web}/${VIDEO_NAME}.js"
+ echo "${VIDEO_LINKS_TEMPLATE_JS}" | sed "s/__VIDEO_NAME__/${VIDEO_NAME}/g" >> "${__web}/${VIDEO_NAME}.js"
+ echo "${VIDEO_LINKS_BUF}" >> "${__web}/${VIDEO_NAME}.js"
+ echo "${VIDEO_LINKS_TEMPLATE_POST}" | sed "s/__VIDEO_NAME__/${VIDEO_NAME}/g" >> "${__web}/${VIDEO_NAME}.js"
}
# video_postprocess() - Cut terminal recordings based on .start and .stop files
video_postprocess() {
IFS='
'
+ __web="${LOGDIR}/web"
__cast_name=
for __l in $(cat ${1}); do
[ -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}" > "${__web}/${__cast_name}.cast"
break
done
continue
@@ -125,7 +130,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}" >> "${__web}/${__cast_name}".cast
done
unset IFS
}
--
2.37.3
next prev parent reply other threads:[~2022-09-13 4:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-13 4:35 [PATCH v5 00/14] Improve handling of test temporary files David Gibson
2022-09-13 4:35 ` [PATCH v5 01/14] test: Group tests by mode then protocol, rather than the reverse David Gibson
2022-09-13 4:35 ` [PATCH v5 02/14] test: Remove unused variable FFMPEG_PID_FILE David Gibson
2022-09-13 4:35 ` [PATCH v5 03/14] test: Actually run cleanup function David Gibson
2022-09-13 4:35 ` [PATCH v5 04/14] test: Create common state directories for temporary files David Gibson
2022-09-13 4:35 ` [PATCH v5 05/14] test: Move passt_test_log_pipe to state directory David Gibson
2022-09-13 4:35 ` [PATCH v5 06/14] test: Move context temporary files to state dir David Gibson
2022-09-13 4:35 ` [PATCH v5 07/14] test: Don't redundantly regenerate small test file in pasta/tcp David Gibson
2022-09-13 4:35 ` [PATCH v5 08/14] test: Use paths in __STATEDIR__ instead of 'temp' and 'tempdir' directives David Gibson
2022-09-13 4:35 ` [PATCH v5 09/14] test: Move pause temporary file to state directory David Gibson
2022-09-13 4:35 ` [PATCH v5 10/14] test: Store pcap files in $LOGDIR instead of /tmp David Gibson
2022-09-13 4:35 ` [PATCH v5 11/14] test: Move pidfiles and nsholder sockets into state directory David Gibson
2022-09-13 4:35 ` [PATCH v5 12/14] demo: Move pidfiles to " David Gibson
2022-09-13 4:35 ` David Gibson [this message]
2022-09-13 4:35 ` [PATCH v5 14/14] test: Move perf.js report file to $LOGDIR/web David Gibson
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=20220913043529.3079003-14-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).