#!/system/bin/sh ############################################################################# # Copyright (c) 2014 Linaro # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # # Contributors: # Linaro ############################################################################# # Individual and batch test definitions ALL_AUDIO_CODECS="audio_codec_aac audio_codec_flac audio_codec_mp3 \ audio_codec_tremolo" ALL_SPEECH_CODECS="speech_codec_amrnb_dec_linaro speech_codec_amrnb_enc_linaro \ speech_codec_amrwb_dec speech_codec_amrwb_enc" ALL_VIDEO_CODECS="video_codec_h264_dec video_codec_h264_enc \ video_codec_h263_dec video_codec_h263_enc" ALL_CODECS="${ALL_AUDIO_CODECS} ${ALL_SPEECH_CODECS} ${ALL_VIDEO_CODECS}" ALL_TESTS="${ALL_CODECS}" # Script arguments for selecting tests to run ALL_AUDIO_CODECS_OPT="all_audio_codecs" ALL_SPEECH_CODECS_OPT="all_speech_codecs" ALL_VIDEO_CODECS_OPT="all_video_codecs" ALL_CODECS_OPT="all_codecs" ALL_TESTS_OPT="all_tests" func_md5(){ if [ -n "$(which md5)" ]; then md5 $@ else md5sum $@ fi } usage() { echo echo "Usage: $0 [-h] [-t TESTS] [-v]" echo "Run all or specified Android userspace tests" echo printf " %-10s\t%s\n" "-h" "Print this help message" printf " %-10s\t%s\n" "-t TESTS" "Run only specified TESTS from the following:" printf " %-10s\t%s\n" "" "Individual tests:" for CODEC in ${ALL_CODECS}; do printf " %-10s\t\t%s\n" "" "${CODEC}" done printf " %-10s\t%s\n" "" "Batch tests:" printf " %-10s\t\t%s\n" "" "${ALL_AUDIO_CODECS_OPT}" printf " %-10s\t\t%s\n" "" "${ALL_SPEECH_CODECS_OPT}" printf " %-10s\t\t%s\n" "" "${ALL_VIDEO_CODECS_OPT}" printf " %-10s\t\t%s\n" "" "${ALL_CODECS_OPT}" printf " %-10s\t\t%s\n" "" "${ALL_TESTS_OPT}" printf " %-10s\t%s\n" "-v" "Turn on verbose output" echo echo "Example:" echo "\t$0 -t \"audio_codec_aac speech_codec_amrnb_dec_linaro\"" } run_audio_codec_aac() { local TEST_FILE="/data/linaro-android-userspace-test/audio-codec/Retribution.wav" local OUT_FILE="/data/local/tmp/audio-codec-test.out" local EXPECTED_MD5SUM="f35771514701eaf5055b1705a4c660b7" echo echo "Running AAC encoder test" if [ ! -f ${TEST_FILE} ]; then echo "ERROR: AAC encoder test file ${TEST_FILE} does not exist" echo "AAC encoder test: FAILED" echo "[audio_codec_aac]: test failed" return 1 fi if [ "${VERBOSE}" -eq "1" ]; then libaacenc_test ${TEST_FILE} ${OUT_FILE} else libaacenc_test ${TEST_FILE} ${OUT_FILE} &> /dev/null fi if [ "$?" -ne "0" ]; then echo "ERROR: AAC encoder test returned error" echo "AAC encoder test: FAILED" echo "[audio_codec_aac]: test failed" return 1 fi echo "Checking MD5SUM of output file" local MD5SUM=$(func_md5 ${OUT_FILE}) MD5SUM=${MD5SUM%% *} rm ${OUT_FILE} if [[ "${MD5SUM}" == "${EXPECTED_MD5SUM}" ]]; then echo "AAC encoder test: PASSED" echo "[audio_codec_aac]: test passed" else echo "ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')" echo "AAC encoder test: FAILED" echo "[audio_codec_aac]: test failed" return 1 fi } run_audio_codec_flac() { echo echo "Running FLAC encoder/decoder test" if [ "${VERBOSE}" -eq "1" ]; then libFLAC_test else libFLAC_test &> /dev/null fi if [ "$?" -eq "0" ]; then echo "FLAC encoder/decoder test: PASSED" echo "[audio_codec_flac]: test passed" else echo "ERROR: FLAC encoder/decoder test returned error" echo "FLAC encoder/decoder test: FAILED" echo "[audio_codec_flac]: test failed" return 1 fi } run_audio_codec_mp3() { local TEST_FILE="/data/linaro-android-userspace-test/audio-codec/Retribution.mp3" local OUT_FILE="/data/local/tmp/audio-codec-test.out" local EXPECTED_MD5SUM="bf1456a93dfc53e474c30c9fca75c647" echo echo "Running MP3 decoder test" if [ ! -f ${TEST_FILE} ]; then echo "ERROR: MP3 test file ${TEST_FILE} does not exist" echo "MP3 decoder test: FAILED" echo "[audio_codec_mp3]: test failed" return 1 fi if [ "${VERBOSE}" -eq "1" ]; then libstagefright_mp3dec_test ${TEST_FILE} ${OUT_FILE} else libstagefright_mp3dec_test ${TEST_FILE} ${OUT_FILE} &> /dev/null fi if [ "$?" -ne "0" ]; then echo "ERROR: MP3 decoder test returned error" echo "MP3 decoder test: FAILED" echo "[audio_codec_mp3]: test failed" return 1 fi echo "Checking MD5SUM of output file" local MD5SUM=$(func_md5 ${OUT_FILE}) MD5SUM=${MD5SUM%% *} rm ${OUT_FILE} if [[ "${MD5SUM}" == "${EXPECTED_MD5SUM}" ]]; then echo "MP3 decoder test: PASSED" echo "[audio_codec_mp3]: test passed" else echo "ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')" echo "MP3 decoder test: FAILED" echo "[audio_codec_mp3]: test failed" return 1 fi } run_audio_codec_tremolo() { local TEST_FILE="/data/linaro-android-userspace-test/audio-codec/Retribution.ogg" local OUT_FILE="/data/local/tmp/audio-codec-test.out" local EXPECTED_MD5SUM="ce1ed575df073243e7bfa916e4d23dda" echo echo "Running Tremolo decoder test" if [ ! -f ${TEST_FILE} ]; then echo "ERROR: Tremolo test file ${TEST_FILE} does not exist" echo "Tremolo decoder test: FAILED" echo "[audio_codec_tremolo]: test failed" return 1 fi if [ "${VERBOSE}" -eq "1" ]; then libvorbisidec_test ${TEST_FILE} ${OUT_FILE} else libvorbisidec_test ${TEST_FILE} ${OUT_FILE} &> /dev/null fi if [ "$?" -ne "0" ]; then echo "ERROR: Tremolo decoder test returned error" echo "Tremolo decoder test: FAILED" echo "[audio_codec_tremolo]: test failed" return 1 fi echo "Checking MD5SUM of output file" local MD5SUM=$(func_md5 ${OUT_FILE}) MD5SUM=${MD5SUM%% *} rm ${OUT_FILE} if [[ "${MD5SUM}" == "${EXPECTED_MD5SUM}" ]]; then echo "Tremolo decoder test: PASSED" echo "[audio_codec_tremolo]: test passed" else echo "ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')" echo "Tremolo decoder test: FAILED" echo "[audio_codec_tremolo]: test failed" return 1 fi } run_speech_codec() { if [ "$#" -ne "6" ]; then return 1 fi local IS_ENCODE="${1}" local TAG="${2}" local NAME="${3}" local DATA_DIR="${4}" local MD5SUM_FILE="${5}" local RUN="${6}" local OUT_FILE="/data/local/tmp/speech-codec-test.out" echo echo "${TAG}: Running ${NAME}" if [ ! -f ${MD5SUM_FILE} ]; then echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi if [ "${IS_ENCODE}" -eq "1" ]; then echo -n "${TAG}: Encoding and verifying output" else echo -n "${TAG}: Decoding and verifying output" fi while read LINE do if [[ "${LINE:0:1}" == "#" ]]; then continue fi echo -n "." TEST_FILE="${LINE%%['\t' ]*}" if [ -z "${TEST_FILE}" ]; then echo "${TAG}: ERROR: Invalid test file/MD5SUM pair" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi # Remove the test file, leaving the MD5SUMs LINE="${LINE#${TEST_FILE}}" TEST_FILE="${DATA_DIR}/${TEST_FILE}" if [ ! -f ${TEST_FILE} ]; then echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi local INDEX=0 for EXPECTED_MD5SUM in ${LINE}; do if [ "${IS_ENCODE}" -eq "1" ]; then if [ "${VERBOSE}" -eq "1" ]; then ${RUN} +M${INDEX} ${TEST_FILE} ${OUT_FILE} else ${RUN} +M${INDEX} ${TEST_FILE} ${OUT_FILE} &> /dev/null fi else if [ "${VERBOSE}" -eq "1" ]; then ${RUN} ${TEST_FILE} ${OUT_FILE} else ${RUN} ${TEST_FILE} ${OUT_FILE} &> /dev/null fi fi if [ "$?" -ne "0" ]; then echo echo "${TAG}: ERROR: ${NAME} returned error" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi local MD5SUM=$(func_md5 ${OUT_FILE}) MD5SUM="${MD5SUM%% *}" if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then echo echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi ((INDEX++)) done done < ${MD5SUM_FILE} echo "done" if [ -f ${OUT_FILE} ]; then rm ${OUT_FILE} fi echo "${TAG}: ${NAME}: PASSED" echo "[${TAG}]: test passed" } run_speech_codec_amrnb_dec_linaro() { local TAG="speech_codec_amrnb_dec_linaro" local NAME="AMR NB decoder test" local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrnb" local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec" run_speech_codec 0 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrnbdec_test_linaro" return $? } run_speech_codec_amrnb_enc_linaro() { local TAG="speech_codec_amrnb_enc_linaro" local NAME="AMR NB encoder test" local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrnb" local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc" run_speech_codec 1 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrnbenc_test_linaro" return $? } run_speech_codec_amrwb_dec() { local TAG="speech_codec_amrwb_dec" local NAME="AMR WB decoder test" local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrwb" local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec" run_speech_codec 0 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrwbdec_test" return $? } run_speech_codec_amrwb_enc() { local TAG="speech_codec_amrwb_enc" local NAME="AMR WB encoder test" local DATA_DIR="/data/linaro-android-userspace-test/speech-codec/amrwb" local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc" run_speech_codec 1 "${TAG}" "${NAME}" "${DATA_DIR}" "${MD5SUM_FILE}" "libstagefright_amrwbenc_test" return $? } run_video_codec_h264_dec() { local TAG="video_codec_h264_dec" local NAME="H.264 decoder test" local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h264" local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec" local RUN="libstagefright_h264dec_test" local OUT_FILE="/data/local/tmp/video-codec-test.out" echo echo "${TAG}: Running ${NAME}" if [ ! -f ${MD5SUM_FILE} ]; then echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi echo -n "${TAG}: Decoding and verifying output" local TEST_FILE="" local EXPECTED_MD5SUM="" local LINE=0 while read -r TEST_FILE EXPECTED_MD5SUM do ((LINE++)) # Skip comment or empty lines if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then continue fi echo -n "." if [ -z "${EXPECTED_MD5SUM}" ]; then echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi TEST_FILE="${DATA_DIR}/${TEST_FILE}" if [ ! -f ${TEST_FILE} ]; then echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi if [ "${VERBOSE}" -eq "1" ]; then ${RUN} -O${OUT_FILE} ${TEST_FILE} else ${RUN} -O${OUT_FILE} ${TEST_FILE} &> /dev/null fi if [ "$?" -ne "0" ]; then echo echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi local MD5SUM=$(func_md5 ${OUT_FILE}) MD5SUM="${MD5SUM%% *}" if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then echo echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi done < ${MD5SUM_FILE} echo "done" if [ -f ${OUT_FILE} ]; then rm ${OUT_FILE} fi echo "${TAG}: ${NAME}: PASSED" echo "[${TAG}]: test passed" return $? } run_video_codec_h264_enc() { local TAG="video_codec_h264_enc" local NAME="H.264 encoder test" local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h264" local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc" local RUN="libstagefright_h264enc_test" local OUT_FILE="/data/local/tmp/video-codec-test.out" echo echo "${TAG}: Running ${NAME}" if [ ! -f ${MD5SUM_FILE} ]; then echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi echo -n "${TAG}: Encoding and verifying output" local TEST_FILE="" local OUT_WIDTH="" local OUT_HEIGHT="" local OUT_FRAMERATE="" local OUT_BITRATE="" local EXPECTED_MD5SUM="" local LINE=0 while read -r TEST_FILE OUT_WIDTH OUT_HEIGHT OUT_FRAMERATE OUT_BITRATE EXPECTED_MD5SUM do ((LINE++)) # Skip comment or empty lines if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then continue fi echo -n "." if [ -z "${OUT_WIDTH}" -o -z "${OUT_HEIGHT}" -o -z "${OUT_FRAMERATE}" -o -z "${OUT_BITRATE}" -o -z "${EXPECTED_MD5SUM}" ]; then echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi TEST_FILE="${DATA_DIR}/${TEST_FILE}" if [ ! -f ${TEST_FILE} ]; then echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi if [ "${VERBOSE}" -eq "1" ]; then ${RUN} ${TEST_FILE} ${OUT_FILE} ${OUT_WIDTH} ${OUT_HEIGHT} ${OUT_FRAMERATE} ${OUT_BITRATE} else ${RUN} ${TEST_FILE} ${OUT_FILE} ${OUT_WIDTH} ${OUT_HEIGHT} ${OUT_FRAMERATE} ${OUT_BITRATE} &> /dev/null fi if [ "$?" -ne "0" ]; then echo echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi local MD5SUM=$(func_md5 ${OUT_FILE}) MD5SUM="${MD5SUM%% *}" if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then echo echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi done < ${MD5SUM_FILE} echo "done" if [ -f ${OUT_FILE} ]; then rm ${OUT_FILE} fi echo "${TAG}: ${NAME}: PASSED" echo "[${TAG}]: test passed" return $? } run_video_codec_h263_dec() { local TAG="video_codec_h263_dec" local NAME="H.263 decoder test" local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h263" local MD5SUM_FILE="${DATA_DIR}/MD5SUM.dec" local RUN="libstagefright_m4vh263dec_test" local OUT_FILE="/data/local/tmp/video-codec-test.out" echo echo "${TAG}: Running ${NAME}" if [ ! -f ${MD5SUM_FILE} ]; then echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi echo -n "${TAG}: Decoding and verifying output" local TEST_FILE="" local OUT_WIDTH="" local OUT_HEIGHT="" local EXPECTED_MD5SUM="" local LINE=0 while read -r TEST_FILE OUT_WIDTH OUT_HEIGHT EXPECTED_MD5SUM do ((LINE++)) # Skip comment or empty lines if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then continue fi echo -n "." if [ -z "${OUT_WIDTH}" -o -z "${OUT_HEIGHT}" -o -z "${EXPECTED_MD5SUM}" ]; then echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi TEST_FILE="${DATA_DIR}/${TEST_FILE}" if [ ! -f ${TEST_FILE} ]; then echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi if [ "${VERBOSE}" -eq "1" ]; then ${RUN} ${TEST_FILE} ${OUT_FILE} ${OUT_WIDTH} ${OUT_HEIGHT} else ${RUN} ${TEST_FILE} ${OUT_FILE} ${OUT_WIDTH} ${OUT_HEIGHT} &> /dev/null fi if [ "$?" -ne "0" ]; then echo echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi local MD5SUM=$(func_md5 ${OUT_FILE}) MD5SUM="${MD5SUM%% *}" if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then echo echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi done < ${MD5SUM_FILE} echo "done" if [ -f ${OUT_FILE} ]; then rm ${OUT_FILE} fi echo "${TAG}: ${NAME}: PASSED" echo "[${TAG}]: test passed" return $? } run_video_codec_h263_enc() { local TAG="video_codec_h263_enc" local NAME="H.263 encoder test" local DATA_DIR="/data/linaro-android-userspace-test/video-codec/h263" local MD5SUM_FILE="${DATA_DIR}/MD5SUM.enc" local RUN="libstagefright_m4vh263enc_test" local OUT_FILE="/data/local/tmp/video-codec-test.out" echo echo "${TAG}: Running ${NAME}" if [ ! -f ${MD5SUM_FILE} ]; then echo "${TAG}: ERROR: MD5SUM file '${MD5SUM_FILE}' does not exist" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi echo -n "${TAG}: Encoding and verifying output" local TEST_FILE="" local OUT_WIDTH="" local OUT_HEIGHT="" local OUT_FRAMERATE="" local OUT_BITRATE="" local EXPECTED_MD5SUM="" local LINE=0 while read -r TEST_FILE OUT_WIDTH OUT_HEIGHT OUT_FRAMERATE OUT_BITRATE EXPECTED_MD5SUM do ((LINE++)) # Skip comment or empty lines if [[ "${TEST_FILE:0:1}" == "#" ]] || [ -z "${TEST_FILE}" ]; then continue fi echo -n "." if [ -z "${OUT_WIDTH}" -o -z "${OUT_HEIGHT}" -o -z "${OUT_FRAMERATE}" -o -z "${OUT_BITRATE}" -o -z "${EXPECTED_MD5SUM}" ]; then echo "${TAG}: ERROR: invalid MD5SUM entry (${MD5SUM_FILE}:${LINE})" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi TEST_FILE="${DATA_DIR}/${TEST_FILE}" if [ ! -f ${TEST_FILE} ]; then echo "${TAG}: ERROR: test file '${TEST_FILE}' does not exist" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi if [ "${VERBOSE}" -eq "1" ]; then ${RUN} ${TEST_FILE} ${OUT_FILE} mpeg4 ${OUT_WIDTH} ${OUT_HEIGHT} ${OUT_FRAMERATE} ${OUT_BITRATE} else ${RUN} ${TEST_FILE} ${OUT_FILE} mpeg4 ${OUT_WIDTH} ${OUT_HEIGHT} ${OUT_FRAMERATE} ${OUT_BITRATE} &> /dev/null fi if [ "$?" -ne "0" ]; then echo echo "${TAG}: ERROR: ${NAME} returned error for ${MD5SUM_FILE}:${LINE}" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" return 1 fi local MD5SUM=$(func_md5 ${OUT_FILE}) MD5SUM="${MD5SUM%% *}" if [[ "${MD5SUM}" != "${EXPECTED_MD5SUM}" ]]; then echo echo "${TAG}: ERROR: incorrect MD5SUM '${MD5SUM}' (expected '${EXPECTED_MD5SUM}')" echo "${TAG}: ${NAME}: FAILED" echo "[${TAG}]: test failed" echo "${MD5SUM}" >> /sdcard/md5.txt return 1 fi done < ${MD5SUM_FILE} echo "done" if [ -f ${OUT_FILE} ]; then rm ${OUT_FILE} fi echo "${TAG}: ${NAME}: PASSED" echo "[${TAG}]: test passed" return $? } run_tests() { local RET=0 for TEST in $TESTS; do if [[ "${ALL_TESTS}" == *"${TEST}"* ]]; then # Function names follow the naming convention of: # run_ run_${TEST} RET=$(( ${RET} + $? )) else echo echo "Unrecognized test '${TEST}'" usage RET=$(( ${RET} + 1 )) break fi done return ${RET} } # Terse output by default VERBOSE=0 TESTS="" while getopts "hvt:" OPT do case $OPT in h) usage exit 1 ;; t) TESTS=$OPTARG ;; v) VERBOSE=1 ;; *) usage exit esac done if [ -z "${TESTS}" ]; then # Run all tests by default TESTS="${ALL_TESTS}" echo "Running all tests" else # Expand out any batch tests TESTS="${TESTS//${ALL_AUDIO_CODECS_OPT}/${ALL_AUDIO_CODECS}}" TESTS="${TESTS//${ALL_SPEECH_CODECS_OPT}/${ALL_SPEECH_CODECS}}" TESTS="${TESTS//${ALL_VIDEO_CODECS_OPT}/${ALL_VIDEO_CODECS}}" TESTS="${TESTS//${ALL_CODECS_OPT}/${ALL_CODECS}}" TESTS="${TESTS//${ALL_TESTS_OPT}/${ALL_TESTS}}" fi run_tests return $?