Merge changes I9432dd26,Id52b8c38 am: cc715b479d

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/12776079

Change-Id: Ic2b17ebd656e832dcf5775de49a1200bac4fcedf
This commit is contained in:
John Bruce
2020-10-19 19:51:22 +00:00
committed by Automerger Merge Worker
3 changed files with 24 additions and 14 deletions

View File

@@ -5,6 +5,7 @@
#include <memory> #include <memory>
#include <string> #include <string>
#include <gmock/gmock.h>
#include <gtest/gtest.h> #include <gtest/gtest.h>
#include "crypto_session.h" #include "crypto_session.h"
@@ -19,6 +20,10 @@
#include "wv_cdm_types.h" #include "wv_cdm_types.h"
#include "wv_metrics.pb.h" #include "wv_metrics.pb.h"
using ::testing::AllOf;
using ::testing::Ge;
using ::testing::Le;
namespace { namespace {
const uint8_t kOemCert[] = { const uint8_t kOemCert[] = {
@@ -296,7 +301,7 @@ TEST_F(CryptoSessionMetricsTest, OpenSessionValidMetrics) {
// lite, convert these tests to use Message-based convenience functions. // lite, convert these tests to use Message-based convenience functions.
// Validate common metrics regardless of provisioning type. // Validate common metrics regardless of provisioning type.
EXPECT_EQ(1, metrics_proto.oemcrypto_initialize_time_us().size()); ASSERT_EQ(1, metrics_proto.oemcrypto_initialize_time_us().size());
EXPECT_TRUE(metrics_proto.oemcrypto_initialize_time_us(0) EXPECT_TRUE(metrics_proto.oemcrypto_initialize_time_us(0)
.attributes() .attributes()
.has_oem_crypto_result()); .has_oem_crypto_result());
@@ -327,7 +332,8 @@ TEST_F(CryptoSessionMetricsTest, OpenSessionValidMetrics) {
EXPECT_EQ(OEMCrypto_OEMCertificate, EXPECT_EQ(OEMCrypto_OEMCertificate,
metrics_proto.oemcrypto_provisioning_method().int_value()); metrics_proto.oemcrypto_provisioning_method().int_value());
ASSERT_EQ(1, metrics_proto.oemcrypto_get_oem_public_certificate().size()); ASSERT_EQ(1, metrics_proto.oemcrypto_get_oem_public_certificate().size());
EXPECT_EQ(1, metrics_proto.oemcrypto_get_oem_public_certificate(0).count()); EXPECT_THAT(metrics_proto.oemcrypto_get_oem_public_certificate(0).count(),
AllOf(Ge(1), Le(2)));
} else if (token_type == kClientTokenDrmCert) { } else if (token_type == kClientTokenDrmCert) {
// TODO(blueeyes): Add support for getting the system id from a // TODO(blueeyes): Add support for getting the system id from a
// pre-installed DRM certificate.. // pre-installed DRM certificate..
@@ -373,8 +379,9 @@ TEST_F(CryptoSessionMetricsTest, GetProvisioningTokenValidMetrics) {
EXPECT_EQ(OEMCrypto_OEMCertificate, EXPECT_EQ(OEMCrypto_OEMCertificate,
metrics_proto.oemcrypto_provisioning_method().int_value()); metrics_proto.oemcrypto_provisioning_method().int_value());
EXPECT_EQ(1, metrics_proto.oemcrypto_get_oem_public_certificate().size()); ASSERT_EQ(1, metrics_proto.oemcrypto_get_oem_public_certificate().size());
EXPECT_EQ(1, metrics_proto.oemcrypto_get_oem_public_certificate(0).count()); EXPECT_THAT(metrics_proto.oemcrypto_get_oem_public_certificate(0).count(),
AllOf(Ge(1), Le(2)));
ASSERT_EQ(1, metrics_proto.crypto_session_get_token().size()); ASSERT_EQ(1, metrics_proto.crypto_session_get_token().size());
EXPECT_EQ(1, metrics_proto.crypto_session_get_token(0).count()); EXPECT_EQ(1, metrics_proto.crypto_session_get_token(0).count());

View File

@@ -23,7 +23,7 @@ namespace wvcdm {
bool TestSleep::real_sleep_ = true; bool TestSleep::real_sleep_ = true;
TestSleep::CallBack* TestSleep::callback_ = nullptr; TestSleep::CallBack* TestSleep::callback_ = nullptr;
int TestSleep::total_clock_rollback_ = 0; int TestSleep::total_clock_rollback_seconds_ = 0;
void TestSleep::Sleep(unsigned int seconds) { void TestSleep::Sleep(unsigned int seconds) {
int64_t milliseconds = 1000 * seconds; int64_t milliseconds = 1000 * seconds;
@@ -33,11 +33,15 @@ void TestSleep::Sleep(unsigned int seconds) {
// total since the start, and then compare to a running total of sleep // total since the start, and then compare to a running total of sleep
// calls. We sleep for approximately x second, and then advance the clock by // calls. We sleep for approximately x second, and then advance the clock by
// the amount of time that has actually passed. // the amount of time that has actually passed.
static auto start_real = std::chrono::system_clock().now(); static const auto start_real = std::chrono::system_clock().now();
static int64_t fake_clock = 0;
sleep(seconds); sleep(seconds);
auto now_real = std::chrono::system_clock().now(); const auto now_real = std::chrono::system_clock().now();
int64_t total_real = (now_real - start_real) / std::chrono::milliseconds(1); const int64_t rollback_adjustment = 1000 * total_clock_rollback_seconds_;
const int64_t total_real =
(now_real - start_real) / std::chrono::milliseconds(1) +
rollback_adjustment;
static int64_t fake_clock = 0;
// We want to advance the fake clock by the difference between the real // We want to advance the fake clock by the difference between the real
// clock, and the previous value on the fake clock. // clock, and the previous value on the fake clock.
milliseconds = total_real - fake_clock; milliseconds = total_real - fake_clock;
@@ -90,7 +94,7 @@ bool TestSleep::RollbackSystemTime(int seconds) {
// For both real and fake sleep we still update the callback and we still keep // For both real and fake sleep we still update the callback and we still keep
// track of the total amount of time slept. // track of the total amount of time slept.
total_clock_rollback_ += seconds; total_clock_rollback_seconds_ += seconds;
if (callback_ != nullptr) callback_->ElapseTime(-1000 * seconds); if (callback_ != nullptr) callback_->ElapseTime(-1000 * seconds);
return true; return true;
} }
@@ -98,7 +102,6 @@ bool TestSleep::RollbackSystemTime(int seconds) {
bool TestSleep::CanChangeSystemTime() { bool TestSleep::CanChangeSystemTime() {
// If we are using a fake clock, then we can move the clock backwards by // If we are using a fake clock, then we can move the clock backwards by
// just going backwards. // just going backwards.
// ElapseTime.
if (!real_sleep_) { if (!real_sleep_) {
return true; return true;
} }

View File

@@ -44,8 +44,8 @@ class TestSleep {
// Roll the system clock forward to undo all previous calls to // Roll the system clock forward to undo all previous calls to
// RollBackSystemTime. Returns true on success. // RollBackSystemTime. Returns true on success.
static bool ResetRollback() { static bool ResetRollback() {
return total_clock_rollback_ == 0 || return total_clock_rollback_seconds_ == 0 ||
RollbackSystemTime(-total_clock_rollback_); RollbackSystemTime(-total_clock_rollback_seconds_);
} }
// Returns true if the system time can be rolled back. This is true on some // Returns true if the system time can be rolled back. This is true on some
@@ -67,7 +67,7 @@ class TestSleep {
static CallBack* callback_; static CallBack* callback_;
// The sum of all calls to RollBackSystemTime. Kept so we can undo all changes // The sum of all calls to RollBackSystemTime. Kept so we can undo all changes
// at the end of a test. // at the end of a test.
static int total_clock_rollback_; static int total_clock_rollback_seconds_;
}; };
} // namespace wvcdm } // namespace wvcdm