diff --git a/libwvdrmengine/cdm/core/test/cdm_engine_metrics_decorator_unittest.cpp b/libwvdrmengine/cdm/core/test/cdm_engine_metrics_decorator_unittest.cpp index 8b039cc2..b453235f 100644 --- a/libwvdrmengine/cdm/core/test/cdm_engine_metrics_decorator_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/cdm_engine_metrics_decorator_unittest.cpp @@ -13,6 +13,7 @@ #include "cdm_client_property_set.h" #include "cdm_engine.h" +#include "create_test_file_system.h" #include "gmock/gmock.h" #include "gtest/gtest.h" #include "wv_cdm_event_listener.h" @@ -115,7 +116,7 @@ class MockCdmEngineImpl : public CdmEngine { class WvCdmEngineMetricsImplTest : public ::testing::Test { public: void SetUp() override { - file_system_.reset(new wvutil::FileSystem); + file_system_.reset(CreateTestFileSystem()); std::shared_ptr engine_metrics(new EngineMetrics); test_cdm_metrics_engine_.reset( new CdmEngineMetricsImpl>( diff --git a/libwvdrmengine/cdm/core/test/create_test_file_system.h b/libwvdrmengine/cdm/core/test/create_test_file_system.h new file mode 100644 index 00000000..fbd6505f --- /dev/null +++ b/libwvdrmengine/cdm/core/test/create_test_file_system.h @@ -0,0 +1,15 @@ +// Copyright 2022 Google LLC. All Rights Reserved. This file and proprietary +// source code may only be used and distributed under the Widevine License +// Agreement. + +#ifndef CDM_TEST_CREATE_TEST_FILE_SYSTEM_H_ +#define CDM_TEST_CREATE_TEST_FILE_SYSTEM_H_ + +#include "file_store.h" + +// Create a new FileSystem object that is suitable for using to create a new +// CdmEngine object. How this is implemented is platform-specific. The caller +// owns the returned pointer and is responsible for deleting it. +wvutil::FileSystem* CreateTestFileSystem(); + +#endif // CDM_TEST_CREATE_TEST_FILE_SYSTEM_H_ diff --git a/libwvdrmengine/cdm/core/test/keybox_ota_test.cpp b/libwvdrmengine/cdm/core/test/keybox_ota_test.cpp index 66046417..cc3e1580 100644 --- a/libwvdrmengine/cdm/core/test/keybox_ota_test.cpp +++ b/libwvdrmengine/cdm/core/test/keybox_ota_test.cpp @@ -4,8 +4,10 @@ #include #include +#include #include +#include "create_test_file_system.h" #include "crypto_session.h" #include "properties.h" #include "test_base.h" @@ -95,8 +97,8 @@ TEST_F(CdmOtaKeyboxTest, TestThatTheBuildFilesWork) { ASSERT_TRUE(true); } * should be skipped. */ TEST_F(CdmOtaKeyboxTest, BasicTest) { - wvutil::FileSystem file_system; - TestCdmEngine cdm_engine(&file_system, + std::unique_ptr file_system(CreateTestFileSystem()); + TestCdmEngine cdm_engine(file_system.get(), std::shared_ptr(new EngineMetrics)); // Remove any existing certificate. cdm_engine.Unprovision(kSecurityLevelL1); diff --git a/libwvdrmengine/cdm/core/test/reboot_test.cpp b/libwvdrmengine/cdm/core/test/reboot_test.cpp index 30d60b6f..32950f7b 100644 --- a/libwvdrmengine/cdm/core/test/reboot_test.cpp +++ b/libwvdrmengine/cdm/core/test/reboot_test.cpp @@ -10,6 +10,7 @@ #include +#include "create_test_file_system.h" #include "license_holder.h" #include "log.h" #include "test_sleep.h" @@ -201,7 +202,7 @@ bool RebootTest::ParseDump(const std::string& dump, void RebootTest::SetUp() { WvCdmTestBase::SetUp(); - if (!file_system_) file_system_ = new FileSystem(); + if (!file_system_) file_system_ = CreateTestFileSystem(); const ::testing::TestInfo* const test_info = ::testing::UnitTest::GetInstance()->current_test_info(); diff --git a/libwvdrmengine/cdm/core/test/test_base.cpp b/libwvdrmengine/cdm/core/test/test_base.cpp index f2c931eb..51470ace 100644 --- a/libwvdrmengine/cdm/core/test/test_base.cpp +++ b/libwvdrmengine/cdm/core/test/test_base.cpp @@ -324,12 +324,12 @@ void WvCdmTestBase::Provision() { std::string cert, wrapped_key; CdmSessionId session_id; - wvutil::FileSystem file_system; + std::unique_ptr file_system(CreateTestFileSystem()); if (config_.provisioning_server() == "fake") { LOGD("Using fake provisioning server."); - TestCdmEngine cdm_engine(&file_system, + TestCdmEngine cdm_engine(file_system.get(), std::shared_ptr(new EngineMetrics)); FakeProvisioningServer server; CdmResponseType result = cdm_engine.GetProvisioningRequest( @@ -349,7 +349,7 @@ void WvCdmTestBase::Provision() { EXPECT_EQ(NO_ERROR, result); } else { // TODO(fredgc): provision for different SPOIDs. - TestCdmEngine cdm_engine(&file_system, + TestCdmEngine cdm_engine(file_system.get(), std::shared_ptr(new EngineMetrics)); CdmResponseType result = cdm_engine.GetProvisioningRequest( @@ -424,11 +424,11 @@ void WvCdmTestBase::Provision() { // that certificate from the provisioning request. void WvCdmTestBase::EnsureProvisioned() { CdmSessionId session_id; - wvutil::FileSystem file_system; + std::unique_ptr file_system(CreateTestFileSystem()); // OpenSession will check if a DRM certificate exists, while // GenerateKeyRequest will actually load the wrapped private key. // Either may return a NEED_PROVISIONING error, so both have to be checked. - TestCdmEngine cdm_engine(&file_system, + TestCdmEngine cdm_engine(file_system.get(), std::shared_ptr(new EngineMetrics)); CdmResponseType status = cdm_engine.OpenSession(config_.key_system(), nullptr, nullptr, &session_id); diff --git a/libwvdrmengine/cdm/core/test/test_base.h b/libwvdrmengine/cdm/core/test/test_base.h index 68372c3a..9119363e 100644 --- a/libwvdrmengine/cdm/core/test/test_base.h +++ b/libwvdrmengine/cdm/core/test/test_base.h @@ -13,6 +13,7 @@ #include "cdm_engine.h" #include "config_test_env.h" +#include "create_test_file_system.h" #include "crypto_session.h" #include "metrics_collections.h" #include "oemcrypto_types.h" @@ -92,11 +93,12 @@ class TestCdmEngine : public CdmEngine { class WvCdmTestBaseWithEngine : public WvCdmTestBase { public: WvCdmTestBaseWithEngine() - : dummy_engine_metrics_(new metrics::EngineMetrics()), - cdm_engine_(&file_system_, dummy_engine_metrics_) {} + : file_system_(CreateTestFileSystem()), + dummy_engine_metrics_(new metrics::EngineMetrics()), + cdm_engine_(file_system_.get(), dummy_engine_metrics_) {} protected: - wvutil::FileSystem file_system_; + std::unique_ptr file_system_; std::shared_ptr dummy_engine_metrics_; TestCdmEngine cdm_engine_; }; diff --git a/libwvdrmengine/cdm/test/coverage-test.mk b/libwvdrmengine/cdm/test/coverage-test.mk index 0c771811..66102d86 100644 --- a/libwvdrmengine/cdm/test/coverage-test.mk +++ b/libwvdrmengine/cdm/test/coverage-test.mk @@ -19,6 +19,7 @@ LOCAL_MODULE_TAGS := tests LOCAL_SRC_FILES := \ ./cdm_coverage_main.cpp \ + ./create_test_file_system.cpp \ ../core/test/buffer_reader_test.cpp \ ../core/test/config_test_env.cpp \ ../core/test/device_files_unittest.cpp \ diff --git a/libwvdrmengine/cdm/test/create_test_file_system.cpp b/libwvdrmengine/cdm/test/create_test_file_system.cpp new file mode 100644 index 00000000..926782c5 --- /dev/null +++ b/libwvdrmengine/cdm/test/create_test_file_system.cpp @@ -0,0 +1,7 @@ +// Copyright 2022 Google LLC. All Rights Reserved. This file and proprietary +// source code may only be used and distributed under the Widevine License +// Agreement. + +#include "create_test_file_system.h" + +wvutil::FileSystem* CreateTestFileSystem() { return new wvutil::FileSystem(); } diff --git a/libwvdrmengine/cdm/test/integration-test.mk b/libwvdrmengine/cdm/test/integration-test.mk index 92227ee8..cd9eb659 100644 --- a/libwvdrmengine/cdm/test/integration-test.mk +++ b/libwvdrmengine/cdm/test/integration-test.mk @@ -23,6 +23,7 @@ LOCAL_MODULE_TAGS := tests LOCAL_SRC_FILES := \ $(test_main) \ $(test_src_dir)/$(test_name).cpp \ + ./create_test_file_system.cpp \ ../core/test/config_test_env.cpp \ ../core/test/fake_provisioning_server.cpp \ ../core/test/http_socket.cpp \ diff --git a/libwvdrmengine/cdm/test/unit-test.mk b/libwvdrmengine/cdm/test/unit-test.mk index 8b099d9c..084f79df 100644 --- a/libwvdrmengine/cdm/test/unit-test.mk +++ b/libwvdrmengine/cdm/test/unit-test.mk @@ -22,6 +22,7 @@ LOCAL_MODULE_TAGS := tests LOCAL_SRC_FILES := \ $(test_src_dir)/$(test_name).cpp \ + ./create_test_file_system.cpp \ ../core/test/config_test_env.cpp \ ../core/test/fake_provisioning_server.cpp \ ../core/test/http_socket.cpp \