1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
#!/bin/bash
#
# Test libdeflate on a connected arm64 Android device.
# Requires the Android NDK (release 19 or later) and adb.
set -eu -o pipefail
cd "$(dirname "$0")/.."
if [ $# -ne 0 ]; then
echo 1>&2 "Usage: $0"
exit 2
fi
# Use NDKDIR if specified in environment, else use default value.
: "${NDKDIR:=$HOME/android-ndk-r25b}"
if [ ! -e "$NDKDIR" ]; then
cat 1>&2 << EOF
Android NDK was not found in NDKDIR=$NDKDIR! Set the
environmental variable NDKDIR to the location of your Android NDK installation.
EOF
exit 1
fi
CLEANUP_CMDS=()
cleanup() {
for cmd in "${CLEANUP_CMDS[@]}"; do
eval "$cmd"
done
}
trap cleanup EXIT
# Use TESTDATA if specified in environment, else generate it.
if [ -z "${TESTDATA:-}" ]; then
# Generate default TESTDATA file.
TESTDATA=$(mktemp -t libdeflate_testdata.XXXXXXXXXX)
export TESTDATA
CLEANUP_CMDS+=("rm -f '$TESTDATA'")
find . '(' -name '*.c' -o -name '*.h' -o -name '*.sh' ')' \
-exec cat '{}' ';' | head -c 1000000 > "$TESTDATA"
fi
TMPDIR=$(mktemp -d -t libdeflate_test.XXXXXXXXX)
CLEANUP_CMDS+=("rm -r '$TMPDIR'")
android_build_and_test() {
echo "Running Android tests with $*"
./scripts/android_build.sh --ndkdir="$NDKDIR" "$@" > /dev/null
adb push "$TESTDATA" ./scripts/exec_tests.sh \
./build/programs/{benchmark,test_*} /data/local/tmp/ > /dev/null
# Note: adb shell always returns 0, even if the shell command fails...
adb shell "cd /data/local/tmp && WRAPPER= TESTDATA=$(basename "$TESTDATA") sh exec_tests.sh" \
> "$TMPDIR/adb.out"
if ! grep -q "exec_tests finished successfully" "$TMPDIR/adb.out"; then
echo 1>&2 "Android test failure! adb shell output:"
cat "$TMPDIR/adb.out"
exit 1
fi
}
android_build_and_test --arch=arm32
android_build_and_test --arch=arm32 --enable-crc
android_build_and_test --arch=arm64
android_build_and_test --arch=arm64 --enable-crc
android_build_and_test --arch=arm64 --enable-crypto
android_build_and_test --arch=arm64 --enable-crc --enable-crypto
echo "Android tests passed"
|