#!/bin/bash set -euo pipefail function get_cid { local max_cid max_cid=$(/apex/com.android.virt/bin/vm list | awk 'BEGIN { FS="[:,]" } /cid/ { print $2; }' | sort -n | tail -1) # return the value trimmed from whitespaces echo "${max_cid}" | xargs } function wait_for_cid { TIMES=${1:-20} X=0 local init_cid init_cid=$(get_cid) while [ "$TIMES" -eq 0 ] || [ "$TIMES" -gt "$X" ] do local cid cid=$(get_cid) echo "wait_for_cid: retry $(( X++ )) / $TIMES : init_cid=$init_cid cid=$cid"; if [ "$cid" -gt "$init_cid" ] then break else sleep 2 fi done setprop trusty.test_vm.vm_cid "$cid" } # This script is expected to be started before the trusty_test_vm is started # wait_for_cid gets the max cid and wait for it to be updated as an indication # that the trusty_test_vm has properly started. # wait_for_cid polls for the CID change at 2 seconds intervals # the input argument is the max number of retries (20 by default) wait_for_cid "$@" echo trusty.test_vm.vm_cid="$(getprop trusty.test_vm.vm_cid)"