Skip voice call VTS for devices that don't support voice call with new Util
Bug: 154867827
Test: VtsHalRadio1_4Target
Change-Id: I888d4d4ffbff5d24bfe2b9b3cb878eb5f1e1762f
Merged-In: I888d4d4ffbff5d24bfe2b9b3cb878eb5f1e1762f
(cherry picked from commit 4e866a3020c4b739183ed50ee87f8c679c0379c4)
(cherry picked from commit f2ed9ffcb9ce617c7c13df364fe11a70da6b5ab8)
diff --git a/radio/1.0/vts/functional/vts_test_util.cpp b/radio/1.0/vts/functional/vts_test_util.cpp
index ec96e5f..7a21a40 100644
--- a/radio/1.0/vts/functional/vts_test_util.cpp
+++ b/radio/1.0/vts/functional/vts_test_util.cpp
@@ -13,6 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#define LOG_TAG "RadioTest"
+
#include <vts_test_util.h>
#include <iostream>
@@ -53,4 +55,27 @@
}
}
return testing::AssertionFailure() << "SapError:" + toString(err) + " is returned";
+}
+
+// Runs "pm list features" and attempts to find the specified feature in its output.
+bool deviceSupportsFeature(const char* feature) {
+ bool hasFeature = false;
+ FILE* p = popen("/system/bin/pm list features", "re");
+ if (p) {
+ char* line = NULL;
+ size_t len = 0;
+ while (getline(&line, &len, p) > 0) {
+ if (strstr(line, feature)) {
+ hasFeature = true;
+ break;
+ }
+ }
+ pclose(p);
+ } else {
+ __android_log_print(ANDROID_LOG_FATAL, LOG_TAG, "popen failed: %d", errno);
+ _exit(EXIT_FAILURE);
+ }
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "Feature %s: %ssupported", feature,
+ hasFeature ? "" : "not ");
+ return hasFeature;
}
\ No newline at end of file
diff --git a/radio/1.0/vts/functional/vts_test_util.h b/radio/1.0/vts/functional/vts_test_util.h
index 826f0de..fc59eb6 100644
--- a/radio/1.0/vts/functional/vts_test_util.h
+++ b/radio/1.0/vts/functional/vts_test_util.h
@@ -19,6 +19,8 @@
#include <VtsHalHidlTargetTestBase.h>
#include <android/hardware/radio/1.0/types.h>
+#include <android/log.h>
+#include <gtest/gtest.h>
using ::android::hardware::radio::V1_0::RadioError;
using ::android::hardware::radio::V1_0::SapResultCode;
@@ -32,6 +34,8 @@
CHECK_SAP_ERROR = 4,
};
+static constexpr const char* FEATURE_VOICE_CALL = "android.software.connectionservice";
+
/*
* Generate random serial number for radio test
*/
@@ -48,3 +52,8 @@
* vendor/devices implementations.
*/
::testing::AssertionResult CheckAnyOfErrors(SapResultCode err, std::vector<SapResultCode> errors);
+
+/*
+ * Check if device supports feature.
+ */
+bool deviceSupportsFeature(const char* feature);
diff --git a/radio/1.4/vts/functional/radio_hidl_hal_api.cpp b/radio/1.4/vts/functional/radio_hidl_hal_api.cpp
index fed89b0..4a10076 100644
--- a/radio/1.4/vts/functional/radio_hidl_hal_api.cpp
+++ b/radio/1.4/vts/functional/radio_hidl_hal_api.cpp
@@ -22,6 +22,13 @@
* Test IRadio.emergencyDial() for the response returned.
*/
TEST_F(RadioHidlTest_v1_4, emergencyDial) {
+ if (!deviceSupportsFeature(FEATURE_VOICE_CALL)) {
+ ALOGI("Skipping emergencyDial because voice call is not supported in device");
+ return;
+ } else {
+ ALOGI("Running emergencyDial because voice call is supported in device");
+ }
+
serial = GetRandomSerialNumber();
::android::hardware::radio::V1_0::Dial dialInfo;
@@ -53,6 +60,13 @@
* Test IRadio.emergencyDial() with specified service and its response returned.
*/
TEST_F(RadioHidlTest_v1_4, emergencyDial_withServices) {
+ if (!deviceSupportsFeature(FEATURE_VOICE_CALL)) {
+ ALOGI("Skipping emergencyDial because voice call is not supported in device");
+ return;
+ } else {
+ ALOGI("Running emergencyDial because voice call is supported in device");
+ }
+
serial = GetRandomSerialNumber();
::android::hardware::radio::V1_0::Dial dialInfo;
@@ -85,6 +99,13 @@
* Test IRadio.emergencyDial() with known emergency call routing and its response returned.
*/
TEST_F(RadioHidlTest_v1_4, emergencyDial_withEmergencyRouting) {
+ if (!deviceSupportsFeature(FEATURE_VOICE_CALL)) {
+ ALOGI("Skipping emergencyDial because voice call is not supported in device");
+ return;
+ } else {
+ ALOGI("Running emergencyDial because voice call is supported in device");
+ }
+
serial = GetRandomSerialNumber();
::android::hardware::radio::V1_0::Dial dialInfo;