Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(636)

Unified Diff: update_attempter_unittest.cc

Issue 3617002: AU: Fall back to full updates after a number of failed delta update attempts. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git
Patch Set: remove leftover log Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « update_attempter.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: update_attempter_unittest.cc
diff --git a/update_attempter_unittest.cc b/update_attempter_unittest.cc
index ed585729920f0b5c10db102e6e588cfe69e9eae5..3c802b7b2b0dd29be60e65d9e70948318ffb6f8c 100644
--- a/update_attempter_unittest.cc
+++ b/update_attempter_unittest.cc
@@ -9,13 +9,17 @@
#include "update_engine/action_processor_mock.h"
#include "update_engine/filesystem_copier_action.h"
#include "update_engine/postinstall_runner_action.h"
+#include "update_engine/prefs_mock.h"
#include "update_engine/set_bootable_flag_action.h"
#include "update_engine/update_attempter.h"
using std::string;
+using testing::_;
+using testing::DoAll;
using testing::InSequence;
using testing::Property;
using testing::Return;
+using testing::SetArgumentPointee;
namespace chromeos_update_engine {
@@ -44,12 +48,15 @@ class UpdateAttempterTest : public ::testing::Test {
EXPECT_EQ(0, attempter_.last_checked_time_);
EXPECT_EQ("0.0.0.0", attempter_.new_version_);
EXPECT_EQ(0, attempter_.new_size_);
+ EXPECT_FALSE(attempter_.is_full_update_);
processor_ = new ActionProcessorMock();
attempter_.processor_.reset(processor_); // Transfers ownership.
+ attempter_.prefs_ = &prefs_;
}
UpdateAttempterUnderTest attempter_;
ActionProcessorMock* processor_;
+ PrefsMock prefs_;
};
TEST_F(UpdateAttempterTest, RunAsRootConstructWithUpdatedMarkerTest) {
@@ -92,6 +99,47 @@ TEST_F(UpdateAttempterTest, GetErrorCodeForActionTest) {
GetErrorCodeForAction(&action_mock, kActionCodeError));
}
+TEST_F(UpdateAttempterTest, DisableDeltaUpdateIfNeededTest) {
+ attempter_.omaha_request_params_.delta_okay = true;
+ EXPECT_CALL(prefs_, GetInt64(kPrefsDeltaUpdateFailures, _))
+ .WillOnce(Return(false));
+ attempter_.DisableDeltaUpdateIfNeeded();
+ EXPECT_TRUE(attempter_.omaha_request_params_.delta_okay);
+ EXPECT_CALL(prefs_, GetInt64(kPrefsDeltaUpdateFailures, _))
+ .WillOnce(DoAll(
+ SetArgumentPointee<1>(UpdateAttempter::kMaxDeltaUpdateFailures - 1),
+ Return(true)));
+ attempter_.DisableDeltaUpdateIfNeeded();
+ EXPECT_TRUE(attempter_.omaha_request_params_.delta_okay);
+ EXPECT_CALL(prefs_, GetInt64(kPrefsDeltaUpdateFailures, _))
+ .WillOnce(DoAll(
+ SetArgumentPointee<1>(UpdateAttempter::kMaxDeltaUpdateFailures),
+ Return(true)));
+ attempter_.DisableDeltaUpdateIfNeeded();
+ EXPECT_FALSE(attempter_.omaha_request_params_.delta_okay);
+ EXPECT_CALL(prefs_, GetInt64(_, _)).Times(0);
+ attempter_.DisableDeltaUpdateIfNeeded();
+ EXPECT_FALSE(attempter_.omaha_request_params_.delta_okay);
+}
+
+TEST_F(UpdateAttempterTest, MarkDeltaUpdateFailureTest) {
+ attempter_.is_full_update_ = false;
+ EXPECT_CALL(prefs_, GetInt64(kPrefsDeltaUpdateFailures, _))
+ .WillOnce(Return(false))
+ .WillOnce(DoAll(SetArgumentPointee<1>(-1), Return(true)))
+ .WillOnce(DoAll(SetArgumentPointee<1>(1), Return(true)))
+ .WillOnce(DoAll(
+ SetArgumentPointee<1>(UpdateAttempter::kMaxDeltaUpdateFailures),
+ Return(true)));
+ EXPECT_CALL(prefs_, SetInt64(kPrefsDeltaUpdateFailures, 1)).Times(2);
+ EXPECT_CALL(prefs_, SetInt64(kPrefsDeltaUpdateFailures, 2)).Times(1);
+ EXPECT_CALL(prefs_, SetInt64(kPrefsDeltaUpdateFailures,
+ UpdateAttempter::kMaxDeltaUpdateFailures + 1))
+ .Times(1);
+ for (int i = 0; i < 4; i ++)
+ attempter_.MarkDeltaUpdateFailure();
+}
+
TEST_F(UpdateAttempterTest, UpdateStatusToStringTest) {
extern const char* UpdateStatusToString(UpdateStatus);
EXPECT_STREQ("UPDATE_STATUS_IDLE", UpdateStatusToString(UPDATE_STATUS_IDLE));
« no previous file with comments | « update_attempter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698