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

Side by Side Diff: update_attempter.cc

Issue 3259011: AU: Start an UpdateAttempter unit test suite. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « update_attempter.h ('k') | update_attempter_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "update_engine/update_attempter.h" 5 #include "update_engine/update_attempter.h"
6 6
7 // From 'man clock_gettime': feature test macro: _POSIX_C_SOURCE >= 199309L 7 // From 'man clock_gettime': feature test macro: _POSIX_C_SOURCE >= 199309L
8 #ifndef _POSIX_C_SOURCE 8 #ifndef _POSIX_C_SOURCE
9 #define _POSIX_C_SOURCE 199309L 9 #define _POSIX_C_SOURCE 199309L
10 #endif // _POSIX_C_SOURCE 10 #endif // _POSIX_C_SOURCE
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 if (type == PostinstallRunnerAction::StaticType()) 80 if (type == PostinstallRunnerAction::StaticType())
81 return kActionCodePostinstallRunnerError; 81 return kActionCodePostinstallRunnerError;
82 if (type == SetBootableFlagAction::StaticType()) 82 if (type == SetBootableFlagAction::StaticType())
83 return kActionCodeSetBootableFlagError; 83 return kActionCodeSetBootableFlagError;
84 84
85 return code; 85 return code;
86 } 86 }
87 87
88 UpdateAttempter::UpdateAttempter(PrefsInterface* prefs, 88 UpdateAttempter::UpdateAttempter(PrefsInterface* prefs,
89 MetricsLibraryInterface* metrics_lib) 89 MetricsLibraryInterface* metrics_lib)
90 : dbus_service_(NULL), 90 : processor_(new ActionProcessor()),
91 dbus_service_(NULL),
91 prefs_(prefs), 92 prefs_(prefs),
92 metrics_lib_(metrics_lib), 93 metrics_lib_(metrics_lib),
93 update_check_scheduler_(NULL), 94 update_check_scheduler_(NULL),
94 http_response_code_(0), 95 http_response_code_(0),
95 priority_(utils::kProcessPriorityNormal), 96 priority_(utils::kProcessPriorityNormal),
96 manage_priority_source_(NULL), 97 manage_priority_source_(NULL),
97 download_active_(false), 98 download_active_(false),
98 status_(UPDATE_STATUS_IDLE), 99 status_(UPDATE_STATUS_IDLE),
99 download_progress_(0.0), 100 download_progress_(0.0),
100 last_checked_time_(0), 101 last_checked_time_(0),
(...skipping 16 matching lines...) Expand all
117 } 118 }
118 if (status_ != UPDATE_STATUS_IDLE) { 119 if (status_ != UPDATE_STATUS_IDLE) {
119 // Update in progress. Do nothing 120 // Update in progress. Do nothing
120 return; 121 return;
121 } 122 }
122 http_response_code_ = 0; 123 http_response_code_ = 0;
123 if (!omaha_request_params_.Init(app_version, omaha_url)) { 124 if (!omaha_request_params_.Init(app_version, omaha_url)) {
124 LOG(ERROR) << "Unable to initialize Omaha request device params."; 125 LOG(ERROR) << "Unable to initialize Omaha request device params.";
125 return; 126 return;
126 } 127 }
127 CHECK(!processor_.IsRunning()); 128 CHECK(!processor_->IsRunning());
128 processor_.set_delegate(this); 129 processor_->set_delegate(this);
129 130
130 // Actions: 131 // Actions:
131 shared_ptr<OmahaRequestAction> update_check_action( 132 shared_ptr<OmahaRequestAction> update_check_action(
132 new OmahaRequestAction(prefs_, 133 new OmahaRequestAction(prefs_,
133 omaha_request_params_, 134 omaha_request_params_,
134 NULL, 135 NULL,
135 new LibcurlHttpFetcher)); 136 new LibcurlHttpFetcher));
136 shared_ptr<OmahaResponseHandlerAction> response_handler_action( 137 shared_ptr<OmahaResponseHandlerAction> response_handler_action(
137 new OmahaResponseHandlerAction); 138 new OmahaResponseHandlerAction);
138 shared_ptr<FilesystemCopierAction> filesystem_copier_action( 139 shared_ptr<FilesystemCopierAction> filesystem_copier_action(
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 actions_.push_back(shared_ptr<AbstractAction>( 180 actions_.push_back(shared_ptr<AbstractAction>(
180 postinstall_runner_action_precommit)); 181 postinstall_runner_action_precommit));
181 actions_.push_back(shared_ptr<AbstractAction>(set_bootable_flag_action)); 182 actions_.push_back(shared_ptr<AbstractAction>(set_bootable_flag_action));
182 actions_.push_back(shared_ptr<AbstractAction>( 183 actions_.push_back(shared_ptr<AbstractAction>(
183 postinstall_runner_action_postcommit)); 184 postinstall_runner_action_postcommit));
184 actions_.push_back(shared_ptr<AbstractAction>(update_complete_action)); 185 actions_.push_back(shared_ptr<AbstractAction>(update_complete_action));
185 186
186 // Enqueue the actions 187 // Enqueue the actions
187 for (vector<shared_ptr<AbstractAction> >::iterator it = actions_.begin(); 188 for (vector<shared_ptr<AbstractAction> >::iterator it = actions_.begin();
188 it != actions_.end(); ++it) { 189 it != actions_.end(); ++it) {
189 processor_.EnqueueAction(it->get()); 190 processor_->EnqueueAction(it->get());
190 } 191 }
191 192
192 // Bond them together. We have to use the leaf-types when calling 193 // Bond them together. We have to use the leaf-types when calling
193 // BondActions(). 194 // BondActions().
194 BondActions(update_check_action.get(), 195 BondActions(update_check_action.get(),
195 response_handler_action.get()); 196 response_handler_action.get());
196 BondActions(response_handler_action.get(), 197 BondActions(response_handler_action.get(),
197 filesystem_copier_action.get()); 198 filesystem_copier_action.get());
198 BondActions(filesystem_copier_action.get(), 199 BondActions(filesystem_copier_action.get(),
199 kernel_filesystem_copier_action.get()); 200 kernel_filesystem_copier_action.get());
200 BondActions(kernel_filesystem_copier_action.get(), 201 BondActions(kernel_filesystem_copier_action.get(),
201 download_action.get()); 202 download_action.get());
202 BondActions(download_action.get(), 203 BondActions(download_action.get(),
203 postinstall_runner_action_precommit.get()); 204 postinstall_runner_action_precommit.get());
204 BondActions(postinstall_runner_action_precommit.get(), 205 BondActions(postinstall_runner_action_precommit.get(),
205 set_bootable_flag_action.get()); 206 set_bootable_flag_action.get());
206 BondActions(set_bootable_flag_action.get(), 207 BondActions(set_bootable_flag_action.get(),
207 postinstall_runner_action_postcommit.get()); 208 postinstall_runner_action_postcommit.get());
208 209
209 SetStatusAndNotify(UPDATE_STATUS_CHECKING_FOR_UPDATE); 210 SetStatusAndNotify(UPDATE_STATUS_CHECKING_FOR_UPDATE);
210 processor_.StartProcessing(); 211 processor_->StartProcessing();
211 } 212 }
212 213
213 void UpdateAttempter::CheckForUpdate(const std::string& app_version, 214 void UpdateAttempter::CheckForUpdate(const std::string& app_version,
214 const std::string& omaha_url) { 215 const std::string& omaha_url) {
215 if (status_ != UPDATE_STATUS_IDLE) { 216 if (status_ != UPDATE_STATUS_IDLE) {
216 LOG(INFO) << "Check for update requested, but status is " 217 LOG(INFO) << "Check for update requested, but status is "
217 << UpdateStatusToString(status_) << ", so not checking."; 218 << UpdateStatusToString(status_) << ", so not checking.";
218 return; 219 return;
219 } 220 }
220 Update(app_version, omaha_url); 221 Update(app_version, omaha_url);
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 if (error_event_.get() == NULL) 420 if (error_event_.get() == NULL)
420 return false; 421 return false;
421 422
422 LOG(INFO) << "Update failed -- reporting the error event."; 423 LOG(INFO) << "Update failed -- reporting the error event.";
423 shared_ptr<OmahaRequestAction> error_event_action( 424 shared_ptr<OmahaRequestAction> error_event_action(
424 new OmahaRequestAction(prefs_, 425 new OmahaRequestAction(prefs_,
425 omaha_request_params_, 426 omaha_request_params_,
426 error_event_.release(), // Pass ownership. 427 error_event_.release(), // Pass ownership.
427 new LibcurlHttpFetcher)); 428 new LibcurlHttpFetcher));
428 actions_.push_back(shared_ptr<AbstractAction>(error_event_action)); 429 actions_.push_back(shared_ptr<AbstractAction>(error_event_action));
429 processor_.EnqueueAction(error_event_action.get()); 430 processor_->EnqueueAction(error_event_action.get());
430 SetStatusAndNotify(UPDATE_STATUS_REPORTING_ERROR_EVENT); 431 SetStatusAndNotify(UPDATE_STATUS_REPORTING_ERROR_EVENT);
431 processor_.StartProcessing(); 432 processor_->StartProcessing();
432 return true; 433 return true;
433 } 434 }
434 435
435 void UpdateAttempter::SetPriority(utils::ProcessPriority priority) { 436 void UpdateAttempter::SetPriority(utils::ProcessPriority priority) {
436 if (priority_ == priority) { 437 if (priority_ == priority) {
437 return; 438 return;
438 } 439 }
439 if (utils::SetProcessPriority(priority)) { 440 if (utils::SetProcessPriority(priority)) {
440 priority_ = priority; 441 priority_ = priority;
441 LOG(INFO) << "Process priority = " << priority_; 442 LOG(INFO) << "Process priority = " << priority_;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 SetPriority(utils::kProcessPriorityNormal); 477 SetPriority(utils::kProcessPriorityNormal);
477 return true; 478 return true;
478 } 479 }
479 // Set the priority to high and let GLib destroy the timeout source. 480 // Set the priority to high and let GLib destroy the timeout source.
480 SetPriority(utils::kProcessPriorityHigh); 481 SetPriority(utils::kProcessPriorityHigh);
481 manage_priority_source_ = NULL; 482 manage_priority_source_ = NULL;
482 return false; 483 return false;
483 } 484 }
484 485
485 } // namespace chromeos_update_engine 486 } // namespace chromeos_update_engine
OLDNEW
« no previous file with comments | « update_attempter.h ('k') | update_attempter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698