adb-remount-test: Refactor remount -R & disable-verity test
Since remount -R and disable-verity -R have similar expectations, group
them together and reuse each other's test code.
Remove the redundant "remount -R" test at end of file.
Total test runtime reduced by one reboot.
Bug: 243116800
Test: adb-remount-test
Change-Id: I510a9de39f94b73450df9abf82a55496df96bea1
diff --git a/fs_mgr/tests/adb-remount-test.sh b/fs_mgr/tests/adb-remount-test.sh
index 617ba26..a1e94dd 100755
--- a/fs_mgr/tests/adb-remount-test.sh
+++ b/fs_mgr/tests/adb-remount-test.sh
@@ -1049,36 +1049,7 @@
LOG WARNING "not healthy, no launcher, skipping wait for screen"
fi
-# Can we test remount -R command?
-if [ "orange" = "$(get_property ro.boot.verifiedbootstate)" ] &&
- [ "2" = "$(get_property partition.system.verified)" ]; then
-
- 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
- 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
- T=""
- fi
- sleep 2
- adb_wait ${ADB_WAIT} ||
- die "waiting for device after adb shell su root remount -R system `usb_status`"
- if [ "orange" != "`get_property ro.boot.verifiedbootstate`" -o \
- "2" = "`get_property partition.system.verified`" ]; then
- die ${T} "remount -R command failed
-${INDENT}ro.boot.verifiedbootstate=\"`get_property ro.boot.verifiedbootstate`\"
-${INDENT}partition.system.verified=\"`get_property partition.system.verified`\""
- fi
-
- LOG OK "adb shell su root remount -R command"
-fi
-
+################################################################################
LOG RUN "Checking current overlayfs status"
adb_wait || die "wait for device failed"
@@ -1093,13 +1064,12 @@
LOG WARNING "rebooting before test"
adb_reboot &&
adb_wait ${ADB_WAIT} ||
- die "lost device after reboot after wipe `usb_status`"
+ die "lost device after reboot after overlay wipe $(usb_status)"
adb_root ||
die "lost device after elevation to root after wipe `usb_status`"
fi
is_overlayfs_mounted &&
die "overlay takeover unexpected at this phase"
-LOG OK "no overlay present before setup"
overlayfs_needed=true
D=`adb_sh cat /proc/mounts </dev/null |
@@ -1125,33 +1095,59 @@
elif ! ${overlayfs_supported}; then
die "need overlayfs, but do not have it"
fi
+LOG OK "no overlay present before setup"
-LOG RUN "disable-verity -R"
+################################################################################
+# Precondition is overlayfs *not* setup.
+LOG RUN "Testing adb disable-verity -R"
-L=
T=$(adb_date)
-H=$(adb_su disable-verity -R 2>&1)
-err="${?}"
-echo "${H}" >&2
+adb_su disable-verity -R >&2 ||
+ die -t "${T}" "disable-verity -R failed"
+sleep 2
+adb_wait "${ADB_WAIT}" ||
+ die "lost device after adb disable-verity -R $(usb_status)"
-if [ "${err}" != 0 ]; then
- die -t "${T}" "disable-verity -R"
+if [ "2" = "$(get_property partition.system.verified)" ]; then
+ LOG ERROR "partition.system.verified=$(get_property partition.system.verified)"
+ die "verity not disabled after adb disable-verity -R"
fi
-
-# Fuzzy search for a line that contains "overlay" and "fail". Informational only.
-if echo "${H}" | grep -i "overlay" | grep -iq "fail"; then
- LOG WARNING "overlayfs setup whined"
-fi
-
-adb_wait "${ADB_WAIT}" &&
- adb_root ||
- die "lost device after adb shell su root disable-verity -R $(usb_status)"
-
if ${overlayfs_needed}; then
- if ! is_overlayfs_mounted; then
- die "no overlay being setup after disable-verity -R"
- fi
+ is_overlayfs_mounted ||
+ die "no overlay takeover after adb disable-verity -R"
+ LOG OK "overlay takeover after adb disable-verity -R"
fi
+LOG OK "adb disable-verity -R"
+
+
+LOG RUN "Testing adb remount -R"
+
+if surgically_wipe_overlayfs; then
+ adb_reboot &&
+ adb_wait "${ADB_WAIT}" ||
+ die "lost device after reboot after overlay wipe $(usb_status)"
+fi
+is_overlayfs_mounted &&
+ die "overlay takeover unexpected at this phase"
+
+T=$(adb_date)
+adb_su remount -R </dev/null >&2 ||
+ die -t "${T}" "adb remount -R failed"
+sleep 2
+adb_wait "${ADB_WAIT}" ||
+ die "lost device after adb remount -R $(usb_status)"
+
+if [ "2" = "$(get_property partition.system.verified)" ]; then
+ LOG ERROR "partition.system.verified=$(get_property partition.system.verified)"
+ die "verity not disabled after adb remount -R"
+fi
+if ${overlayfs_needed}; then
+ is_overlayfs_mounted ||
+ die "no overlay takeover after adb remount -R"
+ LOG OK "overlay takeover after adb remount -R"
+fi
+LOG OK "adb remount -R"
+
LOG RUN "remount"
@@ -1165,12 +1161,10 @@
echo "${D}" >&2
[ ${ret} != 0 ] ||
[ X"${D}" = X"${D##*remount failed}" ] ||
- ( [ -n "${L}" ] && echo "${L}" && false ) >&2 ||
die -t "${T}" "adb remount failed"
D=`adb_sh df -k </dev/null` &&
H=`echo "${D}" | head -1` &&
- D=`echo "${D}" | skip_unrelated_mounts | grep "^overlay "` ||
- ( [ -n "${L}" ] && echo "${L}" && false ) >&2
+ D=`echo "${D}" | skip_unrelated_mounts | grep "^overlay "`
ret=${?}
uses_dynamic_scratch=false
scratch_partition=
@@ -1310,7 +1304,6 @@
D=`adb_su df -k </dev/null` &&
H=`echo "${D}" | head -1` &&
D=`echo "${D}" | grep -v " /vendor/..*$" | grep "^overlay "` ||
- ( echo "${L}" && false ) >&2 ||
die -d "overlay takeover failed after reboot"
adb_su sed -n '1,/overlay \/system/p' /proc/mounts </dev/null |
@@ -1641,44 +1634,6 @@
die "failed to restore verity after remount from scratch test"
fi
-err=0
-
-if ${overlayfs_supported}; then
- LOG RUN "test 'adb remount -R'"
- avc_check
- adb_root ||
- die "adb root in preparation for adb remount -R"
- T=`adb_date`
- adb remount -R
- err=${?}
- if [ "${err}" != 0 ]; then
- die -t ${T} "adb remount -R = ${err}"
- fi
- sleep 2
- adb_wait ${ADB_WAIT} ||
- die "waiting for device after adb remount -R `usb_status`"
- if [ "orange" != "`get_property ro.boot.verifiedbootstate`" -o \
- "2" = "`get_property partition.system.verified`" ] &&
- [ -n "`get_property ro.boot.verifiedbootstate`" -o \
- -n "`get_property partition.system.verified`" ]; then
- die "remount -R command failed to disable verity
-${INDENT}ro.boot.verifiedbootstate=\"`get_property ro.boot.verifiedbootstate`\"
-${INDENT}partition.system.verified=\"`get_property partition.system.verified`\""
- fi
-
- LOG OK "'adb remount -R' command"
-
- restore
- err=${?}
-fi
-
-restore() {
- true
-}
-
-[ ${err} = 0 ] ||
- die "failed to restore verity"
-
LOG PASSED "adb remount test"
test_duration