// Copyright 2020 Google LLC. All Rights Reserved. #include #include #include #include #include "api/license_whitebox.h" #include "api/license_whitebox_benchmark.h" #include "api/result.h" #include "api/test_data.h" #include "api/test_license_builder.h" #include "base/logging.h" #include "benchmarking/data_source.h" #include "benchmarking/measurements.h" #include "testing/gtest/include/gtest/gtest.h" namespace widevine { namespace { constexpr size_t kMessageSize = 4 * 1024; // 4 KB license response. } class LicenseWhiteboxVerifyBenchmark : public LicenseWhiteboxBenchmark { protected: void SetUp() override { LicenseWhiteboxBenchmark::SetUp(); message_ = Data().Get(kMessageSize); signature_ = SignAsServer(message_); const auto init_data = GetLicenseInitData(); ASSERT_EQ(WB_License_Create(init_data.data(), init_data.size(), &whitebox_), WB_RESULT_OK); const auto license = CreateLicense(); ASSERT_EQ(WB_License_ProcessLicenseResponse( whitebox_, license.message.data(), license.message.size(), license.signature.data(), license.signature.size(), license.session_key.data(), license.session_key.size(), license.request.data(), license.request.size()), WB_RESULT_OK); } void TearDown() override { WB_License_Delete(whitebox_); } WB_License_Whitebox* whitebox_; std::vector message_; std::vector signature_; }; TEST_F(LicenseWhiteboxVerifyBenchmark, VerifyRenewalResponse) { constexpr size_t kIterations = 100; Timer timer; Sampler sampler; for (size_t i = 0; i < kIterations; i++) { timer.Reset(); ASSERT_EQ(WB_RESULT_OK, WB_License_VerifyRenewalResponse( whitebox_, message_.data(), message_.size(), signature_.data(), signature_.size())); sampler.Push(timer.Get()); } PrettyPrint("License White-box Verify Renewal Response Duration", sampler, message_.size()); } } // namespace widevine