From 3c7528de6296aec8ded849ab4fa63e2e29be2fa1 Mon Sep 17 00:00:00 2001 From: Fred Gylys-Colwell Date: Sun, 19 Dec 2021 07:22:33 +0000 Subject: [PATCH] Handle nonce flood in OTA test Merge from Widevine repo of http://go/wvgerrit/142049 This CL is test only code. A nonce flood was causing the OTA test to be a little flaky when run on the automatic testing platform Luci. Bug: 205889158 Change-Id: I4f3e5d8469b899e565c430bd46994e098c5d94e6 --- .../cdm/core/test/keybox_ota_test.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/libwvdrmengine/cdm/core/test/keybox_ota_test.cpp b/libwvdrmengine/cdm/core/test/keybox_ota_test.cpp index 44b5c81b..8a01fa82 100644 --- a/libwvdrmengine/cdm/core/test/keybox_ota_test.cpp +++ b/libwvdrmengine/cdm/core/test/keybox_ota_test.cpp @@ -45,11 +45,20 @@ class CdmOtaKeyboxTest : public ::testing::Test { std::string cert_authority; CdmProvisioningRequest prov_request; std::string provisioning_server_url; - CdmResponseType result = cdm_engine->GetProvisioningRequest( - cert_type, cert_authority, config.provisioning_service_certificate(), - kLevelDefault, &prov_request, &provisioning_server_url); + CdmResponseType result = CERT_PROVISIONING_NONCE_GENERATION_ERROR; + // Get a provisioning request. We might need one retry if there is a nonce + // flood failure. + for (int i = 0; i < 2; i++) { + result = cdm_engine->GetProvisioningRequest( + cert_type, cert_authority, config.provisioning_service_certificate(), + kLevelDefault, &prov_request, &provisioning_server_url); + if (result == CERT_PROVISIONING_NONCE_GENERATION_ERROR) { + TestSleep::Sleep(2); + continue; + } + break; + } ASSERT_EQ(NO_ERROR, result); - LOGV("Provisioning request: req = %s", prov_request.c_str()); // Ignore URL provided by CdmEngine. Use ours, as configured