Quick-fail NNAPI VTS test case if driver is dead

This CL adds a check during SetUp that an NNAPI driver service is still
alive by pinging the driver service. If it is not alive, the test will
fail during SetUp. Without this quick-fail, the test case would continue
as if the driver were still active, which would result in multiple
EXPECT_* and ASSERT_* statements failing instead of a single, clear
failure message.

Bug: 197035200
Test: mma
Test: presubmit: VtsHalNeuralnetworks*TargetTest
Change-Id: Ib1b75ed20f764055699590581d5ad4e5aff4baae
Merged-In: Ib1b75ed20f764055699590581d5ad4e5aff4baae
(cherry picked from commit 9c3c8642fb)
This commit is contained in:
Michael Butler
2021-08-23 18:14:50 -07:00
parent bb90e848b9
commit 77c1b62362
15 changed files with 34 additions and 0 deletions

View File

@@ -154,6 +154,8 @@ void Execute(const sp<IDevice>& device, const TestModel& testModel) {
void GeneratedTestBase::SetUp() {
testing::TestWithParam<GeneratedTestParam>::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
}
std::vector<NamedModel> getNamedModels(const FilterFn& filter) {

View File

@@ -81,6 +81,8 @@ void createPreparedModel(const sp<IDevice>& device, const Model& model,
void NeuralnetworksHidlTest::SetUp() {
testing::TestWithParam<NeuralnetworksHidlTestParam>::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
}
static NamedDevice makeNamedDevice(const std::string& name) {

View File

@@ -162,6 +162,8 @@ void Execute(const sp<IDevice>& device, const TestModel& testModel) {
void GeneratedTestBase::SetUp() {
testing::TestWithParam<GeneratedTestParam>::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
}
std::vector<NamedModel> getNamedModels(const FilterFn& filter) {

View File

@@ -84,6 +84,8 @@ void createPreparedModel(const sp<IDevice>& device, const Model& model,
void NeuralnetworksHidlTest::SetUp() {
testing::TestWithParam<NeuralnetworksHidlTestParam>::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
}
static NamedDevice makeNamedDevice(const std::string& name) {

View File

@@ -225,6 +225,8 @@ class CompilationCachingTestBase : public testing::Test {
void SetUp() override {
testing::Test::SetUp();
ASSERT_NE(kDevice.get(), nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
// Create cache directory. The cache directory and a temporary cache file is always created
// to test the behavior of prepareModelFromCache, even when caching is not supported.

View File

@@ -384,6 +384,8 @@ void Execute(const sp<IDevice>& device, const TestModel& testModel, bool testDyn
void GeneratedTestBase::SetUp() {
testing::TestWithParam<GeneratedTestParam>::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
}
std::vector<NamedModel> getNamedModels(const FilterFn& filter) {

View File

@@ -87,6 +87,8 @@ void createPreparedModel(const sp<IDevice>& device, const Model& model,
void NeuralnetworksHidlTest::SetUp() {
testing::TestWithParam<NeuralnetworksHidlTestParam>::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
}
static NamedDevice makeNamedDevice(const std::string& name) {

View File

@@ -228,6 +228,8 @@ class CompilationCachingTestBase : public testing::Test {
void SetUp() override {
testing::Test::SetUp();
ASSERT_NE(kDevice.get(), nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
// Create cache directory. The cache directory and a temporary cache file is always created
// to test the behavior of prepareModelFromCache_1_3, even when caching is not supported.

View File

@@ -926,6 +926,8 @@ void Execute(const sp<IDevice>& device, const TestModel& testModel, TestKind tes
void GeneratedTestBase::SetUp() {
testing::TestWithParam<GeneratedTestParam>::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
}
std::vector<NamedModel> getNamedModels(const FilterFn& filter) {

View File

@@ -243,6 +243,8 @@ class MemoryDomainTestBase : public testing::Test {
void SetUp() override {
testing::Test::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
}
sp<IPreparedModel> createConvPreparedModel(const TestOperand& testOperand,

View File

@@ -92,6 +92,8 @@ void createPreparedModel(const sp<IDevice>& device, const Model& model,
void NeuralnetworksHidlTest::SetUp() {
testing::TestWithParam<NeuralnetworksHidlTestParam>::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive = kDevice->ping().isOk();
ASSERT_TRUE(deviceIsResponsive);
}
static NamedDevice makeNamedDevice(const std::string& name) {

View File

@@ -223,6 +223,9 @@ class CompilationCachingTestBase : public testing::Test {
void SetUp() override {
testing::Test::SetUp();
ASSERT_NE(kDevice.get(), nullptr);
const bool deviceIsResponsive =
ndk::ScopedAStatus::fromStatus(AIBinder_ping(kDevice->asBinder().get())).isOk();
ASSERT_TRUE(deviceIsResponsive);
// Create cache directory. The cache directory and a temporary cache file is always created
// to test the behavior of prepareModelFromCache, even when caching is not supported.

View File

@@ -904,6 +904,9 @@ void Execute(const std::shared_ptr<IDevice>& device, const TestModel& testModel,
void GeneratedTestBase::SetUp() {
testing::TestWithParam<GeneratedTestParam>::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive =
ndk::ScopedAStatus::fromStatus(AIBinder_ping(kDevice->asBinder().get())).isOk();
ASSERT_TRUE(deviceIsResponsive);
}
std::vector<NamedModel> getNamedModels(const FilterFn& filter) {

View File

@@ -233,6 +233,9 @@ class MemoryDomainTestBase : public testing::Test {
void SetUp() override {
testing::Test::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive =
ndk::ScopedAStatus::fromStatus(AIBinder_ping(kDevice->asBinder().get())).isOk();
ASSERT_TRUE(deviceIsResponsive);
}
std::shared_ptr<IPreparedModel> createConvPreparedModel(const TestOperand& testOperand,

View File

@@ -91,6 +91,9 @@ void createPreparedModel(const std::shared_ptr<IDevice>& device, const Model& mo
void NeuralNetworksAidlTest::SetUp() {
testing::TestWithParam<NeuralNetworksAidlTestParam>::SetUp();
ASSERT_NE(kDevice, nullptr);
const bool deviceIsResponsive =
ndk::ScopedAStatus::fromStatus(AIBinder_ping(kDevice->asBinder().get())).isOk();
ASSERT_TRUE(deviceIsResponsive);
}
static NamedDevice makeNamedDevice(const std::string& name) {