Loading fs_mgr/tests/adb-remount-test.sh +72 −32 Original line number Diff line number Diff line Loading @@ -219,13 +219,31 @@ format_duration() { echo ${hours}:`expr ${minutes} / 10``expr ${minutes} % 10`:`expr ${seconds} / 10``expr ${seconds} % 10` } [ "USAGE: USB_DEVICE=\`usb_devnum [--next]\` USB_DEVICE contains cache. Update if system changes. Returns: the devnum for the USB_SERIAL device" ] usb_devnum() { if [ -n "${USB_SERIAL}" ]; then local usb_device=`cat ${USB_SERIAL%/serial}/devnum 2>/dev/null | tr -d ' \t\r\n'` if [ -n "${usb_device}" ]; then USB_DEVICE=dev${usb_device} elif [ -n "${USB_DEVICE}" -a "${1}" ]; then USB_DEVICE=dev`expr ${USB_DEVICE#dev} + 1` fi echo "${USB_DEVICE}" fi } [ "USAGE: adb_wait [timeout] Returns: waits until the device has returned for adb or optional timeout" ] adb_wait() { local ret if [ -n "${1}" ]; then echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} "${CR}" USB_DEVICE=`usb_devnum --next` echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} ${USB_DEVICE} "${CR}" timeout --preserve-status --signal=KILL ${1} adb wait-for-device 2>/dev/null ret=${?} echo -n " ${CR}" Loading @@ -233,6 +251,7 @@ adb_wait() { adb wait-for-device ret=${?} fi USB_DEVICE=`usb_devnum` if [ 0 = ${ret} -a -n "${ACTIVE_SLOT}" ]; then local active_slot=`get_active_slot` if [ X"${ACTIVE_SLOT}" != X"${active_slot}" ]; then Loading @@ -242,12 +261,15 @@ adb_wait() { return ${ret} } [ "USAGE: usb_status > stdout [ "USAGE: usb_status > stdout 2> stderr If adb_wait failed, check if device is in adb, recovery or fastboot mode and report status string. Assumes referenced right after adb_wait or fastboot_wait failued. If wait failed, check if device is in adb, recovery or fastboot mode and report status strings like \"(USB stack borken?)\", \"(In fastboot mode)\", \"(In recovery mode)\" or \"(in adb mode)\". Additional diagnostics may be provided to the stderr output. Returns: \"(USB stack borken?)\", \"(In fastboot mode)\" or \"(in adb mode)\"" ] Returns: USB status string" ] usb_status() { if inFastboot; then echo "(In fastboot mode)" Loading @@ -256,7 +278,20 @@ usb_status() { elif inAdb; then echo "(In adb mode)" else echo "(USB stack borken?)" echo "(USB stack borken for ${USB_ADDRESS})" USB_DEVICE=`usb_devnum` if [ -n "${USB_DEVICE}" ]; then echo "# lsusb -v -s ${USB_DEVICE#dev}" local D=`lsusb -v -s ${USB_DEVICE#dev} 2>&1` if [ -n "${D}" ]; then echo "${D}" else lsusb -v fi else echo "# lsusb -v (expected device missing)" lsusb -v fi >&2 fi } Loading @@ -268,7 +303,8 @@ fastboot_wait() { # fastboot has no wait-for-device, but it does an automatic # wait and requires (even a nonsensical) command to do so. if [ -n "${1}" ]; then echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} "${CR}" USB_DEVICE=`usb_devnum --next` echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} ${USB_DEVICE} "${CR}" timeout --preserve-status --signal=KILL ${1} fastboot wait-for-device >/dev/null 2>/dev/null ret=${?} echo -n " ${CR}" Loading @@ -278,11 +314,12 @@ fastboot_wait() { fi || inFastboot ret=${?} USB_DEVICE=`usb_devnum` if [ 0 = ${ret} -a -n "${ACTIVE_SLOT}" ]; then local active_slot=`get_active_slot` if [ X"${ACTIVE_SLOT}" != X"${active_slot}" ]; then echo "${ORANGE}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}" >&2 fi echo "${ORANGE}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}" fi >&2 fi return ${ret} } Loading @@ -293,7 +330,8 @@ Returns: waits until the device has returned for recovery or optional timeout" ] recovery_wait() { local ret if [ -n "${1}" ]; then echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} "${CR}" USB_DEVICE=`usb_devnum --next` echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} ${USB_DEVICE} "${CR}" timeout --preserve-status --signal=KILL ${1} adb wait-for-recovery 2>/dev/null ret=${?} echo -n " ${CR}" Loading @@ -301,11 +339,12 @@ recovery_wait() { adb wait-for-recovery ret=${?} fi USB_DEVICE=`usb_devnum` if [ 0 = ${ret} -a -n "${ACTIVE_SLOT}" ]; then local active_slot=`get_active_slot` if [ X"${ACTIVE_SLOT}" != X"${active_slot}" ]; then echo "${ORANGE}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}" >&2 fi echo "${ORANGE}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}" fi >&2 fi return ${ret} } Loading Loading @@ -370,10 +409,10 @@ fastboot_getvar() { O="${1}: <empty>" fi if [ -n "${2}" -a "${1}: ${2}" != "${O}" ]; then echo "${2} != ${O}" >&2 echo "${2} != ${O}" false return fi fi >&2 echo ${O} >&2 } Loading Loading @@ -430,16 +469,16 @@ If -d, or -t <epoch> argument is supplied, dump logcat. Returns: exit failure, report status" ] die() { if [ X"-d" = X"${1}" ]; then adb_logcat -b all -v nsec -d >&2 adb_logcat -b all -v nsec -d shift elif [ X"-t" = X"${1}" ]; then if [ -n "${2}" ]; then adb_logcat -b all -v nsec -t ${2} >&2 adb_logcat -b all -v nsec -t ${2} else adb_logcat -b all -v nsec -d >&2 adb_logcat -b all -v nsec -d fi shift 2 fi fi >&2 echo "${RED}[ FAILED ]${NORMAL} ${@}" >&2 cleanup restore Loading @@ -464,39 +503,39 @@ EXPECT_EQ() { if ! ( echo X"${rval}" | grep '^X'"${lval}"'$' >/dev/null 2>/dev/null ); then if [ `echo ${lval}${rval}${*} | wc -c` -gt 50 -o "${rval}" != "${rval% *}" ]; then echo "${prefix} expected \"${lval}\"" >&2 echo "${prefix} expected \"${lval}\"" echo "${prefix} got \"${rval}\"" | sed ': again N s/\(\n\)\([^ ]\)/\1 \2/ t again' >&2 t again' if [ -n "${*}" ] ; then echo "${prefix} ${*}" >&2 echo "${prefix} ${*}" fi else echo "${prefix} expected \"${lval}\" got \"${rval}\" ${*}" >&2 fi echo "${prefix} expected \"${lval}\" got \"${rval}\" ${*}" fi >&2 return ${error} fi if [ -n "${*}" ] ; then prefix="${GREEN}[ INFO ]${NORMAL}" if [ X"${lval}" != X"${rval}" ]; then # we were supplied a regex? if [ `echo ${lval}${rval}${*} | wc -c` -gt 60 -o "${rval}" != "${rval% *}" ]; then echo "${prefix} ok \"${lval}\"" >&2 echo "${prefix} ok \"${lval}\"" echo " = \"${rval}\"" | sed ': again N s/\(\n\)\([^ ]\)/\1 \2/ t again' >&2 t again' if [ -n "${*}" ] ; then echo "${prefix} ${*}" >&2 echo "${prefix} ${*}" fi else echo "${prefix} ok \"${lval}\" = \"${rval}\" ${*}" >&2 echo "${prefix} ok \"${lval}\" = \"${rval}\" ${*}" fi else echo "${prefix} ok \"${lval}\" ${*}" >&2 fi echo "${prefix} ok \"${lval}\" ${*}" fi >&2 fi return 0 } Loading Loading @@ -631,7 +670,8 @@ if [ -n "${USB_SERIAL}" ]; then USB_ADDRESS=usb${USB_ADDRESS##*/} fi [ -z "${ANDROID_SERIAL}${USB_ADDRESS}" ] || echo "${BLUE}[ INFO ]${NORMAL}" ${ANDROID_SERIAL} ${USB_ADDRESS} >&2 USB_DEVICE=`usb_devnum` echo "${BLUE}[ INFO ]${NORMAL}" ${ANDROID_SERIAL} ${USB_ADDRESS} ${USB_DEVICE} >&2 BUILD_DESCRIPTION=`get_property ro.build.description` [ -z "${BUILD_DESCRIPTION}" ] || echo "${BLUE}[ INFO ]${NORMAL} ${BUILD_DESCRIPTION}" >&2 Loading Loading @@ -1206,7 +1246,7 @@ echo "${GREEN}[ OK ]${NORMAL} mount -o rw,remount command works" >&2 # Prerequisite is a prepped device from above. adb_reboot && adb_wait 2m || die "lost device after reboot to ro state (USB stack broken?)" die "lost device after reboot to ro state `usb_status`" adb_sh grep " /vendor .* rw," /proc/mounts >/dev/null </dev/null && die "/vendor is not read-only" adb_su remount vendor </dev/null || Loading @@ -1226,7 +1266,7 @@ for d in ${OVERLAYFS_BACKING}; do done adb_reboot && adb_wait 2m || die "lost device after reboot after wipe (USB stack broken?)" die "lost device after reboot after wipe `usb_status`" adb_sh grep " /vendor .* rw," /proc/mounts >/dev/null </dev/null && die "/vendor is not read-only" adb_su remount vendor </dev/null || Loading Loading
fs_mgr/tests/adb-remount-test.sh +72 −32 Original line number Diff line number Diff line Loading @@ -219,13 +219,31 @@ format_duration() { echo ${hours}:`expr ${minutes} / 10``expr ${minutes} % 10`:`expr ${seconds} / 10``expr ${seconds} % 10` } [ "USAGE: USB_DEVICE=\`usb_devnum [--next]\` USB_DEVICE contains cache. Update if system changes. Returns: the devnum for the USB_SERIAL device" ] usb_devnum() { if [ -n "${USB_SERIAL}" ]; then local usb_device=`cat ${USB_SERIAL%/serial}/devnum 2>/dev/null | tr -d ' \t\r\n'` if [ -n "${usb_device}" ]; then USB_DEVICE=dev${usb_device} elif [ -n "${USB_DEVICE}" -a "${1}" ]; then USB_DEVICE=dev`expr ${USB_DEVICE#dev} + 1` fi echo "${USB_DEVICE}" fi } [ "USAGE: adb_wait [timeout] Returns: waits until the device has returned for adb or optional timeout" ] adb_wait() { local ret if [ -n "${1}" ]; then echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} "${CR}" USB_DEVICE=`usb_devnum --next` echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} ${USB_DEVICE} "${CR}" timeout --preserve-status --signal=KILL ${1} adb wait-for-device 2>/dev/null ret=${?} echo -n " ${CR}" Loading @@ -233,6 +251,7 @@ adb_wait() { adb wait-for-device ret=${?} fi USB_DEVICE=`usb_devnum` if [ 0 = ${ret} -a -n "${ACTIVE_SLOT}" ]; then local active_slot=`get_active_slot` if [ X"${ACTIVE_SLOT}" != X"${active_slot}" ]; then Loading @@ -242,12 +261,15 @@ adb_wait() { return ${ret} } [ "USAGE: usb_status > stdout [ "USAGE: usb_status > stdout 2> stderr If adb_wait failed, check if device is in adb, recovery or fastboot mode and report status string. Assumes referenced right after adb_wait or fastboot_wait failued. If wait failed, check if device is in adb, recovery or fastboot mode and report status strings like \"(USB stack borken?)\", \"(In fastboot mode)\", \"(In recovery mode)\" or \"(in adb mode)\". Additional diagnostics may be provided to the stderr output. Returns: \"(USB stack borken?)\", \"(In fastboot mode)\" or \"(in adb mode)\"" ] Returns: USB status string" ] usb_status() { if inFastboot; then echo "(In fastboot mode)" Loading @@ -256,7 +278,20 @@ usb_status() { elif inAdb; then echo "(In adb mode)" else echo "(USB stack borken?)" echo "(USB stack borken for ${USB_ADDRESS})" USB_DEVICE=`usb_devnum` if [ -n "${USB_DEVICE}" ]; then echo "# lsusb -v -s ${USB_DEVICE#dev}" local D=`lsusb -v -s ${USB_DEVICE#dev} 2>&1` if [ -n "${D}" ]; then echo "${D}" else lsusb -v fi else echo "# lsusb -v (expected device missing)" lsusb -v fi >&2 fi } Loading @@ -268,7 +303,8 @@ fastboot_wait() { # fastboot has no wait-for-device, but it does an automatic # wait and requires (even a nonsensical) command to do so. if [ -n "${1}" ]; then echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} "${CR}" USB_DEVICE=`usb_devnum --next` echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} ${USB_DEVICE} "${CR}" timeout --preserve-status --signal=KILL ${1} fastboot wait-for-device >/dev/null 2>/dev/null ret=${?} echo -n " ${CR}" Loading @@ -278,11 +314,12 @@ fastboot_wait() { fi || inFastboot ret=${?} USB_DEVICE=`usb_devnum` if [ 0 = ${ret} -a -n "${ACTIVE_SLOT}" ]; then local active_slot=`get_active_slot` if [ X"${ACTIVE_SLOT}" != X"${active_slot}" ]; then echo "${ORANGE}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}" >&2 fi echo "${ORANGE}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}" fi >&2 fi return ${ret} } Loading @@ -293,7 +330,8 @@ Returns: waits until the device has returned for recovery or optional timeout" ] recovery_wait() { local ret if [ -n "${1}" ]; then echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} "${CR}" USB_DEVICE=`usb_devnum --next` echo -n ". . . waiting `format_duration ${1}`" ${ANDROID_SERIAL} ${USB_ADDRESS} ${USB_DEVICE} "${CR}" timeout --preserve-status --signal=KILL ${1} adb wait-for-recovery 2>/dev/null ret=${?} echo -n " ${CR}" Loading @@ -301,11 +339,12 @@ recovery_wait() { adb wait-for-recovery ret=${?} fi USB_DEVICE=`usb_devnum` if [ 0 = ${ret} -a -n "${ACTIVE_SLOT}" ]; then local active_slot=`get_active_slot` if [ X"${ACTIVE_SLOT}" != X"${active_slot}" ]; then echo "${ORANGE}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}" >&2 fi echo "${ORANGE}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}" fi >&2 fi return ${ret} } Loading Loading @@ -370,10 +409,10 @@ fastboot_getvar() { O="${1}: <empty>" fi if [ -n "${2}" -a "${1}: ${2}" != "${O}" ]; then echo "${2} != ${O}" >&2 echo "${2} != ${O}" false return fi fi >&2 echo ${O} >&2 } Loading Loading @@ -430,16 +469,16 @@ If -d, or -t <epoch> argument is supplied, dump logcat. Returns: exit failure, report status" ] die() { if [ X"-d" = X"${1}" ]; then adb_logcat -b all -v nsec -d >&2 adb_logcat -b all -v nsec -d shift elif [ X"-t" = X"${1}" ]; then if [ -n "${2}" ]; then adb_logcat -b all -v nsec -t ${2} >&2 adb_logcat -b all -v nsec -t ${2} else adb_logcat -b all -v nsec -d >&2 adb_logcat -b all -v nsec -d fi shift 2 fi fi >&2 echo "${RED}[ FAILED ]${NORMAL} ${@}" >&2 cleanup restore Loading @@ -464,39 +503,39 @@ EXPECT_EQ() { if ! ( echo X"${rval}" | grep '^X'"${lval}"'$' >/dev/null 2>/dev/null ); then if [ `echo ${lval}${rval}${*} | wc -c` -gt 50 -o "${rval}" != "${rval% *}" ]; then echo "${prefix} expected \"${lval}\"" >&2 echo "${prefix} expected \"${lval}\"" echo "${prefix} got \"${rval}\"" | sed ': again N s/\(\n\)\([^ ]\)/\1 \2/ t again' >&2 t again' if [ -n "${*}" ] ; then echo "${prefix} ${*}" >&2 echo "${prefix} ${*}" fi else echo "${prefix} expected \"${lval}\" got \"${rval}\" ${*}" >&2 fi echo "${prefix} expected \"${lval}\" got \"${rval}\" ${*}" fi >&2 return ${error} fi if [ -n "${*}" ] ; then prefix="${GREEN}[ INFO ]${NORMAL}" if [ X"${lval}" != X"${rval}" ]; then # we were supplied a regex? if [ `echo ${lval}${rval}${*} | wc -c` -gt 60 -o "${rval}" != "${rval% *}" ]; then echo "${prefix} ok \"${lval}\"" >&2 echo "${prefix} ok \"${lval}\"" echo " = \"${rval}\"" | sed ': again N s/\(\n\)\([^ ]\)/\1 \2/ t again' >&2 t again' if [ -n "${*}" ] ; then echo "${prefix} ${*}" >&2 echo "${prefix} ${*}" fi else echo "${prefix} ok \"${lval}\" = \"${rval}\" ${*}" >&2 echo "${prefix} ok \"${lval}\" = \"${rval}\" ${*}" fi else echo "${prefix} ok \"${lval}\" ${*}" >&2 fi echo "${prefix} ok \"${lval}\" ${*}" fi >&2 fi return 0 } Loading Loading @@ -631,7 +670,8 @@ if [ -n "${USB_SERIAL}" ]; then USB_ADDRESS=usb${USB_ADDRESS##*/} fi [ -z "${ANDROID_SERIAL}${USB_ADDRESS}" ] || echo "${BLUE}[ INFO ]${NORMAL}" ${ANDROID_SERIAL} ${USB_ADDRESS} >&2 USB_DEVICE=`usb_devnum` echo "${BLUE}[ INFO ]${NORMAL}" ${ANDROID_SERIAL} ${USB_ADDRESS} ${USB_DEVICE} >&2 BUILD_DESCRIPTION=`get_property ro.build.description` [ -z "${BUILD_DESCRIPTION}" ] || echo "${BLUE}[ INFO ]${NORMAL} ${BUILD_DESCRIPTION}" >&2 Loading Loading @@ -1206,7 +1246,7 @@ echo "${GREEN}[ OK ]${NORMAL} mount -o rw,remount command works" >&2 # Prerequisite is a prepped device from above. adb_reboot && adb_wait 2m || die "lost device after reboot to ro state (USB stack broken?)" die "lost device after reboot to ro state `usb_status`" adb_sh grep " /vendor .* rw," /proc/mounts >/dev/null </dev/null && die "/vendor is not read-only" adb_su remount vendor </dev/null || Loading @@ -1226,7 +1266,7 @@ for d in ${OVERLAYFS_BACKING}; do done adb_reboot && adb_wait 2m || die "lost device after reboot after wipe (USB stack broken?)" die "lost device after reboot after wipe `usb_status`" adb_sh grep " /vendor .* rw," /proc/mounts >/dev/null </dev/null && die "/vendor is not read-only" adb_su remount vendor </dev/null || Loading