Merge "Create test FileSystems in a platform-specific manner"

This commit is contained in:
TreeHugger Robot
2022-07-13 23:08:56 +00:00
committed by Android (Google) Code Review
10 changed files with 43 additions and 12 deletions

View File

@@ -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<EngineMetrics> engine_metrics(new EngineMetrics);
test_cdm_metrics_engine_.reset(
new CdmEngineMetricsImpl<StrictMock<MockCdmEngineImpl>>(

View File

@@ -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_

View File

@@ -4,8 +4,10 @@
#include <gtest/gtest.h>
#include <chrono>
#include <memory>
#include <thread>
#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<wvutil::FileSystem> file_system(CreateTestFileSystem());
TestCdmEngine cdm_engine(file_system.get(),
std::shared_ptr<EngineMetrics>(new EngineMetrics));
// Remove any existing certificate.
cdm_engine.Unprovision(kSecurityLevelL1);

View File

@@ -10,6 +10,7 @@
#include <sstream>
#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();

View File

@@ -324,12 +324,12 @@ void WvCdmTestBase::Provision() {
std::string cert, wrapped_key;
CdmSessionId session_id;
wvutil::FileSystem file_system;
std::unique_ptr<wvutil::FileSystem> 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<EngineMetrics>(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<EngineMetrics>(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<wvutil::FileSystem> 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<EngineMetrics>(new EngineMetrics));
CdmResponseType status = cdm_engine.OpenSession(config_.key_system(), nullptr,
nullptr, &session_id);

View File

@@ -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<wvutil::FileSystem> file_system_;
std::shared_ptr<metrics::EngineMetrics> dummy_engine_metrics_;
TestCdmEngine cdm_engine_;
};

View File

@@ -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 \

View File

@@ -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(); }

View File

@@ -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 \

View File

@@ -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 \