Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 350d91b1 authored by Xusong Wang's avatar Xusong Wang
Browse files

Remove tmp directory after CompilationCachingTest if cache not supported.

The tmp directory is only removed when the driver reports caching not
supported, otherwise it is kept for debugging purpose.

Test: 1.2 VTS tests with sample driver
Change-Id: I5969beb1ec365c992765f40d7693630606f16e18
parent 02b43050
Loading
Loading
Loading
Loading
+26 −10
Original line number Diff line number Diff line
@@ -87,13 +87,20 @@ class CompilationCachingTest : public NeuralnetworksHidlTest {
    void SetUp() override {
        NeuralnetworksHidlTest::SetUp();

        // Create cache directory.
        // Create cache directory. The cache directory and cache files are always created to test
        // the behavior of prepareModelFromCache, even when caching is not supported.
        char cacheDirTemp[] = "/data/local/tmp/TestCompilationCachingXXXXXX";
        char* cacheDir = mkdtemp(cacheDirTemp);
        ASSERT_NE(cacheDir, nullptr);
        mCache1 = cacheDir + mCache1;
        mCache2 = cacheDir + mCache2;
        mCache3 = cacheDir + mCache3;
        mCacheDir = cacheDir;

        // Create empty cache files.
        mCache1 = mCacheDir + "/cache1";
        mCache2 = mCacheDir + "/cache2";
        mCache3 = mCacheDir + "/cache3";
        // A dummy handle, use AccessMode::WRITE_ONLY for createCacheHandle to create files.
        hidl_handle handle;
        createCacheHandle({mCache1, mCache2, mCache3}, AccessMode::WRITE_ONLY, &handle);

        // Check if caching is supported.
        bool isCachingSupported;
@@ -113,10 +120,18 @@ class CompilationCachingTest : public NeuralnetworksHidlTest {
                      << std::endl;
            mIsCachingSupported = false;
        }
    }

        // Create empty cache files.
        hidl_handle handle;
        createCacheHandle({mCache1, mCache2, mCache3}, AccessMode::WRITE_ONLY, &handle);
    void TearDown() override {
        // The tmp directory is only removed when the driver reports caching not supported,
        // otherwise it is kept for debugging purpose.
        if (!mIsCachingSupported) {
            remove(mCache1.c_str());
            remove(mCache2.c_str());
            remove(mCache3.c_str());
            rmdir(mCacheDir.c_str());
        }
        NeuralnetworksHidlTest::TearDown();
    }

    void saveModelToCache(sp<IPreparedModel> preparedModel, const hidl_handle& cache1,
@@ -163,9 +178,10 @@ class CompilationCachingTest : public NeuralnetworksHidlTest {
                                 .withDefault(nullptr);
    }

    std::string mCache1 = "/cache1";
    std::string mCache2 = "/cache2";
    std::string mCache3 = "/cache3";
    std::string mCacheDir;
    std::string mCache1;
    std::string mCache2;
    std::string mCache3;
    uint8_t mToken[static_cast<uint32_t>(Constant::BYTE_SIZE_OF_CACHE_TOKEN)] = {};
    bool mIsCachingSupported;
};