From a0040ec5bfa4e3472bad1f8f285762b10ebb1c70 Mon Sep 17 00:00:00 2001 From: Fred Gylys-Colwell Date: Wed, 14 Feb 2018 17:37:11 -0800 Subject: [PATCH] Halt tests after multiple failures Merge from Widevine repo of http://go/wvgerrit/43440 This CL changes several tests so that they abort after multiple failures. This prevents a network error from putting one of the usage table tests into an infinite loop. bug: 73397596 test: unit tests Change-Id: Iaaec9eb2b39a6a2b2cfc90ee1c28bae0486aa851 --- .../cdm/test/cdm_extended_duration_test.cpp | 14 +++++++++++--- libwvdrmengine/cdm/test/request_license_test.cpp | 15 +++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp index 01f56d80..eaf9f4a7 100644 --- a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp +++ b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp @@ -963,13 +963,17 @@ TEST_F(WvCdmExtendedDurationTest, UsageOverflowTest) { CdmResponseType status = decryptor_.GetUsageInfo( "", kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); + int error_count = 0; while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg, - kDefaultCdmIdentifier)); + kDefaultCdmIdentifier)) + << i << "/" << usage_info.size() << " (err " << (error_count++) << ")" + << release_msg; } + ASSERT_LE(error_count, 100); // Give up after 100 failures. status = decryptor_.GetUsageInfo("", kDefaultCdmIdentifier, &usage_info); switch (status) { case KEY_MESSAGE: EXPECT_FALSE(usage_info.empty()); break; @@ -1395,6 +1399,7 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) { CdmResponseType status = decryptor_.GetUsageInfo( "", kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); + int error_count = 0; while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { ValidateReleaseRequest(usage_info[i], @@ -1403,9 +1408,12 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) { expected_seconds_since_last_playback); release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); - EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg, - kDefaultCdmIdentifier)); + EXPECT_EQ(NO_ERROR, + decryptor_.ReleaseUsageInfo(release_msg, kDefaultCdmIdentifier)) + << i << "/" << usage_info.size() << " (err " << (error_count++) << ")" + << release_msg; } + ASSERT_LE(error_count, 100); // Give up after 100 failures. status = decryptor_.GetUsageInfo("", kDefaultCdmIdentifier, &usage_info); switch (status) { case KEY_MESSAGE: diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index 56da4c35..f858775c 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -2832,13 +2832,17 @@ TEST_F(WvCdmRequestLicenseTest, UsageInfoRetryTest) { // before release. status = decryptor_.GetUsageInfo(app_id, kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); + int error_count = 0; while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg, - kDefaultCdmIdentifier)); + kDefaultCdmIdentifier)) + << i << "/" << usage_info.size() << " (err " << (error_count++) << ")" + << release_msg; } + ASSERT_LE(error_count, 100); // Give up after 100 failures. status = decryptor_.GetUsageInfo( app_id, kDefaultCdmIdentifier, &usage_info); switch (status) { @@ -2925,14 +2929,17 @@ TEST_P(WvCdmUsageInfoTest, UsageInfo) { decryptor_.GetUsageInfo(usage_info_data->app_id, kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); + int error_count = 0; while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); - EXPECT_EQ( - NO_ERROR, - decryptor_.ReleaseUsageInfo(release_msg, kDefaultCdmIdentifier)); + EXPECT_EQ(NO_ERROR, + decryptor_.ReleaseUsageInfo(release_msg, kDefaultCdmIdentifier)) + << i << "/" << usage_info.size() << " (err " << (error_count++) << ")" + << release_msg; } + ASSERT_LE(error_count, 100); // Give up after 100 failures. status = decryptor_.GetUsageInfo(usage_info_data->app_id, kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status);