Avoid Nonce Flood in core/test/cdm_engine_test.cpp

Merge from Widevine repo of http://go/wvgerrit/24205

This adds a single retry to each call into cdm_engine that uses a
nonce. This should prevent spurious tests failing because they
accidentally generated a nonce flood.

bug: 35879493
Change-Id: I99a5f2063f04befb74361ff44c4ce8e34f41e89d
This commit is contained in:
Fred Gylys-Colwell
2017-03-01 13:39:56 -08:00
parent 3b7b2c91c1
commit e2f9028c57

View File

@@ -80,9 +80,18 @@ class WvCdmEngineTest : public testing::Test {
CdmCertificateType cert_type = kCertificateWidevine; CdmCertificateType cert_type = kCertificateWidevine;
std::string cert_authority; std::string cert_authority;
std::string cert, wrapped_key; std::string cert, wrapped_key;
ASSERT_EQ(NO_ERROR, cdm_engine_.GetProvisioningRequest( CdmResponseType result = NO_ERROR;
cert_type, cert_authority, &prov_request, for (int i = 0; i < 2; i++) { // Retry once if there is a nonce problem.
&provisioning_server_url)); result = cdm_engine_.GetProvisioningRequest(
cert_type, cert_authority, &prov_request, &provisioning_server_url);
if (result == LICENSE_REQUEST_NONCE_GENERATION_ERROR) {
LOGW("Woops. Nonce problem. Try again?");
sleep(1);
} else {
break;
}
}
ASSERT_EQ(NO_ERROR, result);
UrlRequest url_request(provisioning_server_url); UrlRequest url_request(provisioning_server_url);
EXPECT_TRUE(url_request.is_connected()); EXPECT_TRUE(url_request.is_connected());
url_request.PostCertRequestInQueryString(prov_request); url_request.PostCertRequestInQueryString(prov_request);
@@ -102,10 +111,20 @@ class WvCdmEngineTest : public testing::Test {
CdmKeyRequest key_request; CdmKeyRequest key_request;
EXPECT_EQ(KEY_MESSAGE, cdm_engine_.GenerateKeyRequest( CdmResponseType result = NO_ERROR;
session_id_, key_set_id, init_data, for(int i=0; i < 2; i++) { // Retry once if there is a nonce problem.
kLicenseTypeStreaming, app_parameters, result = cdm_engine_.GenerateKeyRequest(
&key_request)); session_id_, key_set_id, init_data,
kLicenseTypeStreaming, app_parameters,
&key_request);
if (result == LICENSE_REQUEST_NONCE_GENERATION_ERROR) {
LOGW("Woops. Nonce problem. Try again?");
sleep(1);
} else {
break;
}
}
EXPECT_EQ(KEY_MESSAGE, result);
key_msg_ = key_request.message; key_msg_ = key_request.message;
EXPECT_EQ(kKeyRequestTypeInitial, key_request.type); EXPECT_EQ(kKeyRequestTypeInitial, key_request.type);
@@ -113,8 +132,17 @@ class WvCdmEngineTest : public testing::Test {
void GenerateRenewalRequest() { void GenerateRenewalRequest() {
CdmKeyRequest request; CdmKeyRequest request;
EXPECT_EQ(KEY_MESSAGE, CdmResponseType result = NO_ERROR;
cdm_engine_.GenerateRenewalRequest(session_id_, &request)); for (int i = 0; i < 2; i++) { // Retry once if there is a nonce problem.
result = cdm_engine_.GenerateRenewalRequest(session_id_, &request);
if (result == LICENSE_REQUEST_NONCE_GENERATION_ERROR) {
LOGW("Woops. Nonce problem. Try again?");
sleep(1);
} else {
break;
}
}
EXPECT_EQ(KEY_MESSAGE, result);
key_msg_ = request.message; key_msg_ = request.message;
server_url_ = request.url; server_url_ = request.url;