From ddcda65e34653f5058ce88bf500c534ad8d20af7 Mon Sep 17 00:00:00 2001 From: Justin Yun Date: Tue, 26 Sep 2023 16:13:47 +0900 Subject: [PATCH] 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 -v userdebug \ -a -o -c droid Change-Id: I4c59bc181164f4e8e13277719dc16158d3814f49 --- treble/combined_build_test.sh | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/treble/combined_build_test.sh b/treble/combined_build_test.sh index b91ee1f5f..707c6fba2 100755 --- a/treble/combined_build_test.sh +++ b/treble/combined_build_test.sh @@ -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