adb-remount-test: Add LOG() function
Right now there are a lot of log commands in the form of "echo <color code><log type><color code> [msg]... >&2" which is painful to read, and test writers often accidentally omit the trailing ">&2". Add a LOG() function which takes care of the log formatting and stderr redirecting once and for all. Also bulk edit existing log commands to use LOG() everywhere. Bug: 243116800 Test: adb-remount-test --color Change-Id: I04beb9e09b28c08a3a6f4309bf2d4b6de906df90
This commit is contained in:
parent
0331a322b0
commit
bd9335d43d
1 changed files with 119 additions and 82 deletions
|
@ -69,6 +69,43 @@ screen_wait=true
|
|||
## Helper Functions
|
||||
##
|
||||
|
||||
[ "USAGE: LOG [RUN|OK|PASSED|WARNING|ERROR|FAILED|INFO] [message]..." ]
|
||||
LOG() {
|
||||
case "${1}" in
|
||||
R*)
|
||||
shift
|
||||
echo "${GREEN}[ RUN ]${NORMAL}" "${@}"
|
||||
;;
|
||||
OK)
|
||||
shift
|
||||
echo "${GREEN}[ OK ]${NORMAL}" "${@}"
|
||||
;;
|
||||
P*)
|
||||
shift
|
||||
echo "${GREEN}[ PASSED ]${NORMAL}" "${@}"
|
||||
;;
|
||||
W*)
|
||||
shift
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL}" "${@}"
|
||||
;;
|
||||
E*)
|
||||
shift
|
||||
echo "${RED}[ ERROR ]${NORMAL}" "${@}"
|
||||
;;
|
||||
F*)
|
||||
shift
|
||||
echo "${RED}[ FAILED ]${NORMAL}" "${@}"
|
||||
;;
|
||||
I*)
|
||||
shift
|
||||
echo "${BLUE}[ INFO ]${NORMAL}" "${@}"
|
||||
;;
|
||||
*)
|
||||
echo "${BLUE}[ INFO ]${NORMAL}" "${@}"
|
||||
;;
|
||||
esac >&2
|
||||
}
|
||||
|
||||
[ "USAGE: inFastboot
|
||||
|
||||
Returns: true if device is in fastboot mode" ]
|
||||
|
@ -144,7 +181,7 @@ adb_date() {
|
|||
|
||||
Returns: the logcat output" ]
|
||||
adb_logcat() {
|
||||
echo "${RED}[ INFO ]${NORMAL} logcat ${@}" >&2 &&
|
||||
LOG INFO "logcat ${*}"
|
||||
adb logcat "${@}" </dev/null |
|
||||
tr -d '\r' |
|
||||
grep -v 'logd : logdr: UID=' |
|
||||
|
@ -165,7 +202,7 @@ avc_check() {
|
|||
if [ -z "${L}" ]; then
|
||||
return
|
||||
fi
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} unlabeled sepolicy violations:" >&2
|
||||
LOG WARNING "unlabeled sepolicy violations:"
|
||||
echo "${L}" | sed "s/^/${INDENT}/" >&2
|
||||
}
|
||||
|
||||
|
@ -311,7 +348,7 @@ adb_wait() {
|
|||
if [ 0 = ${ret} -a -n "${ACTIVE_SLOT}" ]; then
|
||||
local active_slot=`get_active_slot`
|
||||
if [ X"${ACTIVE_SLOT}" != X"${active_slot}" ]; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}" >&2
|
||||
LOG WARNING "Active slot changed from ${ACTIVE_SLOT} to ${active_slot}"
|
||||
fi
|
||||
fi
|
||||
local end=`date +%s`
|
||||
|
@ -340,8 +377,8 @@ adb_wait() {
|
|||
;;
|
||||
esac
|
||||
if ${_print_time} || [ -n "${reason}" ]; then
|
||||
echo "${BLUE}[ INFO ]${NORMAL} adb wait duration ${diff_time}${reason}"
|
||||
fi >&2
|
||||
LOG INFO "adb wait duration ${diff_time}${reason}"
|
||||
fi
|
||||
|
||||
return ${ret}
|
||||
}
|
||||
|
@ -414,8 +451,8 @@ fastboot_wait() {
|
|||
if [ 0 = ${ret} -a -n "${ACTIVE_SLOT}" ]; then
|
||||
local active_slot=`get_active_slot`
|
||||
if [ X"${ACTIVE_SLOT}" != X"${active_slot}" ]; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}"
|
||||
fi >&2
|
||||
LOG WARNING "Active slot changed from ${ACTIVE_SLOT} to ${active_slot}"
|
||||
fi
|
||||
fi
|
||||
return ${ret}
|
||||
}
|
||||
|
@ -439,8 +476,8 @@ recovery_wait() {
|
|||
if [ 0 = ${ret} -a -n "${ACTIVE_SLOT}" ]; then
|
||||
local active_slot=`get_active_slot`
|
||||
if [ X"${ACTIVE_SLOT}" != X"${active_slot}" ]; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}"
|
||||
fi >&2
|
||||
LOG WARNING "Active slot changed from ${ACTIVE_SLOT} to ${active_slot}"
|
||||
fi
|
||||
fi
|
||||
return ${ret}
|
||||
}
|
||||
|
@ -498,7 +535,7 @@ wait_for_screen() {
|
|||
counter=$(( ${counter} + 1 ))
|
||||
if [ ${counter} -gt ${timeout} ]; then
|
||||
${exit_function}
|
||||
echo "ERROR: wait_for_screen() timed out (`format_duration ${timeout}`)" >&2
|
||||
LOG ERROR "wait_for_screen() timed out ($(format_duration ${timeout}))"
|
||||
return 1
|
||||
fi
|
||||
sleep 1
|
||||
|
@ -594,12 +631,12 @@ Prints the duration of the test
|
|||
Returns: reports duration" ]
|
||||
test_duration() {
|
||||
if ${print_time}; then
|
||||
echo "${BLUE}[ INFO ]${NORMAL} end `date`"
|
||||
LOG INFO "end $(date)"
|
||||
[ -n "${start_time}" ] || return
|
||||
end_time=`date +%s`
|
||||
local diff_time=$(( ${end_time} - ${start_time} ))
|
||||
echo "${BLUE}[ INFO ]${NORMAL} duration `format_duration ${diff_time}`"
|
||||
fi >&2
|
||||
LOG INFO "duration $(format_duration ${diff_time})"
|
||||
fi
|
||||
}
|
||||
|
||||
[ "USAGE: die [-d|-t <epoch>] [message] >/dev/stderr
|
||||
|
@ -619,7 +656,7 @@ die() {
|
|||
fi
|
||||
shift 2
|
||||
fi >&2
|
||||
echo "${RED}[ FAILED ]${NORMAL} ${@}" >&2
|
||||
LOG FAILED "${@}"
|
||||
cleanup
|
||||
restore
|
||||
test_duration
|
||||
|
@ -798,7 +835,7 @@ surgically_wipe_overlayfs() {
|
|||
local wiped_anything=false
|
||||
for d in ${OVERLAYFS_BACKING}; do
|
||||
if adb_su test -d "/${d}/overlay" </dev/null; then
|
||||
echo "${BLUE}[ INFO ]${NORMAL} /${d}/overlay is setup, surgically wiping" >&2
|
||||
LOG INFO "/${d}/overlay is setup, surgically wiping"
|
||||
adb_su rm -rf "/${d}/overlay" </dev/null
|
||||
wiped_anything=true
|
||||
fi
|
||||
|
@ -911,20 +948,20 @@ if ! ${color}; then
|
|||
fi
|
||||
|
||||
if ${print_time}; then
|
||||
echo "${BLUE}[ INFO ]${NORMAL}" start `date` >&2
|
||||
LOG INFO "start $(date)"
|
||||
fi
|
||||
|
||||
inFastboot && die "device in fastboot mode"
|
||||
inRecovery && die "device in recovery mode"
|
||||
if ! inAdb; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} device not in adb mode" >&2
|
||||
LOG WARNING "device not in adb mode"
|
||||
adb_wait ${ADB_WAIT}
|
||||
fi
|
||||
inAdb || die "specified device not in adb mode"
|
||||
isDebuggable || die "device not a debug build"
|
||||
enforcing=true
|
||||
if ! adb_su getenforce </dev/null | grep 'Enforcing' >/dev/null; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} device does not have sepolicy in enforcing mode" >&2
|
||||
LOG WARNING "device does not have sepolicy in enforcing mode"
|
||||
enforcing=false
|
||||
fi
|
||||
|
||||
|
@ -950,16 +987,16 @@ if [ -n "${USB_SERIAL}" ]; then
|
|||
fi
|
||||
[ -z "${ANDROID_SERIAL}${USB_ADDRESS}" ] ||
|
||||
USB_DEVICE=`usb_devnum`
|
||||
echo "${BLUE}[ INFO ]${NORMAL}" ${ANDROID_SERIAL} ${USB_ADDRESS} ${USB_DEVICE} >&2
|
||||
LOG INFO "${ANDROID_SERIAL} ${USB_ADDRESS} ${USB_DEVICE}"
|
||||
BUILD_DESCRIPTION=`get_property ro.build.description`
|
||||
[ -z "${BUILD_DESCRIPTION}" ] ||
|
||||
echo "${BLUE}[ INFO ]${NORMAL} ${BUILD_DESCRIPTION}" >&2
|
||||
LOG INFO "${BUILD_DESCRIPTION}"
|
||||
KERNEL_VERSION="`adb_su cat /proc/version </dev/null 2>/dev/null`"
|
||||
[ -z "${KERNEL_VERSION}" ] ||
|
||||
echo "${BLUE}[ INFO ]${NORMAL} ${KERNEL_VERSION}" >&2
|
||||
LOG INFO "${KERNEL_VERSION}"
|
||||
ACTIVE_SLOT=`get_active_slot`
|
||||
[ -z "${ACTIVE_SLOT}" ] ||
|
||||
echo "${BLUE}[ INFO ]${NORMAL} active slot is ${ACTIVE_SLOT}" >&2
|
||||
LOG INFO "active slot is ${ACTIVE_SLOT}"
|
||||
|
||||
# Acquire list of system partitions
|
||||
|
||||
|
@ -976,7 +1013,7 @@ MOUNTS="`for i in ${PARTITIONS}; do
|
|||
echo /${i}
|
||||
done |
|
||||
tr '\n' ' '`"
|
||||
echo "${BLUE}[ INFO ]${NORMAL} System Partitions list: ${PARTITIONS}" >&2
|
||||
LOG INFO "System Partitions list: ${PARTITIONS}"
|
||||
|
||||
# Report existing partition sizes
|
||||
adb_sh ls -l /dev/block/by-name/ /dev/block/mapper/ </dev/null 2>/dev/null |
|
||||
|
@ -998,16 +1035,16 @@ adb_sh ls -l /dev/block/by-name/ /dev/block/mapper/ </dev/null 2>/dev/null |
|
|||
esac
|
||||
size=`adb_su cat /sys/block/${device}/size 2>/dev/null </dev/null` &&
|
||||
size=$(( ${size} / 2 )) &&
|
||||
echo "${BLUE}[ INFO ]${NORMAL} partition ${name} device ${device} size ${size}K" >&2
|
||||
LOG INFO "partition ${name} device ${device} size ${size}K"
|
||||
done
|
||||
|
||||
# If reboot too soon after fresh flash, could trip device update failure logic
|
||||
if ${screen_wait}; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} waiting for screen to come up. Consider --no-wait-screen option" >&2
|
||||
LOG WARNING "waiting for screen to come up. Consider --no-wait-screen option"
|
||||
fi
|
||||
if ! wait_for_screen && ${screen_wait}; then
|
||||
screen_wait=false
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} not healthy, no launcher, skipping wait for screen" >&2
|
||||
LOG WARNING "not healthy, no launcher, skipping wait for screen"
|
||||
fi
|
||||
|
||||
# Can we test remount -R command?
|
||||
|
@ -1041,14 +1078,14 @@ else
|
|||
adb_wait ${ADB_WAIT}
|
||||
}
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} Testing adb shell su root remount -R command" >&2
|
||||
LOG RUN "Testing adb shell su root remount -R command"
|
||||
|
||||
avc_check
|
||||
T=`adb_date`
|
||||
adb_su remount -R system </dev/null
|
||||
err=${?}
|
||||
if [ "${err}" != 0 ]; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} adb shell su root remount -R system = ${err}, likely did not reboot!" >&2
|
||||
LOG WARNING "adb shell su root remount -R system = ${err}, likely did not reboot!"
|
||||
T="-t ${T}"
|
||||
else
|
||||
# Rebooted, logcat will be meaningless, and last logcat will likely be clear
|
||||
|
@ -1064,10 +1101,10 @@ ${INDENT}ro.boot.verifiedbootstate=\"`get_property ro.boot.verifiedbootstate`\"
|
|||
${INDENT}partition.system.verified=\"`get_property partition.system.verified`\""
|
||||
fi
|
||||
|
||||
echo "${GREEN}[ OK ]${NORMAL} adb shell su root remount -R command" >&2
|
||||
LOG OK "adb shell su root remount -R command"
|
||||
fi
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} Testing kernel support for overlayfs" >&2
|
||||
LOG RUN "Testing kernel support for overlayfs"
|
||||
|
||||
adb_wait || die "wait for device failed"
|
||||
adb_root ||
|
||||
|
@ -1075,27 +1112,27 @@ adb_root ||
|
|||
|
||||
adb_test -d /sys/module/overlay ||
|
||||
adb_sh grep "nodev${TAB}overlay" /proc/filesystems </dev/null >/dev/null 2>/dev/null &&
|
||||
echo "${GREEN}[ OK ]${NORMAL} overlay module present" >&2 ||
|
||||
LOG OK "overlay module present" ||
|
||||
(
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} overlay module not present" >&2 &&
|
||||
LOG WARNING "overlay module not present" &&
|
||||
false
|
||||
) ||
|
||||
overlayfs_supported=false
|
||||
if ${overlayfs_supported}; then
|
||||
adb_test -f /sys/module/overlay/parameters/override_creds &&
|
||||
echo "${GREEN}[ OK ]${NORMAL} overlay module supports override_creds" >&2 ||
|
||||
LOG OK "overlay module supports override_creds" ||
|
||||
case `adb_sh uname -r </dev/null` in
|
||||
4.[456789].* | 4.[1-9][0-9]* | [56789].*)
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} overlay module does not support override_creds" >&2 &&
|
||||
LOG WARNING "overlay module does not support override_creds" &&
|
||||
overlayfs_supported=false
|
||||
;;
|
||||
*)
|
||||
echo "${GREEN}[ OK ]${NORMAL} overlay module uses caller's creds" >&2
|
||||
LOG OK "overlay module uses caller's creds"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} Checking current overlayfs status" >&2
|
||||
LOG RUN "Checking current overlayfs status"
|
||||
|
||||
# We can not universally use adb enable-verity to ensure device is
|
||||
# in a overlayfs disabled state since it can prevent reboot on
|
||||
|
@ -1103,7 +1140,7 @@ echo "${GREEN}[ RUN ]${NORMAL} Checking current overlayfs status" >&2
|
|||
# So lets do our best to surgically wipe the overlayfs state without
|
||||
# having to go through enable-verity transition.
|
||||
if surgically_wipe_overlayfs; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} rebooting before test" >&2
|
||||
LOG WARNING "rebooting before test"
|
||||
adb_reboot &&
|
||||
adb_wait ${ADB_WAIT} ||
|
||||
die "lost device after reboot after wipe `usb_status`"
|
||||
|
@ -1112,7 +1149,7 @@ if surgically_wipe_overlayfs; then
|
|||
fi
|
||||
is_overlayfs_mounted &&
|
||||
die "overlay takeover unexpected at this phase"
|
||||
echo "${GREEN}[ OK ]${NORMAL} no overlay present before setup" >&2
|
||||
LOG OK "no overlay present before setup"
|
||||
|
||||
overlayfs_needed=true
|
||||
D=`adb_sh cat /proc/mounts </dev/null |
|
||||
|
@ -1146,7 +1183,7 @@ elif ! ${overlayfs_supported}; then
|
|||
die "need overlayfs, but do not have it"
|
||||
fi
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} disable-verity -R" >&2
|
||||
LOG RUN "disable-verity -R"
|
||||
|
||||
L=
|
||||
T=$(adb_date)
|
||||
|
@ -1160,7 +1197,7 @@ fi
|
|||
|
||||
# Fuzzy search for a line that contains "overlay" and "fail". Informational only.
|
||||
if echo "${H}" | grep -i "overlay" | grep -iq "fail"; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} overlayfs setup whined" >&2
|
||||
LOG WARNING "overlayfs setup whined"
|
||||
fi
|
||||
|
||||
adb_wait "${ADB_WAIT}" &&
|
||||
|
@ -1173,7 +1210,7 @@ if ${overlayfs_needed}; then
|
|||
fi
|
||||
fi
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} remount" >&2
|
||||
LOG RUN "remount"
|
||||
|
||||
# Feed log with selinux denials as baseline before overlays
|
||||
adb_unroot
|
||||
|
@ -1200,17 +1237,17 @@ if ${overlayfs_needed}; then
|
|||
die -t ${T} "overlay takeover failed"
|
||||
fi
|
||||
echo "${D}" | grep "^overlay .* /system\$" >/dev/null ||
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} overlay takeover not complete" >&2
|
||||
LOG WARNING "overlay takeover not complete"
|
||||
if [ -z "${virtual_ab}" ]; then
|
||||
scratch_partition=scratch
|
||||
fi
|
||||
if echo "${D}" | grep " /mnt/scratch" >/dev/null; then
|
||||
echo "${BLUE}[ INFO ]${NORMAL} using ${scratch_partition} dynamic partition for overrides" >&2
|
||||
LOG INFO "using ${scratch_partition} dynamic partition for overrides"
|
||||
fi
|
||||
M=`adb_sh cat /proc/mounts </dev/null |
|
||||
sed -n 's@\([^ ]*\) /mnt/scratch \([^ ]*\) .*@\2 on \1@p'`
|
||||
[ -n "${M}" ] &&
|
||||
echo "${BLUE}[ INFO ]${NORMAL} scratch filesystem ${M}" >&2
|
||||
LOG INFO "scratch filesystem ${M}"
|
||||
uses_dynamic_scratch=true
|
||||
if [ "${M}" != "${M##*/dev/block/by-name/}" ]; then
|
||||
uses_dynamic_scratch=false
|
||||
|
@ -1224,10 +1261,10 @@ if ${overlayfs_needed}; then
|
|||
done` &&
|
||||
[ -n "${scratch_size}" ] ||
|
||||
die "scratch size"
|
||||
echo "${BLUE}[ INFO ]${NORMAL} scratch size ${scratch_size}KB" >&2
|
||||
LOG INFO "scratch size ${scratch_size}KB"
|
||||
for d in ${OVERLAYFS_BACKING}; do
|
||||
if adb_test -d /${d}/overlay/system/upper; then
|
||||
echo "${BLUE}[ INFO ]${NORMAL} /${d}/overlay is setup" >&2
|
||||
LOG INFO "/${d}/overlay is setup"
|
||||
fi
|
||||
done
|
||||
|
||||
|
@ -1278,7 +1315,7 @@ fi
|
|||
|
||||
# Check something.
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} push content to ${MOUNTS}" >&2
|
||||
LOG RUN "push content to ${MOUNTS}"
|
||||
|
||||
A="Hello World! $(date)"
|
||||
for i in ${MOUNTS}; do
|
||||
|
@ -1312,11 +1349,11 @@ adb pull /system/lib/bootstrap/libc.so ${tempdir}/libc.so.fromdevice >/dev/null
|
|||
diff ${tempdir}/libc.so ${tempdir}/libc.so.fromdevice > /dev/null ||
|
||||
die "libc.so differ"
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} reboot to confirm content persistent" >&2
|
||||
LOG RUN "reboot to confirm content persistent"
|
||||
|
||||
fixup_from_recovery() {
|
||||
inRecovery || return 1
|
||||
echo "${YELLOW}[ ERROR ]${NORMAL} Device in recovery" >&2
|
||||
LOG ERROR "Device in recovery"
|
||||
adb reboot </dev/null
|
||||
adb_wait ${ADB_WAIT}
|
||||
}
|
||||
|
@ -1336,8 +1373,8 @@ if ${overlayfs_needed}; then
|
|||
adb_su sed -n '1,/overlay \/system/p' /proc/mounts </dev/null |
|
||||
skip_administrative_mounts |
|
||||
grep -v ' \(erofs\|squashfs\|ext4\|f2fs\|vfat\) ' &&
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} overlay takeover after first stage init" >&2 ||
|
||||
echo "${GREEN}[ OK ]${NORMAL} overlay takeover in first stage init" >&2
|
||||
LOG WARNING "overlay takeover after first stage init" ||
|
||||
LOG OK "overlay takeover in first stage init"
|
||||
fi
|
||||
|
||||
if ${enforcing}; then
|
||||
|
@ -1345,7 +1382,7 @@ if ${enforcing}; then
|
|||
die "device not in unroot'd state"
|
||||
B="`adb_cat /vendor/hello 2>&1`"
|
||||
check_eq "cat: /vendor/hello: Permission denied" "${B}" vendor after reboot w/o root
|
||||
echo "${GREEN}[ OK ]${NORMAL} /vendor content correct MAC after reboot" >&2
|
||||
LOG OK "/vendor content correct MAC after reboot"
|
||||
# Feed unprivileged log with selinux denials as a result of overlays
|
||||
wait_for_screen
|
||||
adb_sh find ${MOUNTS} </dev/null >/dev/null 2>/dev/null || true
|
||||
|
@ -1363,7 +1400,7 @@ adb_root ||
|
|||
for i in ${MOUNTS}; do
|
||||
B="`adb_cat ${i}/hello`"
|
||||
check_eq "${A}" "${B}" ${i#/} after reboot
|
||||
echo "${GREEN}[ OK ]${NORMAL} ${i} content remains after reboot" >&2
|
||||
LOG OK "${i} content remains after reboot"
|
||||
done
|
||||
|
||||
check_eq "${SYSTEM_INO}" "`adb_sh stat --format=%i /system/hello </dev/null`" system inode after reboot
|
||||
|
@ -1381,9 +1418,9 @@ rm -rf ${tempdir}
|
|||
cleanup() {
|
||||
true
|
||||
}
|
||||
echo "${GREEN}[ OK ]${NORMAL} /system/lib/bootstrap/libc.so content remains after reboot" >&2
|
||||
LOG OK "/system/lib/bootstrap/libc.so content remains after reboot"
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} flash vendor, confirm its content disappears" >&2
|
||||
LOG RUN "flash vendor, confirm its content disappears"
|
||||
|
||||
H=`adb_sh echo '${HOSTNAME}' </dev/null 2>/dev/null`
|
||||
is_bootloader_fastboot=false
|
||||
|
@ -1392,20 +1429,20 @@ is_bootloader_fastboot=false
|
|||
is_userspace_fastboot=false
|
||||
|
||||
if ! ${is_bootloader_fastboot}; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} does not support fastboot, skipping" >&2
|
||||
LOG WARNING "does not support fastboot, skipping"
|
||||
elif [ -z "${ANDROID_PRODUCT_OUT}" ]; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} build tree not setup, skipping" >&2
|
||||
LOG WARNING "build tree not setup, skipping"
|
||||
elif [ ! -s "${ANDROID_PRODUCT_OUT}/vendor.img" ]; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} vendor image missing, skipping" >&2
|
||||
LOG WARNING "vendor image missing, skipping"
|
||||
elif [ "${ANDROID_PRODUCT_OUT}" = "${ANDROID_PRODUCT_OUT%*/${H}}" ]; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} wrong vendor image, skipping" >&2
|
||||
LOG WARNING "wrong vendor image, skipping"
|
||||
elif [ -z "${ANDROID_HOST_OUT}" ]; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} please run lunch, skipping" >&2
|
||||
LOG WARNING "please run lunch, skipping"
|
||||
elif ! (
|
||||
adb_cat /vendor/build.prop |
|
||||
cmp -s ${ANDROID_PRODUCT_OUT}/vendor/build.prop
|
||||
) >/dev/null 2>/dev/null; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} vendor image signature mismatch, skipping" >&2
|
||||
LOG WARNING "vendor image signature mismatch, skipping"
|
||||
else
|
||||
wait_for_screen
|
||||
avc_check
|
||||
|
@ -1439,19 +1476,19 @@ else
|
|||
die "Reboot into fastboot"
|
||||
fi
|
||||
if ${uses_dynamic_scratch}; then
|
||||
echo "${BLUE}[ INFO ]${NORMAL} expect fastboot erase ${scratch_partition} to fail" >&2
|
||||
LOG INFO "expect fastboot erase ${scratch_partition} to fail"
|
||||
fastboot erase ${scratch_partition} &&
|
||||
( fastboot reboot || true) &&
|
||||
die "fastboot can erase ${scratch_partition}"
|
||||
fi
|
||||
echo "${BLUE}[ INFO ]${NORMAL} expect fastboot format ${scratch_partition} to fail" >&2
|
||||
LOG INFO "expect fastboot format ${scratch_partition} to fail"
|
||||
fastboot format ${scratch_partition} &&
|
||||
( fastboot reboot || true) &&
|
||||
die "fastboot can format ${scratch_partition}"
|
||||
fi
|
||||
fastboot reboot ||
|
||||
die "can not reboot out of fastboot"
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} adb after fastboot" >&2
|
||||
LOG WARNING "adb after fastboot"
|
||||
adb_wait ${ADB_WAIT} ||
|
||||
fixup_from_recovery ||
|
||||
die "did not reboot after formatting ${scratch_partition} `usb_status`"
|
||||
|
@ -1469,8 +1506,8 @@ else
|
|||
if ${is_userspace_fastboot}; then
|
||||
die "overlay supposed to be minus /vendor takeover after flash vendor"
|
||||
else
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} user fastboot missing required to invalidate, ignoring a failure" >&2
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} overlay supposed to be minus /vendor takeover after flash vendor" >&2
|
||||
LOG WARNING "user fastboot missing required to invalidate, ignoring a failure"
|
||||
LOG WARNING "overlay supposed to be minus /vendor takeover after flash vendor"
|
||||
fi
|
||||
fi
|
||||
B="`adb_cat /system/hello`"
|
||||
|
@ -1488,7 +1525,7 @@ else
|
|||
check_eq "cat: /vendor/hello: No such file or directory" "${B}" \
|
||||
vendor content after flash vendor
|
||||
else
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} user fastboot missing required to invalidate, ignoring a failure" >&2
|
||||
LOG WARNING "user fastboot missing required to invalidate, ignoring a failure"
|
||||
check_eq "cat: /vendor/hello: No such file or directory" "${B}" \
|
||||
--warning vendor content after flash vendor
|
||||
fi
|
||||
|
@ -1498,7 +1535,7 @@ else
|
|||
fi
|
||||
|
||||
wait_for_screen
|
||||
echo "${GREEN}[ RUN ]${NORMAL} remove test content (cleanup)" >&2
|
||||
LOG RUN "remove test content (cleanup)"
|
||||
|
||||
T=`adb_date`
|
||||
H=`adb remount 2>&1`
|
||||
|
@ -1506,7 +1543,7 @@ err=${?}
|
|||
L=
|
||||
D="${H%?Now reboot your device for settings to take effect*}"
|
||||
if [ X"${H}" != X"${D}" ]; then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} adb remount requires a reboot after partial flash (legacy avb)" >&2
|
||||
LOG WARNING "adb remount requires a reboot after partial flash (legacy avb)"
|
||||
L=`adb_logcat -b all -v nsec -t ${T} 2>&1`
|
||||
adb_reboot &&
|
||||
adb_wait ${ADB_WAIT} &&
|
||||
|
@ -1534,7 +1571,7 @@ done
|
|||
|
||||
if ${is_bootloader_fastboot} && [ -n "${scratch_partition}" ]; then
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} test fastboot flash to ${scratch_partition} recovery" >&2
|
||||
LOG RUN "test fastboot flash to ${scratch_partition} recovery"
|
||||
|
||||
avc_check
|
||||
adb reboot fastboot </dev/null ||
|
||||
|
@ -1564,7 +1601,7 @@ if ${is_bootloader_fastboot} && [ -n "${scratch_partition}" ]; then
|
|||
err=${?}
|
||||
if [ X"${D}" != "${D%?Now reboot your device for settings to take effect*}" ]
|
||||
then
|
||||
echo "${YELLOW}[ WARNING ]${NORMAL} adb disable-verity requires a reboot after partial flash" >&2
|
||||
LOG WARNING "adb disable-verity requires a reboot after partial flash"
|
||||
adb_reboot &&
|
||||
adb_wait ${ADB_WAIT} &&
|
||||
adb_root ||
|
||||
|
@ -1579,7 +1616,7 @@ if ${is_bootloader_fastboot} && [ -n "${scratch_partition}" ]; then
|
|||
[ ${err} = 0 ] &&
|
||||
[ X"${D}" = X"${D##*setup failed}" ] &&
|
||||
[ X"${D}" != X"${D##*[Uu]sing overlayfs}" ] &&
|
||||
echo "${GREEN}[ OK ]${NORMAL} ${scratch_partition} recreated" >&2 ||
|
||||
LOG OK "${scratch_partition} recreated" ||
|
||||
die -t ${T} "setup for overlayfs"
|
||||
D=`adb remount 2>&1`
|
||||
err=${?}
|
||||
|
@ -1590,17 +1627,17 @@ if ${is_bootloader_fastboot} && [ -n "${scratch_partition}" ]; then
|
|||
die -t ${T} "remount failed"
|
||||
fi
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} test raw remount commands" >&2
|
||||
LOG RUN "test raw remount commands"
|
||||
|
||||
fixup_from_fastboot() {
|
||||
inFastboot || return 1
|
||||
if [ -n "${ACTIVE_SLOT}" ]; then
|
||||
local active_slot=`get_active_slot`
|
||||
if [ X"${ACTIVE_SLOT}" != X"${active_slot}" ]; then
|
||||
echo "${YELLOW}[ ERROR ]${NORMAL} Active slot changed from ${ACTIVE_SLOT} to ${active_slot}"
|
||||
LOG WARNING "Active slot changed from ${ACTIVE_SLOT} to ${active_slot}"
|
||||
else
|
||||
echo "${YELLOW}[ ERROR ]${NORMAL} Active slot to be set to ${ACTIVE_SLOT}"
|
||||
fi >&2
|
||||
LOG WARNING "Active slot to be set to ${ACTIVE_SLOT}"
|
||||
fi
|
||||
fastboot --set-active=${ACTIVE_SLOT}
|
||||
fi
|
||||
fastboot reboot
|
||||
|
@ -1618,7 +1655,7 @@ adb_su mount -o rw,remount /vendor </dev/null ||
|
|||
die "remount command"
|
||||
adb_sh grep " /vendor .* rw," /proc/mounts >/dev/null </dev/null ||
|
||||
die "/vendor is not read-write"
|
||||
echo "${GREEN}[ OK ]${NORMAL} mount -o rw,remount command works" >&2
|
||||
LOG OK "mount -o rw,remount command works"
|
||||
|
||||
# Prerequisite is a prepped device from above.
|
||||
adb_reboot &&
|
||||
|
@ -1633,7 +1670,7 @@ adb_sh grep " /vendor .* rw," /proc/mounts >/dev/null </dev/null ||
|
|||
die "/vendor is not read-write"
|
||||
adb_sh grep " /system .* rw," /proc/mounts >/dev/null </dev/null &&
|
||||
die "/vendor is not read-only"
|
||||
echo "${GREEN}[ OK ]${NORMAL} remount command works from setup" >&2
|
||||
LOG OK "remount command works from setup"
|
||||
|
||||
# Prerequisite is an overlayfs deconstructed device but with verity disabled.
|
||||
# This also saves a lot of 'noise' from the command doing a mkfs on backing
|
||||
|
@ -1652,7 +1689,7 @@ adb_sh grep " /vendor .* rw," /proc/mounts >/dev/null </dev/null ||
|
|||
die "/vendor is not read-write"
|
||||
adb_sh grep " \(/system\|/\) .* rw," /proc/mounts >/dev/null </dev/null &&
|
||||
die "/system is not read-only"
|
||||
echo "${GREEN}[ OK ]${NORMAL} remount command works from scratch" >&2
|
||||
LOG OK "remount command works from scratch"
|
||||
|
||||
if ! restore; then
|
||||
restore() {
|
||||
|
@ -1664,7 +1701,7 @@ fi
|
|||
err=0
|
||||
|
||||
if ${overlayfs_supported}; then
|
||||
echo "${GREEN}[ RUN ]${NORMAL} test 'adb remount -R'" >&2
|
||||
LOG RUN "test 'adb remount -R'"
|
||||
avc_check
|
||||
adb_root ||
|
||||
die "adb root in preparation for adb remount -R"
|
||||
|
@ -1686,7 +1723,7 @@ ${INDENT}ro.boot.verifiedbootstate=\"`get_property ro.boot.verifiedbootstate`\"
|
|||
${INDENT}partition.system.verified=\"`get_property partition.system.verified`\""
|
||||
fi
|
||||
|
||||
echo "${GREEN}[ OK ]${NORMAL} 'adb remount -R' command" >&2
|
||||
LOG OK "'adb remount -R' command"
|
||||
|
||||
restore
|
||||
err=${?}
|
||||
|
@ -1699,6 +1736,6 @@ restore() {
|
|||
[ ${err} = 0 ] ||
|
||||
die "failed to restore verity"
|
||||
|
||||
echo "${GREEN}[ PASSED ]${NORMAL} adb remount" >&2
|
||||
LOG PASSED "adb remount test"
|
||||
|
||||
test_duration
|
||||
|
|
Loading…
Reference in a new issue