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 4e866a3020)
This commit is contained in:
Shuo Qian 2020-05-12 18:15:12 -07:00 committed by sqian
parent ac06943cad
commit f2ed9ffcb9
3 changed files with 54 additions and 0 deletions

View file

@ -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 @@ int GetRandomSerialNumber() {
}
}
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;
}

View file

@ -17,6 +17,7 @@
#include <android-base/logging.h>
#include <android/hardware/radio/1.0/types.h>
#include <android/log.h>
#include <gtest/gtest.h>
using ::android::hardware::radio::V1_0::RadioError;
@ -31,6 +32,8 @@ enum CheckFlag {
CHECK_SAP_ERROR = 4,
};
static constexpr const char* FEATURE_VOICE_CALL = "android.software.connectionservice";
/*
* Generate random serial number for radio test
*/
@ -47,3 +50,8 @@ int GetRandomSerialNumber();
* vendor/devices implementations.
*/
::testing::AssertionResult CheckAnyOfErrors(SapResultCode err, std::vector<SapResultCode> errors);
/*
* Check if device supports feature.
*/
bool deviceSupportsFeature(const char* feature);

View file

@ -22,6 +22,13 @@
* Test IRadio.emergencyDial() for the response returned.
*/
TEST_P(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_P(RadioHidlTest_v1_4, emergencyDial) {
* Test IRadio.emergencyDial() with specified service and its response returned.
*/
TEST_P(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_P(RadioHidlTest_v1_4, emergencyDial_withServices) {
* Test IRadio.emergencyDial() with known emergency call routing and its response returned.
*/
TEST_P(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;