STT: Get disk size data from the stt build test

Get the size of build artifacts using df.
It collect the amount of disk space used for build for all targets.

Bug: 302075773
Test: combined_build_test.sh -t <target> -v userdebug \
            -a <alter_target> -o -c droid
Change-Id: I4c59bc181164f4e8e13277719dc16158d3814f49
This commit is contained in:
Justin Yun
2023-09-26 16:13:47 +09:00
parent 4b76dd3526
commit ddcda65e34

View File

@@ -21,7 +21,7 @@ usage() {
echo " -d DIST_OUT : Path for dist out"
echo " -a ALTER_TARGET: Alternative targets that share the build artifacts with the primary target"
echo " -c : Run the target build again after installclean for reference"
echo ' -o : Write build time results to "build_time_results.txt" file in "${OUT_DIR}" or "${DIST_OUT}/logs" if -d defined'
echo ' -o : Write build time ("build_time_results.txt") and disk usage results (disk_size_results.txt") to "${OUT_DIR}" or "${DIST_OUT}/logs" if -d defined'
echo " -r : Dryrun to see the commands without actually building the targets"
}
@@ -41,6 +41,7 @@ while getopts ha:cd:ort:v: opt; do
;;
o)
result_out="build_time_results.txt"
result_out_size="disk_size_results.txt"
;;
r)
dry_run="true"
@@ -94,34 +95,49 @@ run_command() {
fi
}
read_df() {
# read the available disk size
df . | awk '{print $4}' | sed -n '2p'
}
write_output() {
if [[ -z "${result_out}" || -n "${dry_run}" ]]; then
if [[ -z "$2" || -n "${dry_run}" ]]; then
echo "Output: $1"
else
echo "$1" >> "${out_dir}/${result_out}"
echo "$1" >> "${out_dir}/$2"
fi
}
get_build_trace() {
run_command "cp -f ${out_dir}/build.trace.gz ${out_dir}/${1}"
if [[ -n "${result_out}" ]]; then
write_output "$(python3 development/treble/read_build_trace_gz.py ${out_dir}/${1})"
write_output "$(python3 development/treble/read_build_trace_gz.py ${out_dir}/${1})" "${result_out}"
fi
}
if [[ -n "${result_out}" ]]; then
run_command "rm -f ${out_dir}/${result_out}"
write_output "target, soong, kati, ninja, total"
write_output "target, soong, kati, ninja, total" "${result_out}"
fi
if [[ -n "${result_out_size}" ]]; then
run_command "rm -f ${out_dir}/${result_out_size}"
write_output "target, size, size_after_clean" "${result_out_size}"
fi
# Build the target first.
disk_space_source=$(read_df)
echo; echo "Initial build..."
run_command "${base_command} TARGET_PRODUCT=${target} TARGET_BUILD_VARIANT=${variant} ${goals}"
size_primary=$((${disk_space_source}-$(read_df)))
if [[ -n "${installclean}" ]]; then
# Run the same build after installclean
echo; echo "Installclean for incremental build..."
run_command "${base_command} TARGET_PRODUCT=${target} TARGET_BUILD_VARIANT=${variant} installclean"
size_primary_clean=$((${disk_space_source}-$(read_df)))
write_output "${target}, ${size_primary}, ${size_primary_clean}" "${result_out_size}"
echo "Build the same initial build..."
run_command "${base_command} TARGET_PRODUCT=${target} TARGET_BUILD_VARIANT=${variant} NINJA_ARGS=\"-d explain\" ${goals}"
get_build_trace "build_${target}_installclean.trace.gz"
@@ -135,10 +151,13 @@ for alter_target in "${alter_targets[@]}"; do
count=$((${count}+1))
echo; echo "Build ${alter_target}...(${count})"
run_command "${base_command} TARGET_PRODUCT=${alter_target} TARGET_BUILD_VARIANT=${variant} NINJA_ARGS=\"-d explain\" ${goals}"
size_alter=$((${disk_space_source}-$(read_df)))
get_build_trace "build_${alter_target}_ab${count}.trace.gz"
echo "Installclean for ${alter_target}..."
run_command "${base_command} TARGET_PRODUCT=${alter_target} TARGET_BUILD_VARIANT=${variant} installclean"
size_alter_clean=$((${disk_space_source}-$(read_df)))
write_output "${alter_target}, ${size_alter}, ${size_alter_clean}" "${result_out_size}"
if [[ -n "${dist_dir}" ]]; then
# Remove target-specific dist artifacts