mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-04 23:46:43 +00:00
3796ee2466
Set up a test suite that runs fluster in a virtual machine using virtme. This test only runs when a kernel image path is set in the new `virtme_kernel_image` meson option. The kernel iimage must have support for visl. The suite contains 4 tests, 1 for each supported codec in visl: - vp8 - vp9 - h.264 - hevc Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5434>
75 lines
1.8 KiB
Bash
Executable file
75 lines
1.8 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# Based on the virtme-run.sh script from the Mutter project:
|
|
# https://gitlab.gnome.org/GNOME/mutter/-/blob/main/src/tests/kvm/virtme-run.sh
|
|
#
|
|
# Run fluster tests in a virtual machine using virtme-ng.
|
|
#
|
|
# $1: A Linux kernel image
|
|
# $2: The test build dir
|
|
# $3: GStreamer source dir
|
|
# $4: The decoder to be run in [vp8, vp9, h.264, h.265, av1]
|
|
# ($@: The test vectors to be skipped)
|
|
|
|
set -e
|
|
|
|
DIRNAME="$(dirname "$0")"
|
|
IMAGE="$1"
|
|
MESON_BUILD_DIR="$2"
|
|
MESON_SOURCE_DIR="$3"
|
|
DECODER="${4}"
|
|
|
|
shift
|
|
shift
|
|
shift
|
|
shift
|
|
|
|
SKIPPED="$@"
|
|
|
|
if [ ! -z "${SKIPPED}" ]; then
|
|
sv="-sv ${SKIPPED}"
|
|
fi
|
|
|
|
TEST_RESULT_FILE=$(mktemp -p "$MESON_BUILD_DIR" -t test-result-XXXXXX)
|
|
echo 1 > "$TEST_RESULT_FILE"
|
|
|
|
VIRTME_ENV="\
|
|
MESON_BUILD_DIR=${MESON_BUILD_DIR} \
|
|
"
|
|
|
|
TEST_SUITES_DIR="${MESON_SOURCE_DIR}/ci/fluster/visl_references"
|
|
|
|
FLUSTER_PATH=/opt/fluster
|
|
TEST_COMMAND="${FLUSTER_PATH}/fluster.py -tsd ${TEST_SUITES_DIR} run -d GStreamer-${DECODER}-V4L2SL-Gst1.0 -f junitxml -so $MESON_BUILD_DIR/fluster-results-${DECODER}.xml ${sv} -t 60"
|
|
|
|
SCRIPT="\
|
|
env $VIRTME_ENV $DIRNAME/run-virt-test.sh \
|
|
\\\"$TEST_COMMAND\\\" \
|
|
\\\"$TEST_RESULT_FILE\\\" \
|
|
"
|
|
|
|
HALF_MEMORY="$(grep MemTotal /proc/meminfo | awk '{print $2}' | xargs -I {} echo "scale=0; 1+{}/1024^2/2" | bc)G"
|
|
|
|
echo Running tests in virtual machine ...
|
|
virtme-run \
|
|
--memory=${HALF_MEMORY} \
|
|
--rw \
|
|
--pwd \
|
|
--kimg "$IMAGE" \
|
|
--script-sh "sh -c \"$SCRIPT\"" \
|
|
-a visl.stable_output=true \
|
|
-a visl.codec_variability=true \
|
|
--show-boot-console --show-command \
|
|
--qemu-opts -cpu host,pdcm=off -smp 8
|
|
VM_RESULT=$?
|
|
if [ $VM_RESULT != 0 ]; then
|
|
echo Virtual machine exited with a failure: $VM_RESULT
|
|
else
|
|
echo Virtual machine terminated.
|
|
fi
|
|
TEST_RESULT="$(cat "$TEST_RESULT_FILE")"
|
|
|
|
echo Test result exit status: $TEST_RESULT
|
|
|
|
rm "$TEST_RESULT_FILE"
|
|
exit "$TEST_RESULT"
|