Merge "Updating makefiles for hidl_interface." into oc-mr1-dev-plus-aosp
diff --git a/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp b/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp
index 91e75fe..b3ab594 100644
--- a/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp
+++ b/gnss/1.0/vts/functional/VtsHalGnssV1_0TargetTest.cpp
@@ -147,7 +147,8 @@
EXPECT_EQ(location_called_count_, 1);
}
if (location_called_count_ > 0) {
- CheckLocation(last_location_, checkAccuracies);
+ // don't require speed on first fix
+ CheckLocation(last_location_, checkAccuracies, false);
return true;
}
return false;
@@ -176,20 +177,24 @@
/*
* CheckLocation:
- * Helper function to vet Location fields
+ * Helper function to vet Location fields
*/
- void CheckLocation(GnssLocation& location, bool checkAccuracies) {
+ void CheckLocation(GnssLocation& location, bool checkAccuracies, bool checkSpeed) {
EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_LAT_LONG);
EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_ALTITUDE);
- EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_SPEED);
+ if (checkSpeed) {
+ EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_SPEED);
+ }
EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_HORIZONTAL_ACCURACY);
// New uncertainties available in O must be provided,
// at least when paired with modern hardware (2017+)
if (checkAccuracies) {
EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_VERTICAL_ACCURACY);
- EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_SPEED_ACCURACY);
- if (location.gnssLocationFlags & GnssLocationFlags::HAS_BEARING) {
- EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_BEARING_ACCURACY);
+ if (checkSpeed) {
+ EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_SPEED_ACCURACY);
+ if (location.gnssLocationFlags & GnssLocationFlags::HAS_BEARING) {
+ EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_BEARING_ACCURACY);
+ }
}
}
EXPECT_GE(location.latitudeDegrees, -90.0);
@@ -198,12 +203,14 @@
EXPECT_LE(location.longitudeDegrees, 180.0);
EXPECT_GE(location.altitudeMeters, -1000.0);
EXPECT_LE(location.altitudeMeters, 30000.0);
- EXPECT_GE(location.speedMetersPerSec, 0.0);
- EXPECT_LE(location.speedMetersPerSec, 5.0); // VTS tests are stationary.
+ if (checkSpeed) {
+ EXPECT_GE(location.speedMetersPerSec, 0.0);
+ EXPECT_LE(location.speedMetersPerSec, 5.0); // VTS tests are stationary.
- // Non-zero speeds must be reported with an associated bearing
- if (location.speedMetersPerSec > 0.0) {
- EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_BEARING);
+ // Non-zero speeds must be reported with an associated bearing
+ if (location.speedMetersPerSec > 0.0) {
+ EXPECT_TRUE(location.gnssLocationFlags & GnssLocationFlags::HAS_BEARING);
+ }
}
/*
@@ -356,7 +363,7 @@
for (int i = 1; i < LOCATIONS_TO_CHECK; i++) {
EXPECT_EQ(std::cv_status::no_timeout, wait(LOCATION_TIMEOUT_SUBSEQUENT_SEC));
EXPECT_EQ(location_called_count_, i + 1);
- CheckLocation(last_location_, checkMoreAccuracies);
+ CheckLocation(last_location_, checkMoreAccuracies, true);
}
}
diff --git a/micro-vts.sh b/micro-vts.sh
new file mode 100755
index 0000000..bb6f7d7
--- /dev/null
+++ b/micro-vts.sh
@@ -0,0 +1,114 @@
+#!/bin/bash
+
+# See hal_hidl_gtest.py
+
+THREADS=
+CHECKER=vts_testability_checker
+CHECKER_DEVICE_PATH="/data/local/tmp/${CHECKER}"
+PRINT_COMMANDS=
+
+function run() {
+ if [ "${PRINT_COMMANDS}" = true ] ; then
+ >&2 echo "*** $@"
+ fi
+ $@
+}
+
+function make_modules() {
+ if [ "${THREADS}" != "0" ] ; then
+ run make -j${THREADS} -C ${ANDROID_BUILD_TOP} -f build/core/main.mk $@
+ fi
+}
+
+function push_checker() {
+ run adb push ${OUT}/system/bin/${CHECKER} ${CHECKER_DEVICE_PATH}
+}
+
+function push_test() {
+ local module=$1
+ for test_dir in nativetest nativetest64 ; do
+ local test_file=/data/${test_dir}/${module}/${module}
+ run adb push ${OUT}${test_file} ${test_file}
+ done
+}
+
+function read_checker_output() {
+ python -c 'import json,sys;obj=json.load(sys.stdin);sys.stdout.write("%s\n"%obj["Testable"]);map(lambda i:sys.stdout.write("%s\n"%i),obj["instances"])'
+}
+
+function run_test() {
+ local module=$1
+ local status=0
+
+ for test_dir in nativetest nativetest64 ; do
+ local test_file=/data/${test_dir}/${module}/${module}
+ local interfaces=$(run adb shell ${test_file} --list_registered_services \
+ | sed -n 's/^hal_service: \(.*\)$/\1/p')
+ if [ -z "$interfaces" ]; then
+ run adb shell ${test_file} || status=$?
+ else
+ for interface in ${interfaces} ; do
+ local output=$(run adb shell ${CHECKER_DEVICE_PATH} -c ${interface} | read_checker_output)
+ local testable=$(echo "${output}" | head -n1)
+ local instances=$(echo "${output}" | tail -n+2)
+
+ if [ "${testable}" == "True" ] ; then
+ for instance in ${instances} ; do
+ run adb shell ${test_file} --hal_service_instance="${interface}/${instance}" || status=$?
+ done
+ fi
+ done
+ fi
+ done
+ return ${status}
+}
+
+function usage() {
+ echo "usage: $0 -m <module_name> [-m <module_name>[...]] [-j <jobs>] [-p]"
+ echo " -m <module_name>: name of test (e.g. VtsHalHealthV2_0TargetTest)"
+ echo " -p: print commands"
+ echo " -j <jobs>: # jobs in make. "
+ echo " -j0 skips making any modules."
+ echo " If not present, use infinite number of jobs."
+
+ exit 1
+}
+
+function main() {
+ local modules=
+
+ while getopts "m:j:p" option ; do
+ case "${option}" in
+ m)
+ [ ! -z ${OPTARG} ] || usage
+ modules="${modules} ${OPTARG}"
+ ;;
+ j)
+ THREADS=${OPTARG}
+ ;;
+ p)
+ PRINT_COMMANDS=true
+ ;;
+ *)
+ usage
+ ;;
+ esac
+ done
+
+ set -e
+ make_modules ${CHECKER} ${modules}
+ run adb root
+ push_checker
+ for module in ${modules} ; do
+ push_test ${module}
+ done
+
+ set +e
+ local status=0
+ for module in ${modules} ; do
+ run_test ${module} || status=$?
+ done
+ return ${status}
+}
+
+main $@