summaryrefslogtreecommitdiff
path: root/nn/runtime/test/TestExtensions.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Szczepaniak <pszczepaniak@google.com>2019-04-12 08:50:56 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-04-12 08:50:56 +0000
commitcb339ca7f93eb230bf4132cf3526a8ac85edfd57 (patch)
tree731bed1786cc667ead26d89fa99bae74c031f527 /nn/runtime/test/TestExtensions.cpp
parent9804565b845a8207b880bb8a610d5aefc2ab85c7 (diff)
parent4c8845ed10fcb2c490705bab3435f7e5cf004d97 (diff)
downloadml-cb339ca7f93eb230bf4132cf3526a8ac85edfd57.tar.gz
Merge "Relax NNAPI Vendor Extensions usage restrictions."
Diffstat (limited to 'nn/runtime/test/TestExtensions.cpp')
-rw-r--r--nn/runtime/test/TestExtensions.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/nn/runtime/test/TestExtensions.cpp b/nn/runtime/test/TestExtensions.cpp
index 7a228d290..10b305e2c 100644
--- a/nn/runtime/test/TestExtensions.cpp
+++ b/nn/runtime/test/TestExtensions.cpp
@@ -117,4 +117,116 @@ TEST_F(ExtensionsTest, DeviceReportsSupportedExtensions) {
EXPECT_TRUE(testDriverSupportsExtension(kTestExtension3));
}
+TEST_F(ExtensionsTest, TestAllowedNativeBinaries) {
+ EXPECT_FALSE(TypeManager::isExtensionsUseAllowed("",
+ /* productEnabled= */ false,
+ /* isSystemApp= */ false,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+
+ EXPECT_FALSE(TypeManager::isExtensionsUseAllowed("/foobar/foo",
+ /* productEnabled= */ false,
+ /* isSystemApp= */ false,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+
+ EXPECT_TRUE(TypeManager::isExtensionsUseAllowed("/data/foo",
+ /* productEnabled= */ false,
+ /* isSystemApp= */ false,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+
+ EXPECT_TRUE(TypeManager::isExtensionsUseAllowed("/vendor/foo",
+ /* productEnabled= */ false,
+ /* isSystemApp= */ false,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+
+ EXPECT_TRUE(TypeManager::isExtensionsUseAllowed("/odm/foo",
+ /* productEnabled= */ false,
+ /* isSystemApp= */ false,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+
+ EXPECT_FALSE(TypeManager::isExtensionsUseAllowed("/system/foo",
+ /* productEnabled= */ false,
+ /* isSystemApp= */ false,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+
+ EXPECT_FALSE(TypeManager::isExtensionsUseAllowed("/product/foo",
+ /* productEnabled= */ false,
+ /* isSystemApp= */ false,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+
+ EXPECT_TRUE(TypeManager::isExtensionsUseAllowed("/product/foo",
+ /* productEnabled= */ true,
+ /* isSystemApp= */ false,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+}
+
+TEST_F(ExtensionsTest, TestAllowedApps) {
+ std::string app_process32 = "/system/bin/app_process32";
+ std::string app_process64 = "/system/bin/app_process64";
+ std::string other_binary = "/system/bin/foo";
+
+ auto test_app_process = [](const std::string& binary) {
+ // /data app
+ EXPECT_TRUE(TypeManager::isExtensionsUseAllowed(binary,
+ /* productEnabled= */ false,
+ /* isSystemApp= */ false,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+
+ // /system app
+ EXPECT_FALSE(TypeManager::isExtensionsUseAllowed(binary,
+ /* productEnabled= */ false,
+ /* isSystemApp= */ true,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+
+ // /vendor || /odm app
+ EXPECT_TRUE(TypeManager::isExtensionsUseAllowed(binary,
+ /* productEnabled= */ false,
+ /* isSystemApp= */ true,
+ /* isAppOnVendorImage= */ true,
+ /* isAppOnProductImage= */ false));
+
+ // /product app, disabled
+ EXPECT_FALSE(TypeManager::isExtensionsUseAllowed(binary,
+ /* productEnabled= */ false,
+ /* isSystemApp= */ true,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ true));
+
+ // /product app, enabled
+ EXPECT_TRUE(TypeManager::isExtensionsUseAllowed(binary,
+ /* productEnabled= */ true,
+ /* isSystemApp= */ true,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ true));
+ };
+ test_app_process(app_process64);
+ test_app_process(app_process32);
+
+ // Test all positive cases fail if binary is not app_process32|64
+ EXPECT_FALSE(TypeManager::isExtensionsUseAllowed(other_binary,
+ /* productEnabled= */ false,
+ /* isSystemApp= */ false,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ false));
+ EXPECT_FALSE(TypeManager::isExtensionsUseAllowed(other_binary,
+ /* productEnabled= */ false,
+ /* isSystemApp= */ true,
+ /* isAppOnVendorImage= */ true,
+ /* isAppOnProductImage= */ false));
+ EXPECT_FALSE(TypeManager::isExtensionsUseAllowed(other_binary,
+ /* productEnabled= */ true,
+ /* isSystemApp= */ true,
+ /* isAppOnVendorImage= */ false,
+ /* isAppOnProductImage= */ true));
+}
+
} // namespace