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/evaluation_context.h
|
3f39d5cc753905874d8d93bef94f857b8808f19e |
|
13-Oct-2015 |
Alex Vakulenko <avakulenko@google.com> |
update_engine: Rename "chromeos" -> "brillo" in include paths and namespaces libchromeos is transitioning to libbrillo and chromeos namespaces and include directory is changing to brillo. Bug: 24872993 Change-Id: I770659a95be380a50fe3b2ba9f91d65818f40945
/system/update_engine/update_manager/evaluation_context.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/evaluation_context.h
|
509dd5376f47e38d18fe7d29da776e3dc9a9786d |
|
10-Jun-2015 |
Alex Deymo <deymo@chromium.org> |
update_engine: Convert update_manager to chromeos::MessageLoop. The update_manager/event_loop.* files were basically an abstraction of the glib main loop in order to make it easier to replace it later. This patch removes those files and replaces their functions with the chromeos::MessageLoop interface, backing it up with a FakeMessageLoop during test, and a real GlibMessageLoop during normal execution. This patch reduces the running time of the unittest considerably since there is no need to wait for the timeouts. BUG=chromium:419827,chromium:402066 TEST=Unittest still pass. Tested on a link device that the UM still runs. Change-Id: Id572248ff4c9c8be7226ef8c653a5c94ab9c1677 Reviewed-on: https://chromium-review.googlesource.com/276892 Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org> Tested-by: Alex Deymo <deymo@chromium.org>
/system/update_engine/update_manager/evaluation_context.h
|
610277efc6f7e5239158dfa4bb3b1021804326e0 |
|
12-Nov-2014 |
Alex Deymo <deymo@chromium.org> |
update_engine: Add override when possible. Google Style Guide requires to include the "override" keyword when overriding a method on a derived class, so the compiler will catch errors if the method is not overriding a member of the base class. This patch introduces the "override" keyword when possible. BUG=None TEST=FEATURES=test emerge-link update_engine Change-Id: Ie83d115c5730f3b35b3d95859a54bc1a48e0be7b Reviewed-on: https://chromium-review.googlesource.com/228928 Tested-by: Alex Deymo <deymo@chromium.org> Reviewed-by: Alex Vakulenko <avakulenko@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org>
/system/update_engine/update_manager/evaluation_context.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/evaluation_context.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/evaluation_context.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/evaluation_context.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/evaluation_context.h
|
a65fced5f4c2b551616b26ee90a800b44090735f |
|
23-Jul-2014 |
Gilad Arnold <garnold@chromium.org> |
update_engine: UM: Add check for monotonic time elapsed. This forks the former EvaluationStatus::IsTimeGreaterThan() into two separate variants, checking either the wallclock or monotonic current time against a corresponding timestamp. This is needed for policies that require resilience against wallclock time volatility. BUG=chromium:394778 TEST=Unit tests. Change-Id: I9ecd20cc87a3a520e119f157e55ae4f54104a506 Reviewed-on: https://chromium-review.googlesource.com/209487 Commit-Queue: Gilad Arnold <garnold@chromium.org> Tested-by: Gilad Arnold <garnold@chromium.org> Reviewed-by: Gilad Arnold <garnold@chromium.org>
/system/update_engine/update_manager/evaluation_context.h
|
072359ca138504065e1e0c1189eb38c09576d324 |
|
18-Jul-2014 |
Alex Vakulenko <avakulenko@chromium.org> |
update_engine: fixed remaining linter and some spelling errors Fixed remaining errors from cpplint as well as some spelling errors mostly in comments. BUG=None TEST=FEATURES=test emerge-link update_engine Change-Id: I484988ab846ac5a3c68c016ddccfb247f225ec27 Reviewed-on: https://chromium-review.googlesource.com/208897 Reviewed-by: Alex Vakulenko <avakulenko@chromium.org> Commit-Queue: Alex Vakulenko <avakulenko@chromium.org> Tested-by: Alex Vakulenko <avakulenko@chromium.org>
/system/update_engine/update_manager/evaluation_context.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/evaluation_context.h
|
fb794f4b7274576e10b0df291655ad6c88a97df4 |
|
02-Jul-2014 |
Gilad Arnold <garnold@chromium.org> |
UM: Fix async callback handling. A bug in EvaluationContext::OnValueChangedOrPollTimeout() causes scheduling of a reevaluation to fail. We fix it by copying the callback pointer to a local variable and clearing it prior to invoking the callback. This also adds a check in the evaluation context unit tests code to ensure that the EC under test is actually being destroyed; this is useful to ensure that unit tests are not leaking EC references, e.g. by form of pending main loop events that are holding EC handles in closures. BUG=chromium:391037 TEST=New unit test fails before fix, succeeds after it. Change-Id: I63486b80525ec19d0cd399c52eea39d991a4ff53 Reviewed-on: https://chromium-review.googlesource.com/206538 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/evaluation_context.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/evaluation_context.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/evaluation_context.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/evaluation_context.h
|