Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
Naresh Kamboju | 72fb6f4 | 2019-03-26 12:19:33 +0530 | [diff] [blame] | 3 | # shellcheck disable=SC1091 |
Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 4 | . ../../lib/sh-test-lib |
| 5 | OUTPUT="$(pwd)/output" |
Chase Qi | 3cbb5e0 | 2018-09-14 15:27:37 +0800 | [diff] [blame] | 6 | export RESULT_FILE="${OUTPUT}/result.txt" |
Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 7 | TEST_SUITE="v4l2-compliance" |
| 8 | |
Chase Qi | 3cbb5e0 | 2018-09-14 15:27:37 +0800 | [diff] [blame] | 9 | VIDEO_DEVICE="/dev/video0" |
| 10 | VIDEO_DRIVER="" |
| 11 | |
Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 12 | usage() { |
Chase Qi | 3cbb5e0 | 2018-09-14 15:27:37 +0800 | [diff] [blame] | 13 | echo "Usage: $0 [-d <video device> -D <video driver>" 1>&2 |
Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 14 | exit 1 |
| 15 | } |
| 16 | |
Chase Qi | 3cbb5e0 | 2018-09-14 15:27:37 +0800 | [diff] [blame] | 17 | while getopts "d:D:h" o; do |
Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 18 | case "$o" in |
| 19 | d) VIDEO_DEVICE="${OPTARG}" ;; |
Chase Qi | 3cbb5e0 | 2018-09-14 15:27:37 +0800 | [diff] [blame] | 20 | D) VIDEO_DRIVER="${OPTARG}" ;; |
Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 21 | h|*) usage ;; |
| 22 | esac |
| 23 | done |
| 24 | |
| 25 | echo VIDEO_DEVICE="${VIDEO_DEVICE}" |
Chase Qi | 3cbb5e0 | 2018-09-14 15:27:37 +0800 | [diff] [blame] | 26 | echo VIDEO_DRIVER="${VIDEO_DRIVER}" |
Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 27 | |
| 28 | # Test run. |
| 29 | create_out_dir "${OUTPUT}" |
| 30 | |
Chase Qi | 3cbb5e0 | 2018-09-14 15:27:37 +0800 | [diff] [blame] | 31 | # Try to install v4l-utils when v4l2-compliance not found. |
| 32 | # install_deps() skips installation on unsupported distro |
| 33 | # like OE based builds by default. |
Arthur She | b034740 | 2018-12-12 09:34:29 -0800 | [diff] [blame] | 34 | which v4l2-compliance > /dev/null || install_deps "v4l-utils" |
| 35 | which v4l2-compliance > /dev/null |
Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 36 | exit_on_fail "v4l2-existence-check" |
| 37 | |
Chase Qi | 3cbb5e0 | 2018-09-14 15:27:37 +0800 | [diff] [blame] | 38 | if [ -n "${VIDEO_DRIVER}" ] && ! lsmod | grep "${VIDEO_DRIVER%.*}"; then |
| 39 | check_root || error_msg "Please run this script as root to modprobe driver module!" |
| 40 | ln -s "$(find "/lib/modules/$(uname -r)" -name "${VIDEO_DRIVER}*")" \ |
| 41 | "/lib/modules/$(uname -r)" |
| 42 | depmod -a |
| 43 | modprobe "${VIDEO_DRIVER%.*}" no_error_inj=1 |
| 44 | exit_on_fail "modprobe-${VIDEO_DRIVER%.*}" |
| 45 | fi |
| 46 | |
Naresh Kamboju | 72fb6f4 | 2019-03-26 12:19:33 +0530 | [diff] [blame] | 47 | if [ -n "${VIDEO_DEVICE}" ] && [ -e "${VIDEO_DEVICE}" ]; then |
Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 48 | info_msg "Running v4l2-compliance device test..." |
| 49 | LOG_FILE="${OUTPUT}/${TEST_SUITE}-output.txt" |
| 50 | test_cmd="v4l2-compliance -v -d ${VIDEO_DEVICE} 2>&1" |
| 51 | pipe0_status "${test_cmd}" "tee ${LOG_FILE}" |
| 52 | check_return "v4l2-compliance" |
| 53 | else |
| 54 | info_msg "Skipping v4l2-compliance device test..." |
| 55 | fi |
| 56 | |
Ryan Harkin | dd73c2a | 2018-04-20 11:40:36 +0100 | [diff] [blame] | 57 | # Parse test log. |
| 58 | grep -e FAIL -e OK "${LOG_FILE}" | \ |
| 59 | sed -e 's/^[ \t]*//' \ |
| 60 | -e 's/test //' \ |
| 61 | -e 's/ (Not Supported)//' \ |
| 62 | -e 's/ /_/g' \ |
| 63 | -e 's/:_/ /' \ |
Naresh Kamboju | 72fb6f4 | 2019-03-26 12:19:33 +0530 | [diff] [blame] | 64 | -e 's/ OK/ pass/' \ |
| 65 | -e 's/ FAIL/ fail/' \ |
Naresh Kamboju | 3aad7fc | 2019-03-27 21:31:54 +0530 | [diff] [blame] | 66 | -e 's/\//-/g' \ |
Chase Qi | 3cbb5e0 | 2018-09-14 15:27:37 +0800 | [diff] [blame] | 67 | >> "${RESULT_FILE}" |