Merge changes I10c6ed68,I14d6defe
* changes: Check Android Runtime (Boot) device configuration flag `enable_apex_image`. Refactor unit test for Android Runtime (Boot) device configuration flags.
This commit is contained in:
@@ -172,14 +172,42 @@ function check_no_zygote_gc_runtime_option {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# test_android_runtime_flag FLAG VALUE GC_RUNTIME_OPTION
|
# check_android_runtime_message CONTEXT MESSAGE
|
||||||
# ------------------------------------------------------
|
# ---------------------------------------------
|
||||||
# Test device configuration FLAG with VALUE. Check that GC_RUNTIME_OPTION is
|
# Return whether AndroidRuntime generated MESSAGE in logcat. Use CONTEXT in
|
||||||
# passed as GC Runtime option by the zygote.
|
# logging.
|
||||||
|
function check_android_runtime_message {
|
||||||
|
local context=$1
|
||||||
|
local message=$2
|
||||||
|
|
||||||
|
say "[$context] Check that AndroidRuntime generated expected message in logcat..."
|
||||||
|
adb logcat -d -s AndroidRuntime | grep -F -q "$message" \
|
||||||
|
|| fail "Found no message \"$message\" generated by AndroidRuntime"
|
||||||
|
}
|
||||||
|
|
||||||
|
# check_no_android_runtime_message CONTEXT MESSAGE
|
||||||
|
# ------------------------------------------------
|
||||||
|
# Return whether AndroidRuntime did not generate MESSAGE in logcat. Use CONTEXT
|
||||||
|
# in logging.
|
||||||
|
function check_no_android_runtime_message {
|
||||||
|
local context=$1
|
||||||
|
local message=$2
|
||||||
|
|
||||||
|
say "[$context] Check that AndroidRuntime did not generate unexpected message in logcat..."
|
||||||
|
adb logcat -d -s AndroidRuntime | grep -F -q -v "$message" \
|
||||||
|
|| fail "Found message \"$message\" generated by AndroidRuntime"
|
||||||
|
}
|
||||||
|
|
||||||
|
# test_android_runtime_flag FLAG VALUE CHECK_EFFECT CHECK_NO_EFFECT
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# Test device configuration FLAG with VALUE. CHECK_EFFECT and CHECK_NO_EFFECT
|
||||||
|
# are functions that are passed a context as sole argument and that respectively
|
||||||
|
# check the effect or the absence of effect of the flag.
|
||||||
function test_android_runtime_flag {
|
function test_android_runtime_flag {
|
||||||
local flag=$1
|
local flag=$1
|
||||||
local value=$2
|
local value=$2
|
||||||
local gc_runtime_option=$3
|
local check_effect=$3
|
||||||
|
local check_no_effect=$4
|
||||||
|
|
||||||
# Persistent system property (set after a reboot) associated with the device
|
# Persistent system property (set after a reboot) associated with the device
|
||||||
# configuration flag.
|
# configuration flag.
|
||||||
@@ -193,26 +221,26 @@ function test_android_runtime_flag {
|
|||||||
sleep 3
|
sleep 3
|
||||||
|
|
||||||
# Check that both the device configuration flag and the associated system
|
# Check that both the device configuration flag and the associated system
|
||||||
# property are set, but that the zygote hasn't had the flag passed to it as a
|
# property are set, but that flag has not produced an effect on the system (as
|
||||||
# GC runtime option (as we haven't rebooted yet).
|
# we haven't rebooted yet).
|
||||||
local context="Flag set, before reboot"
|
local context="Flag set, before reboot"
|
||||||
check_device_config_flag "$context" "$flag" "$value"
|
check_device_config_flag "$context" "$flag" "$value"
|
||||||
check_system_property "$context" "$prop" "$value"
|
check_system_property "$context" "$prop" "$value"
|
||||||
check_no_zygote_gc_runtime_option "$context" "$gc_runtime_option"
|
$check_no_effect "$context"
|
||||||
|
|
||||||
# Reboot device for the flag value to take effect.
|
# Reboot device for the flag value to take effect.
|
||||||
reboot_and_wait_for_device
|
reboot_and_wait_for_device
|
||||||
context="Flag set, after 1st reboot"
|
context="Flag set, after 1st reboot"
|
||||||
check_device_config_flag "$context" "$flag" "$value"
|
check_device_config_flag "$context" "$flag" "$value"
|
||||||
check_system_property "$context" "$prop" "$value"
|
check_system_property "$context" "$prop" "$value"
|
||||||
check_zygote_gc_runtime_option "$context" "$gc_runtime_option"
|
$check_effect "$context"
|
||||||
|
|
||||||
# Reboot device a second time and check that the state has persisted.
|
# Reboot device a second time and check that the state has persisted.
|
||||||
reboot_and_wait_for_device
|
reboot_and_wait_for_device
|
||||||
context="Flag set, after 2nd reboot"
|
context="Flag set, after 2nd reboot"
|
||||||
check_device_config_flag "$context" "$flag" "$value"
|
check_device_config_flag "$context" "$flag" "$value"
|
||||||
check_system_property "$context" "$prop" "$value"
|
check_system_property "$context" "$prop" "$value"
|
||||||
check_zygote_gc_runtime_option "$context" "$gc_runtime_option"
|
$check_effect "$context"
|
||||||
|
|
||||||
say "Unsetting device configuration flag..."
|
say "Unsetting device configuration flag..."
|
||||||
adb shell device_config delete "$namespace" "$flag" >/dev/null
|
adb shell device_config delete "$namespace" "$flag" >/dev/null
|
||||||
@@ -224,9 +252,13 @@ function test_android_runtime_flag {
|
|||||||
context="Flag unset, after 3rd reboot"
|
context="Flag unset, after 3rd reboot"
|
||||||
check_no_device_config_flag "$context" "$flag"
|
check_no_device_config_flag "$context" "$flag"
|
||||||
check_no_system_property "$context" "$prop"
|
check_no_system_property "$context" "$prop"
|
||||||
check_no_zygote_gc_runtime_option "$context" "$gc_runtime_option"
|
$check_no_effect "$context"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Pre-test actions.
|
||||||
|
# =================
|
||||||
|
|
||||||
# Enumerate Zygote processes.
|
# Enumerate Zygote processes.
|
||||||
case $(adb shell getprop ro.zygote) in
|
case $(adb shell getprop ro.zygote) in
|
||||||
(zygote32) zygotes="zygote";;
|
(zygote32) zygotes="zygote";;
|
||||||
@@ -235,8 +267,53 @@ case $(adb shell getprop ro.zygote) in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
# Test "enable_generational_cc" flag values.
|
# Test "enable_generational_cc" flag values.
|
||||||
test_android_runtime_flag enable_generational_cc false nogenerational_cc
|
# ==========================================
|
||||||
test_android_runtime_flag enable_generational_cc true generational_cc
|
|
||||||
|
function check_nogenerational_cc {
|
||||||
|
check_zygote_gc_runtime_option "$1" nogenerational_cc
|
||||||
|
}
|
||||||
|
function check_no_nogenerational_cc {
|
||||||
|
check_no_zygote_gc_runtime_option "$1" nogenerational_cc
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_generational_cc {
|
||||||
|
check_zygote_gc_runtime_option "$1" generational_cc
|
||||||
|
}
|
||||||
|
function check_no_generational_cc {
|
||||||
|
check_no_zygote_gc_runtime_option "$1" generational_cc
|
||||||
|
}
|
||||||
|
|
||||||
|
test_android_runtime_flag \
|
||||||
|
enable_generational_cc false check_nogenerational_cc check_no_nogenerational_cc
|
||||||
|
test_android_runtime_flag \
|
||||||
|
enable_generational_cc true check_generational_cc check_no_generational_cc
|
||||||
|
|
||||||
|
# Test "enable_apex_image" flag values.
|
||||||
|
# =====================================
|
||||||
|
|
||||||
|
default_boot_image_message="Using default boot image"
|
||||||
|
function check_default_boot_image {
|
||||||
|
check_android_runtime_message "$1" "$default_boot_image_message"
|
||||||
|
}
|
||||||
|
function check_no_default_boot_image {
|
||||||
|
check_no_android_runtime_message "$1" "$default_boot_image_message"
|
||||||
|
}
|
||||||
|
|
||||||
|
apex_boot_image_message="Using Apex boot image: '-Ximage:/system/framework/apex.art'"
|
||||||
|
function check_apex_boot_image {
|
||||||
|
check_android_runtime_message "$1" "$apex_boot_image_message"
|
||||||
|
}
|
||||||
|
function check_no_apex_boot_image {
|
||||||
|
check_no_android_runtime_message "$1" "$apex_boot_image_message"
|
||||||
|
}
|
||||||
|
|
||||||
|
test_android_runtime_flag \
|
||||||
|
enable_apex_image false check_default_boot_image check_no_default_boot_image
|
||||||
|
test_android_runtime_flag \
|
||||||
|
enable_apex_image true check_apex_boot_image check_no_apex_boot_image
|
||||||
|
|
||||||
|
# Post-test actions.
|
||||||
|
# ==================
|
||||||
|
|
||||||
if [[ "$exit_status" -eq 0 ]]; then
|
if [[ "$exit_status" -eq 0 ]]; then
|
||||||
banner "All tests passed."
|
banner "All tests passed."
|
||||||
|
|||||||
Reference in New Issue
Block a user