diff options
author | Przemyslaw Szczepaniak <pszczepaniak@google.com> | 2019-04-12 08:50:56 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-04-12 08:50:56 +0000 |
commit | cb339ca7f93eb230bf4132cf3526a8ac85edfd57 (patch) | |
tree | 731bed1786cc667ead26d89fa99bae74c031f527 /nn/runtime/test/TestExtensions.cpp | |
parent | 9804565b845a8207b880bb8a610d5aefc2ab85c7 (diff) | |
parent | 4c8845ed10fcb2c490705bab3435f7e5cf004d97 (diff) | |
download | ml-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.cpp | 112 |
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 |