39910dcd1d68987ccee7c3031dc269233a8490bb |
|
10-Nov-2015 |
Alex Deymo <deymo@google.com> |
Split payload application code into a subdirectory. This patch splits from the main libupdate_engine code the part that is strictly used to download and apply a payload into a new static library, moving the code to subdirectories. The new library is divided in two subdirectories: common/ and payload_consumer/, and should not depend on other update_engine files outside those two subdirectories. The main difference between those two is that the common/ tools are more generic and not tied to the payload consumer process, but otherwise they are both compiled together. There are still dependencies from the new libpayload_consumer library into the main directory files and DBus generated files. Those will be addressed in follow up CLs. Bug: 25197634 Test: FEATURES=test emerge-link update_engine; `mm` on Brillo. Change-Id: Id8d0204ea573627e6e26ca9ea17b9592ca95bc23
/system/update_engine/update_manager/update_manager.h
|
aea4c1cea20dda7ae7e85fc8924a2d784f70d806 |
|
20-Aug-2015 |
Alex Deymo <deymo@google.com> |
Re-license update_engine to Apache2 This patch automatically replaced the license on all text files from Chromium OS (BSD style) to AOSP (Apache2), keeping the original year as a reference. The license header was added to .gyp and .gypi files, the NOTICE was replaced with a copy of the Apache2 license and MODULE_LICENSE_* file was updated. BUG=b/23084294 TEST=grep 'Chromium OS Authors' doesn't find anything. Change-Id: Ie5083750755f5180a8a785b24fe67dbf9195cd10
/system/update_engine/update_manager/update_manager.h
|
02f7c1dee242f490143791dbb73fa23fa3007cfa |
|
19-Oct-2014 |
Ben Chan <benchan@chromium.org> |
update_engine: Replace scoped_ptr with std::unique_ptr. BUG=None TEST=`FEATURES=test emerge-$BOARD update_engine` TEST=`USE='clang asan' FEATURES=test emerge-$BOARD update_engine` Change-Id: I55a2f7f53675faaac20ba25f72ed52cf938d7744 Reviewed-on: https://chromium-review.googlesource.com/224189 Tested-by: Ben Chan <benchan@chromium.org> Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Ben Chan <benchan@chromium.org>
/system/update_engine/update_manager/update_manager.h
|
88b591f24cb3f94f982d7024c2e8ed25c2cc26a2 |
|
29-Aug-2014 |
Alex Vakulenko <avakulenko@chromium.org> |
update_engine: Replace NULL with nullptr Replaced the usage of NULL with nullptr. This also makes it possible to use standard gtest macros to compare pointers in Update Manager's unit tests. So, there is no need in custom UMTEST_... macros which are replaced with the gtest macros (see change in update_engine/update_manager/umtest_utils.h): UMTEST_ASSERT_NULL(p) => ASSERT_EQ(nullptr, p) UMTEST_ASSERT_NOT_NULL(p) => ASSERT_NE(nullptr, p) UMTEST_EXPECT_NULL(p) => EXPECT_EQ(nullptr, p) UMTEST_EXPECT_NOT_NULL(p) => EXPECT_NE(nullptr, p) BUG=None TEST=FEATURES=test emerge-link update_engine USE="clang asan" FEATURES=test emerge-link update_engine Change-Id: I77a42a1e9ce992bb2f9f263db5cf75fe6110a4ec Reviewed-on: https://chromium-review.googlesource.com/215136 Tested-by: Alex Vakulenko <avakulenko@chromium.org> Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
/system/update_engine/update_manager/update_manager.h
|
83ffddaa3b09ceb4361e5c01ba300d57ab697a7e |
|
08-Aug-2014 |
Gilad Arnold <garnold@chromium.org> |
update_engine: UM: UpdateManager removes EvaluationContext objects. This fixes a situation where the destruction of an UpdateManager object may leave a bunch of dangling main loop events due to delayed evaluation, whose presence prevents the destruction of their corresponding EvaluationContext objects. We solve this by registering each EvaluationContext that's created for an async evaluation with the UpdateManager, and storing a (weak) reverse callback in each EvaluationContext for unregistering itself upon destruction. The UpdateManager itself cares to unregister (i.e. remove any pending events) for any outstanding EvaluationContexts that are still present during its destruction. This also ensures that these objects are properly destructed right after the destruction of the UpdateManager. This CL also fixes a bug whereas removal of pending events might have left a "live" callback handle inside the EvaluationContext, thus creating a reference-count cycle and preventing the object from being deallocated. BUG=None TEST=Unit tests. Change-Id: I5b7f4b740241ed3a5f1831ae41fead0fc1481071 Reviewed-on: https://chromium-review.googlesource.com/211720 Tested-by: Gilad Arnold <garnold@chromium.org> Reviewed-by: Alex Vakulenko <avakulenko@chromium.org> Commit-Queue: Gilad Arnold <garnold@chromium.org>
/system/update_engine/update_manager/update_manager.h
|
fd45a731d9f9176ce134b34e2a84acc0cf403d1d |
|
08-Aug-2014 |
Gilad Arnold <garnold@chromium.org> |
update_engine: UM: Async request expiration handled differently. As discussed on the tracker issue, we're changing the way an async policy request expiration timeout is being handled: instead of failing the policy request entirely, this now only causes the UpdateManager to dump the evaluation context, reset the expiration deadline and reevaluate the policy (which is necessary in order for evaluation time and corresponding timeouts to be recomputed). This is aimed to ensure that policies are allowed to block for arbitrarily long periods, while still emitting useful information to the log (which will help diagnose if this is due to an implementation error). Since the expiration timeout no longer returns control to the caller, we remove it from the AsyncPolicyRequest() API. Instead, we use a single timeout value, which is set during the UpdateManager construction and used for all policy calls. By default, the update engine sets it to 12 hours; for testing and debugging purposes, a smaller value is used. This CL also forbids the default (fallback) policy from blocking, forcing a failure instead; a situation like that makes no sense anyway, and may lead to inconsistent return values leaking to the caller. BUG=chromium:401687 TEST=Unit tests. Change-Id: I0bf60875bb7f524c99ed72dac61720633ab2061b Reviewed-on: https://chromium-review.googlesource.com/211647 Tested-by: Gilad Arnold <garnold@chromium.org> Reviewed-by: Alex Vakulenko <avakulenko@chromium.org> Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Gilad Arnold <garnold@chromium.org>
/system/update_engine/update_manager/update_manager.h
|
f9f85d6680164064648ce3ed1d31589e1f1b7a29 |
|
20-Jun-2014 |
Gilad Arnold <garnold@chromium.org> |
UM: Add an expiration timeout for async policy requests. This enforces a timeout on AsyncPolicyRequest() calls. The timeout applies to the overall period an async policy takes to be evaluated. If a timeout fires, the update manager defers straight to evaluating the default policy. The actual expiration handling is done by the EvaluationContext, incorporating it as part of its deferred reevaluation logic. This allows us to not add (and manage) a separate main loop event for the expiration timeout. Unit tests were added to ensure that normal/timeout events are scheduled and removed correctly, and that evaluation context expiration is enforced. BUG=chromium:384094 TEST=Unit tests. Change-Id: Ia40e0ac3d8ab68eed043013cc930d699f3c3db93 Reviewed-on: https://chromium-review.googlesource.com/205895 Tested-by: Gilad Arnold <garnold@chromium.org> Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Gilad Arnold <garnold@chromium.org>
/system/update_engine/update_manager/update_manager.h
|
48415f1f6c6c356bfa9ac85b76d8ebcf053f7157 |
|
27-Jun-2014 |
Gilad Arnold <garnold@chromium.org> |
UpdateManager: Adjustments for cpplint. - Rename header file guards. - Added missing #includes. Note that the linter still barks about C++11-style curly-braced member initialization; there are abundant uses of this and we should probably upstream a change to accommodate that. BUG=None TEST=Builds. Change-Id: Icccc88e6e56e56f644536147cd88ae92462a1495 Reviewed-on: https://chromium-review.googlesource.com/205894 Tested-by: Gilad Arnold <garnold@chromium.org> Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Gilad Arnold <garnold@chromium.org>
/system/update_engine/update_manager/update_manager.h
|
b227199133f2d694414293697c67599a761f23be |
|
19-Jun-2014 |
Gilad Arnold <garnold@chromium.org> |
UM: Make the evaluation timeout configurable. This allows the client to construct the UpdateManager with a custom evaluation timeout for sync policy requests, which is in turn being passed to each EvaluationContext instance used for sync policy evaluation. BUG=chromium:363790 TEST=Unit tests. Change-Id: I5a6ec02a3ca2a2c611276eacbcda6aac8304e929 Reviewed-on: https://chromium-review.googlesource.com/204687 Reviewed-by: Gilad Arnold <garnold@chromium.org> Commit-Queue: Gilad Arnold <garnold@chromium.org> Tested-by: Gilad Arnold <garnold@chromium.org>
/system/update_engine/update_manager/update_manager.h
|
897b5e592cf64e3c04ed1151d19ce5cd51a90592 |
|
21-May-2014 |
Gilad Arnold <garnold@chromium.org> |
PM: Blocking policy requests cannot be called synchronously. Policy requests that may return EvalStatus::kAskMeAgainLater are considered blocking and should only be called asynchronously. It is therefore an error to call a policy returning this value via UpdateManager::PolicyRequest(), and so we kill the program with an assertion (DCHECK) if this happens; for release builds, a warning log is emitted. Note: the associated death test builds and runs iff DCHECK is enabled. BUG=None TEST=Unit tests. Change-Id: I75e2f5e4498f85857aff41778df0300d7c8898e7 Reviewed-on: https://chromium-review.googlesource.com/200760 Reviewed-by: Gilad Arnold <garnold@chromium.org> Commit-Queue: Gilad Arnold <garnold@chromium.org> Tested-by: Gilad Arnold <garnold@chromium.org>
/system/update_engine/update_manager/update_manager.h
|
63784a578dd26880454d70797519358a2326291b |
|
28-May-2014 |
Alex Deymo <deymo@chromium.org> |
Rename the PolicyManager to UpdateManager. This change renames the PolicyManager class, directory, tests, etc, to avoid confusion with libpolicy and its classes. BUG=chromium:373551 TEST=emerged on link. CQ-DEPEND=CL:I43081673c7ba409f02273197da7915537bde39c6 Change-Id: Iffa76caa3b95ecbbdba87ab01006d1d8ce35a27f Reviewed-on: https://chromium-review.googlesource.com/201876 Tested-by: Alex Deymo <deymo@chromium.org> Reviewed-by: David Zeuthen <zeuthen@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org>
/system/update_engine/update_manager/update_manager.h
|