Introduce "aidl4" variant of service manager to adapt the change
to service related protocol for Android 12.
From Android 12, when reading nullable strong binder, the format of
the `stability` field passed on the wire was changed and evolved to
`struct Category`, which consists of the following members with 4 bytes long.
```
struct Category {
uint8_t version;
uint8_t reserved[2];
Level level; <- bitmask of Stability::Level
}
```
Please check the following link for details:
https://cs.android.com/android/platform/superproject/+/android-12.0.0_r3:frameworks/native/libs/binder/include/binder/Stability.h;l=140
To honor the change on AOSP side for Android 12, we need to adapt
the protocol change in Service Manager.
80 lines
1.7 KiB
Bash
Executable File
80 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# This script requires lcov, dirname
|
|
#
|
|
|
|
TESTS="\
|
|
unit_bridge \
|
|
unit_buffer \
|
|
unit_cleanup \
|
|
unit_client \
|
|
unit_config \
|
|
unit_driver \
|
|
unit_eventloop \
|
|
unit_fmq \
|
|
unit_ipc \
|
|
unit_local_object \
|
|
unit_local_reply \
|
|
unit_local_request \
|
|
unit_log \
|
|
unit_protocol \
|
|
unit_proxy_object \
|
|
unit_reader \
|
|
unit_remote_object \
|
|
unit_remote_reply \
|
|
unit_remote_request \
|
|
unit_servicemanager \
|
|
unit_servicemanager_aidl \
|
|
unit_servicemanager_aidl2 \
|
|
unit_servicemanager_aidl3 \
|
|
unit_servicemanager_aidl4 \
|
|
unit_servicemanager_hidl \
|
|
unit_servicename \
|
|
unit_servicepoll \
|
|
unit_writer"
|
|
|
|
function err() {
|
|
echo "*** ERROR!" $1
|
|
exit 1
|
|
}
|
|
|
|
# Check the required tools
|
|
which lcov >> /dev/null || err "Please install lcov"
|
|
which dirname >> /dev/null || err "Please install dirname"
|
|
|
|
# LCOV 1.10 has branch coverage disabled per default
|
|
# Previous versions didn't have the --rc option
|
|
if [ ! -z "$(lcov --help | grep ' --rc ')" ] ; then
|
|
LCOV_OPT="--rc lcov_branch_coverage=1"
|
|
GENHTML_OPT="--branch-coverage"
|
|
fi
|
|
|
|
pushd `dirname $0` > /dev/null
|
|
COV_DIR="$PWD"
|
|
pushd .. > /dev/null
|
|
TEST_DIR="$PWD"
|
|
pushd .. > /dev/null
|
|
TOP_DIR="$PWD"
|
|
popd > /dev/null
|
|
popd > /dev/null
|
|
popd > /dev/null
|
|
|
|
make -C "$TOP_DIR" clean
|
|
for t in $TESTS ; do
|
|
pushd "$TEST_DIR/$t"
|
|
make -C "$TEST_DIR/$t" clean coverage || exit 1
|
|
build/coverage/$t || exit 1
|
|
popd
|
|
done
|
|
|
|
# Sometimes you need this, sometimes that :S
|
|
BASE_DIR="$TOP_DIR"
|
|
#BASE_DIR="$TOP_DIR/src"
|
|
|
|
FULL_COV="$COV_DIR/full.gcov"
|
|
LIB_COV="$COV_DIR/lib.gcov"
|
|
rm -f "$FULL_COV" "$LIB_COV"
|
|
lcov $LCOV_OPT -c -d "$TOP_DIR/build/coverage" -b "$BASE_DIR" -o "$FULL_COV" || exit 1
|
|
lcov $LCOV_OPT -e "$FULL_COV" "$BASE_DIR/*" -o "$LIB_COV" || exit 1
|
|
genhtml $GENHTML_OPT "$LIB_COV" -t "libgbinder" --output-directory "$COV_DIR/report" || exit 1
|