33e91e78bfe98c063b0c3b6d590976e275685686 |
|
01-Dec-2015 |
Alex Deymo <deymo@google.com> |
Fix certificate checker callback lifetime. OpenSSL's SSL_CTX_set_verify() function allows us to set a callback called after certificate validation but doesn't provide a way to pass private data to this callback. CL:183832 was passing the pointer to the CertificateChecker instance using a global pointer, nevertheless the lifetime of this pointer was wrong since libcurl can trigger this callback asynchronously when the SSL certificates are downloaded. This patch converts the CertificateChecker into a singleton class and uses the same trick previously used to pass the ServerToCheck value using different callbacks. Bug: 25818567 Test: Run an update on edison-userdebug; FEATURES=test emerge-link update_engine Change-Id: I84cdb2f8c5ac86d1463634e73e867f213f7a2f5a
/system/update_engine/metrics.cc
|
c1c17b4ed6a3896b6343e737fd89682fa0c8436b |
|
23-Nov-2015 |
Alex Deymo <deymo@google.com> |
Report Enum metrics from CertificateChecker. The certificate checker was reporting a "user action" whenever an update check HTTPS connection or HTTPS payload download had an invalid HTTPS certificate or a valid one that was changed since the last connection to the same server. This patch sends an Enum metric for every HTTPS connection to check for and update or download the payload with one of the three options: an invalid certificate, a valid one already seen or a valid but different certificate. This patch also moves these metrics to the metrics.{h,cc} module, where all the other metrics are reported, using an observer pattern in the CertificateChecker, needed to remove the dependency on the metrics library from the libpayload_consumer. Bug: 25818567 TEST=FEATURES=test emerge-link update_engine; mma; Change-Id: Ia1b6eb799e13b439b520ba14549d8973e18bcbfa
/system/update_engine/metrics.cc
|
a2591795edb1a4f4c751347daab16c70daad1274 |
|
17-Nov-2015 |
Alex Deymo <deymo@google.com> |
Move metrics time helpers to metrics_utils. The metrics module reports metrics periodically, for which it needs to keep track of the duration since some events (for example, the update finished). These helpers were in the common/utils.h, but they rely on the global SystemState to access both Prefs and Clock. Since these helpers are specific to the metric reporting, this CL moves them to the metrics_utils.h module. Bug: 25197634 TEST=FEATURES=test emerge-link update_engine; mmma system/update_engine Change-Id: Ia48091adbdc56c339c69c86c91c5c01aa58c54fb
/system/update_engine/metrics.cc
|
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/metrics.cc
|
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/metrics.cc
|
44cab30e0ee04b277e8463785ab069e9885a9f2d |
|
23-Jul-2014 |
Alex Vakulenko <avakulenko@chromium.org> |
update_engine: Sort headers alphabetically (build/include_alpha) We are going to enable build/include_alpha linter warning soon, so in preparation for this, fixed the warnings in update_engine. BUG=None TEST=cpplint.py --filter=-build/include_order,+build/include_alpha update_engine/* CQ-DEPEND=CL:209472 Change-Id: I261ea04681599a68ec7cb899f2f881cbe228ff7b Reviewed-on: https://chromium-review.googlesource.com/209631 Reviewed-by: Alex Deymo <deymo@chromium.org> Tested-by: Alex Vakulenko <avakulenko@chromium.org> Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
/system/update_engine/metrics.cc
|
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/metrics.cc
|
d1c4d2dd3daed1d507038046c0355fbafb85260c |
|
05-Jun-2014 |
Gilad Arnold <garnold@chromium.org> |
Change ErrorCode into an enum class. This change is needed in order for us to be able to import ErrorCode symbols from chromeos_update_engine into chromeos_update_manager. Unfortunately, shifting from plain 'enum' into an 'enum class' means that the compiler treats the new class as a distinct type from int, which in turn means that plenty of seamless arithmetic/bitwise operations we used for manipulating error code values throughout the code needed to be retrofitted with static_cast operators. In the future, we should consider imposing a proper abstraction on update engine error codes that'll prevent mingling with value encoding directly and prevent such nastiness. It'll also make things more coherent (types, semantics) and safer. BUG=chromium:358329 TEST=Unit tests. Change-Id: Ie55fa566b764cdab6c4785d995fb6daee4cb32d3 Reviewed-on: https://chromium-review.googlesource.com/203209 Tested-by: Gilad Arnold <garnold@chromium.org> Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Gilad Arnold <garnold@chromium.org>
/system/update_engine/metrics.cc
|
4e1d1495c034c8a81c989622481b6cdf94a50c3c |
|
25-Apr-2014 |
David Zeuthen <zeuthen@chromium.org> |
metrics: Emit kAbnormalTermination if last update attempt failed. This allows us to track how many update attempts terminates abnormally, for example if the device is rebooted in the middle of an update or if update_engine crashes. We use a marker state variable (aka a "prefs" file) to keep track of this. Note that we don't currently report any of the other metrics in the UpdateEngine.Attempt.* namespace. If necessary, this can be changed in the future - I left a TODO item in the code with more details. BUG=chromium:357676 TEST=New unit tests + Unit tests pass + Manual tests. Change-Id: I83fe284c7c46917c0c55b92314c58098e2fd1789 Reviewed-on: https://chromium-review.googlesource.com/197175 Reviewed-by: Alex Deymo <deymo@chromium.org> Tested-by: David Zeuthen <zeuthen@chromium.org> Commit-Queue: David Zeuthen <zeuthen@chromium.org>
/system/update_engine/metrics.cc
|
e485ff904198f53d16ab7703796cb9a58292fa3c |
|
21-Apr-2014 |
David Zeuthen <zeuthen@chromium.org> |
metrics: Remove unused metrics. BUG=chromium:365385 TEST=Unit tests pass. Change-Id: I31a29e3e9a76567f9b365bfac82b6415ec776842 Reviewed-on: https://chromium-review.googlesource.com/195840 Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: David Zeuthen <zeuthen@chromium.org> Tested-by: David Zeuthen <zeuthen@chromium.org>
/system/update_engine/metrics.cc
|
96197df73f6c804d96eb3a1390eb817f354089d2 |
|
16-Apr-2014 |
David Zeuthen <zeuthen@chromium.org> |
metrics: Add UpdateEngine.Rollback.Result metric. Add a metric to track if rollback succeeds or fails. The main use case for this metric is to record how often rollback actually happens. Right now we only track success/failure but if we see a lot of failures in the future, we could add a new metric, for example UpdateEngine.Rollback.FailureErrorCode to convey more detail. BUG=None TEST=New unit test + unit tests pass. Change-Id: I5c32d8585dc8e4b6d38c540d2f754ede5b2ad50b Reviewed-on: https://chromium-review.googlesource.com/195203 Reviewed-by: David Zeuthen <zeuthen@chromium.org> Commit-Queue: David Zeuthen <zeuthen@chromium.org> Tested-by: David Zeuthen <zeuthen@chromium.org>
/system/update_engine/metrics.cc
|
c0dd0210d01406df4b88086ea1349a75b8fe0584 |
|
04-Apr-2014 |
David Zeuthen <zeuthen@chromium.org> |
metrics: Use sparse histogram for metrics::DownloadErrorCode values This was pointed out by asvitkine@ when reviewing the histograms.xml change. Thanks! BUG=chromium:355745 TEST=Unit tests pass. Change-Id: I3bb49210d0e9bc443546d05f3597590ec7814841 Reviewed-on: https://chromium-review.googlesource.com/193274 Reviewed-by: David Zeuthen <zeuthen@chromium.org> Commit-Queue: David Zeuthen <zeuthen@chromium.org> Tested-by: David Zeuthen <zeuthen@chromium.org>
/system/update_engine/metrics.cc
|
b281f0768f4d95afcf7378229a1a9f9ec9bd69ab |
|
02-Apr-2014 |
David Zeuthen <zeuthen@chromium.org> |
Add UpdateEngine.Attempt.ConnectionType metric. This adds a new metric so we can track the how the device is connected to the Internet when an attempt starts. BUG=chromium:358339 TEST=New unit test + unit tests pass. Change-Id: Ic5c2f50e2396e6baa288aca70906f7112ef7bca9 Reviewed-on: https://chromium-review.googlesource.com/192864 Reviewed-by: Chris Sosa <sosa@chromium.org> Reviewed-by: Alex Deymo <deymo@chromium.org> Tested-by: David Zeuthen <zeuthen@chromium.org> Commit-Queue: David Zeuthen <zeuthen@chromium.org>
/system/update_engine/metrics.cc
|
33bae491eded4ef4f1eb4f4ef0f01ef0e5463f3a |
|
26-Feb-2014 |
David Zeuthen <zeuthen@chromium.org> |
Add new metrics. The current metrics (Installer.* namespace) have several shortcomings, for example it's not immediately clear when and how frequent each metric is reported. This CL introduces new metrics that addresses this and other problems. The new metrics are all in the UpdateEngine.* namespace and fall into five categories UpdateEngine.Daily.* Reported daily. UpdateEngine.Check.* On every check. UpdateEngine.Attempt.* On every attempt. UpdateEngine.SuccessfulUpdate.* With every successful update. UpdateEngine.* Miscellaneous Most of the new metrics mimic existing metrics and also leverage the existing code, book-keeping and unit tests. The plan is to remove the Installer.* metrics once we're happy with the new ones. I've also tested this manually by performing updates and verifying that chrome://histograms looks correct. BUG=chromium:355745 TEST=New unit tests + unit tests pass + manual testing. Change-Id: I7a3f68d75910384b116c7e4664776e25d3997584 Reviewed-on: https://chromium-review.googlesource.com/191314 Reviewed-by: David Zeuthen <zeuthen@chromium.org> Tested-by: David Zeuthen <zeuthen@chromium.org> Commit-Queue: David Zeuthen <zeuthen@chromium.org>
/system/update_engine/metrics.cc
|