update_engine: UM: Add P2P download limits to UpdateCanStart.
This adds two factors that are currently used for blocking P2P into the
Chrome OS policy implementation: a maximum number of P2P download
attempts and a maximum time period since the first attempt.
BUG=chromium:420732
TEST=Unit tests.
Change-Id: I430dec50cf07f37a0c3f14de3410d3c6bfb8ac78
Reviewed-on: https://chromium-review.googlesource.com/221735
Reviewed-by: David Zeuthen <zeuthen@chromium.org>
Reviewed-by: Alex Deymo <deymo@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
Commit-Queue: Gilad Arnold <garnold@chromium.org>
diff --git a/update_manager/chromeos_policy.h b/update_manager/chromeos_policy.h
index 17f2c29..e3e9c5f 100644
--- a/update_manager/chromeos_policy.h
+++ b/update_manager/chromeos_policy.h
@@ -85,6 +85,10 @@
FRIEND_TEST(UmChromeOSPolicyTest, UpdateCanStartAllowedScatteringSatisfied);
FRIEND_TEST(UmChromeOSPolicyTest,
UpdateCanStartAllowedInteractivePreventsScattering);
+ FRIEND_TEST(UmChromeOSPolicyTest,
+ UpdateCanStartAllowedP2PBlockedDueToNumAttempts);
+ FRIEND_TEST(UmChromeOSPolicyTest,
+ UpdateCanStartAllowedP2PBlockedDueToAttemptsPeriod);
// Auxiliary constant (zero by default).
const base::TimeDelta kZeroInterval;
@@ -101,6 +105,11 @@
static const int kAttemptBackoffMaxIntervalInDays;
static const int kAttemptBackoffFuzzInHours;
+ // Maximum number of times we'll allow using P2P for the same update payload.
+ static const int kMaxP2PAttempts;
+ // Maximum period of time allowed for download a payload via P2P, in seconds.
+ static const int kMaxP2PAttemptsPeriodInSeconds;
+
// A private policy implementation returning the wallclock timestamp when
// the next update check should happen.
// TODO(garnold) We should probably change that to infer a monotonic