Commit graph

26 commits

Author SHA1 Message Date
Alex Vakulenko
ba08992d1e libchromeos: Switch http Response to use streams
Make the response data of an HTTP request to use stream interface.

BUG=None
TEST=`FEATURES=test emerge-link libchromeos`

Change-Id: I4d0e427e90f154a83ffd75973b4c211a989c1993
Reviewed-on: https://chromium-review.googlesource.com/265068
Trybot-Ready: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Christopher Wiley <wiley@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
2015-04-13 21:31:55 +00:00
Bertrand SIMONNET
e4fa61e05e metrics: don't upload metrics when metrics are disabled
The uploader should only send metrics samples when the metrics are
enabled.
The uploader daemon is still started when the metrics are disabled so
that:
* When we enable the metrics, we don't require a restart of
  metrics_daemon to start uploading metrics.
* The metrics file is truncated periodically and avoid taking too much
  space on long running system with metrics disabled.

BUG=chromium:459636
TEST=unittests
TEST=`test_that -b gizmo gizmo platform_MetricsUploader` works
TEST=manual: uploader does not upload metrics if metrics are disabled.

CQ-DEPEND=CL:250980

Change-Id: I9f5da3457066a183c5791b5488e985b7ab13b6e1
Reviewed-on: https://chromium-review.googlesource.com/250822
Trybot-Ready: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
Reviewed-by: Nathan Bullock <nathanbullock@google.com>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
2015-02-20 00:07:08 +00:00
Alex Vakulenko
7e238f3bcb platform2: Switch over to using base64 functions from libchromeos
Replaced existing implementations of Base64Encode/Base64Decode
with the functions from libchromeos, which were added as part
of an earlier change (see CL:247690).

BUG=None
TEST=`FEATURES=test emerge-link cryptohome debugd metrics privetd update_engine`

Change-Id: I8cec677ce2c2fd3b97ca2228d35c2cf5cd133f4c
Reviewed-on: https://chromium-review.googlesource.com/247792
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
2015-02-11 06:00:08 +00:00
Steve Fung
ae4bdc4c92 metrics: Fix upload_service to work with base::MessageLoop
With an earlier change, metrics_daemon was switched from the glib message loop
to base::MessageLoop.  UploadService still is trying to interact with the
glib message loop, it needs to be switched to using base::MessageLoop.

BUG=chromium:452228
TEST=`FEATURES=test emerge-panther metrics`

Change-Id: I38eb52ca1995d75cfb7d0e69a434e649493e7c6f
Reviewed-on: https://chromium-review.googlesource.com/243429
Reviewed-by: Nathan Bullock <nathanbullock@google.com>
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Stephen Fung <stevefung@chromium.org>
Commit-Queue: Stephen Fung <stevefung@chromium.org>
Trybot-Ready: Stephen Fung <stevefung@chromium.org>
2015-01-28 01:56:01 +00:00
Bertrand SIMONNET
a8bcc18bea metrics: generate app_version from standard lsb-release fields
app_version used to be set to CHROMEOS_RELEASE_DESCRIPTION which has no
structure and should never be used for parsing.

Now that various version numbers have been added to lsb-release, use those
fields to generate the version string.

The version string format is "A.B.C.D (Official Build) $CHANNEL $BOARD" with:
* A = chrome milestone
* B = build number
* C = branch number
* D = patch number
* CHANNEL is one of STABLE, DEV, BETA, CANARY
* BOARD is the board name

BUG=chromium:426889
TEST=trybot run on gizmo-paladin
TEST=`test_that -b gizmo gizmo platform_MetricsUploader`
TEST=`FEATURES=test emerge-gizmo metrics`

Change-Id: I624df14bd859e0c0279dd3de621e651150d30add
Reviewed-on: https://chromium-review.googlesource.com/236949
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
Trybot-Ready: Bertrand Simonnet <bsimonnet@chromium.org>
2015-01-22 01:18:06 +00:00
Alex Vakulenko
3d41d4561d libchromeos: Cleaned up HTTP utilities
Renamed http utilities by appending ...AndBlock() to make it
obvious that they are blocking (synchronous) calls. Async I/O
is coming in subsequent CLs.

Replaced a bunch of "const char*" with "const std::string&" in
function prototypes.

Also removed extra overloads for http_utils functions in preparation
for adding asynchronous API which would bloat the overloads even more.
The original overloads were to provide the ability to omit some
less-commonly-used parameters, but that would eventually make the API
harder to choose from since the number of overloads will get out of hand.

Swept the code to remove unnecessary calls to std::string::c_str() and
added omitted parameters in calls to http_utils functions.

BUG=None
TEST=FEATURES=test emerge-link libchromeos peerd privetd feedback metrics buffet
CQ-DEPEND=CL:*191319

Change-Id: I9c1721cd2179ba3b389dd94ef181370eec98ed2e
Reviewed-on: https://chromium-review.googlesource.com/239251
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Reviewed-by: Christopher Wiley <wiley@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
2015-01-14 03:11:25 +00:00
Alex Vakulenko
73b40b468b Update libchrome to r307740 and fix build errors
Updated libchrome, libchrome_crypto, metrics, feedback to the
latest revisions from Chrome (r307740).

Fixed build breaks due to the changes in upstream code:

- scope_ptr no longer needs explicit PassAs<T>() calls.
- scope_ptr<T> no longer has implicit conversion to T*.
  Must use scope_ptr<T>::get() instead.
- base/file_util.h moved to base/files/file_util.h
- ARRAYSIZE_UNSAFE() removed in favor of arraysize()
- base::AppendToFile() and base::WriteFileDescriptor() now
  return bool instead of the number of bytes written.
- dbus::Bus::AddFilterFunction() now returns void.
- C++11 features are enabled in libchromeos, so all targets
  linking with it now have to support C++11
- OVERRIDE macro is removed in favor of native C++11
  'override' keyword.

BUG=chromium:416628, chromium:411508
TEST=Build the world on x86, x64, ARM. The following builders
     were tried:
       x86-generic-full amd64-generic-full arm-generic-full
       amd64-generic-asan daisy-full nyan-full pre-cq-group
       daisy-release-group sandybridge-release-group
       pineview-release-group
CQ-DEPEND=CL:234450,CL:234980

Change-Id: I374bebe2211d533c4431c82efb8be1cdcb1f405d
Reviewed-on: https://chromium-review.googlesource.com/234440
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
2014-12-15 07:18:09 +00:00
Alex Vakulenko
788d3b6365 metrics: fork metrics sources from Chromium source base
In preparation to libchrome uprev, fork off non-protobuf code
from Chromium's metrics component into platform2/metrics.

The current version of Chromium's metrics component has been
significantly refactored and pieces of functionality that
Chromium OS was dependant on (e.g. MetricsLogBase class) has
been removed completely.

So, taking the r293518 version we have been using for a while
and putting it as part of platform2/metrics now.

BUG=None
TEST=FEATURES=test emerge-link metrics

Change-Id: Ib46ac1dff2e2b9cc881e4787b3c6b6250f0bf9c4
Reviewed-on: https://chromium-review.googlesource.com/234635
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
Trybot-Ready: Alex Vakulenko <avakulenko@chromium.org>
2014-12-12 21:38:08 +00:00
Nathan Bullock
d78f3df6bc libchromeos: void OsReleaseReader.Load()
Previously OsReleaseReader returned a bool, which meant that code that
called load wanted to CHECK the return values and possibly log warning
messages, etc. This was unecessary since OsReleaseReader.Load never
returns false.

TEST=unittests
BUG=none

Change-Id: I7064c6a788897b5d5c687d6c9c5f4e03d4ca21a7
Reviewed-on: https://chromium-review.googlesource.com/223990
Reviewed-by: Bertrand Simonnet <bsimonnet@google.com>
Commit-Queue: Nathan Bullock <nathanbullock@google.com>
Tested-by: Nathan Bullock <nathanbullock@google.com>
2014-10-18 01:39:05 +00:00
Bertrand SIMONNET
cac74e122f metrics: use TimeDelta for upload_interval
Use TimeDelta instead of int interpreted as seconds.

BUG=None
TEST=Unittests.

Change-Id: I18db8d558303291ab86b26c68c89203e0364b623
Reviewed-on: https://chromium-review.googlesource.com/222611
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
2014-10-15 00:10:07 +00:00
Bertrand SIMONNET
71a62efc54 metrics: add support for other product id
metrics_uploader should use the GOOGLE_METRICS_PRODUCT_ID field from os-release
whenever possible instead of the default Chrome product id.

BUG=chromium:415744
TEST=FEATURES=test emerge-gizmo metrics succeeds.
TEST=test_that platform_MetricsUploader succeeds.

CQ-DEPEND=CL:221963

Change-Id: I69b1a6ca766048ad80d93008a2fe3b18879bf1da
Reviewed-on: https://chromium-review.googlesource.com/221953
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
2014-10-10 06:54:05 +00:00
Steve Fung
67906c6bbb metrics: remove gflags dependency
We are switching to using chromeos/flag_helper.h instead to standardize the
code everywhere.

BUG=chromium:375017
TEST=`FEATURES=test emerge-panther metrics`
TEST=`cbuildbot --remote --hwtest -p 'chromiumos/platform2'
      falco-paladin` passes

Change-Id: Icd08f65fd639e82ac6fe1581c763d60a189db827
Reviewed-on: https://chromium-review.googlesource.com/221757
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Commit-Queue: Steve Fung <stevefung@chromium.org>
Tested-by: Steve Fung <stevefung@chromium.org>
2014-10-07 05:53:18 +00:00
Nathan Bullock
e812249cab metrics: protobufs need to be uploaded as binary
TEST=manually tested on panther_embedded
BUG=none

Change-Id: Id07952d2b015c4199344556686218a78b8d79193
Reviewed-on: https://chromium-review.googlesource.com/221060
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Commit-Queue: Nathan Bullock <nathanbullock@google.com>
Tested-by: Nathan Bullock <nathanbullock@google.com>
2014-10-02 20:51:01 +00:00
Nathan Bullock
52d9edb590 metrics: 'Send' method crashes on NULL ErrorPtr
TEST=manually tested on panther_embedded
BUG=none

Change-Id: Iced380180918839d34a46e1cb2743a4cffdd5b4c
Reviewed-on: https://chromium-review.googlesource.com/220780
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Commit-Queue: Nathan Bullock <nathanbullock@google.com>
Tested-by: Nathan Bullock <nathanbullock@google.com>
2014-10-01 19:47:24 +00:00
Nathan Bullock
0be0f736d7 metrics: Add more log messages to uploader
TEST=compiled
BUG=none

Change-Id: Iee49b104d0b6214e035f70fa108ae7464bd7988f
Reviewed-on: https://chromium-review.googlesource.com/217338
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Nathan Bullock <nathanbullock@google.com>
Commit-Queue: Nathan Bullock <nathanbullock@google.com>
2014-09-19 02:59:32 +00:00
Bertrand SIMONNET
eb815be5a9 metrics: Fix metrics_uploader on VMs
metrics_uploader must be in testing mode so that it does not try to grab the
real hardware id (not available on VMs).

BUG=chromium:413256
TEST=FEATURES=test emerge-amd64-generic metrics.
TEST=platform_MetricsUploader succeeds on a gizmo VM.

Change-Id: I9e508c8661dfdb7933161b0d41ef4cf9bd7db2c6
Reviewed-on: https://chromium-review.googlesource.com/217760
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
2014-09-17 01:25:07 +00:00
Ben Chan
51bf92a3cb Update code to include base/files/file_util.h
file_util.h was moved from base to base/files
(https://codereview.chromium.org/468253002). This CL updates platform2
code to include base/files/file_util.h instead of base/file_util.h.

BUG=chromium:411001
TEST=Trybot run on paladin, release, and chromiumos-sdk builders.

Change-Id: I488925b54615e131e508a460dc1a27f88168f936
Reviewed-on: https://chromium-review.googlesource.com/216851
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Ben Chan <benchan@chromium.org>
2014-09-09 21:00:34 +00:00
Alex Vakulenko
ec991df012 metrics: Switch uploader to use http_utils from libchromeos
Removed explicit dependency on libcurl from metrics and using
chromeos::http::PostText() function instead.

BUG=chromium:411076
TEST=FEATURES=test emerge-link metrics

Change-Id: Ida883fa18d266e9bb87c3a4271e57d44c9308c79
Reviewed-on: https://chromium-review.googlesource.com/216526
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
2014-09-09 13:49:28 +00:00
Ben Chan
652d6971b1 metrics: Include base/macros.h instead of base/basictypes.h
metrics no longer uses the integer types from base/basictypes.h. It
should simply include base/macros.h for the DISALLOW_COPY_AND_ASSIGN
macro instead.

BUG=None
TEST=`FEATURES=test emerge-$BOARD metrics platform2`

Change-Id: Id325bcb6c9d3318b5b78e42a04da9c53d0a8c3ce
Reviewed-on: https://chromium-review.googlesource.com/216349
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Ben Chan <benchan@chromium.org>
2014-09-04 15:46:34 +00:00
Yunlian Jiang
e2c2d8947b metrics: fix memory leaks in unittest.
This fixes the memory leaks exposed in unittest.

BUG=chromium:408309
TEST=USE="clang asan" FEATURES="test" emerge-amd64-generic metrics
   passes.

Change-Id: I6f612499d7e67fa9171b95de4dbfac4e7f6698a0
Reviewed-on: https://chromium-review.googlesource.com/215887
Reviewed-by: Yunlian Jiang <yunlian@chromium.org>
Tested-by: Yunlian Jiang <yunlian@chromium.org>
Commit-Queue: Yunlian Jiang <yunlian@chromium.org>
2014-09-03 19:31:45 +00:00
Alex Vakulenko
14595032aa platform2: Replace NULL with nullptr in minor components
Replace NULL with nullptr in C++11-enabled components of platform2
that don't have too many occurrences of NULL. Other major
"offenders" will be handled separately.

BUG=None
TEST=FEATURES=test emerge-link app-shell-launcher buffet easy-unlock platform2 metrics wimax_manager

Change-Id: I61b25a057e3d6865908bc74f9f3d4cb55e08af26
Reviewed-on: https://chromium-review.googlesource.com/214837
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
2014-08-29 21:58:46 +00:00
Yunlian Jiang
b1640eee93 metrics: fix memory leaks in unittest.
This fixes the memory leaks exposed in unittest.

BUG=chromium:408309
TEST=The memory leak related to |sender_| is gone.

Change-Id: I92970d0560f6ccd1ccd7f5022ece8cc5eba4a674
Reviewed-on: https://chromium-review.googlesource.com/214578
Reviewed-by: Yunlian Jiang <yunlian@chromium.org>
Tested-by: Yunlian Jiang <yunlian@chromium.org>
Commit-Queue: Yunlian Jiang <yunlian@chromium.org>
2014-08-29 21:55:22 +00:00
Alex Vakulenko
e8a8e30b25 metrics: Replace 'OVERRIDE' with 'override' and fix linter
Replace OVERRIDE macro with native C++ 'override' keyword.
Also fixed the style issue of using both 'override' and 'virtual'
on member function overrides. Only one is required and cpplint
complains if both are specified now.

And since gobi-chromo-plugin is the only project that uses
libmetrics and is not C++11 yet, enabled C++11 features
in its makefile to allow for the 'override' keywords to
compile in the included metrics/metrics_library.h header.

BUG=None
TEST=USE="cellular buffet" ./build_packages

Change-Id: I28dace6dc4bcb07386632eaed890ce41564e8144
Reviewed-on: https://chromium-review.googlesource.com/212494
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
2014-08-16 05:26:56 +00:00
Ben Chan
f05ab40ab9 metrics: Use integer types from stdint.h
This CL replaces the deprecated int* and uint* types from
'base/basictypes.h' with the int*_t and uint*_t types from 'stdint.h'.

BUG=chromium:401356
TEST=`FEATURES=test emerge-$BOARD metrics`

Change-Id: Ie5a69edba2c8a9d5185bbc548ed70a5b121c3e3b
Reviewed-on: https://chromium-review.googlesource.com/211381
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Ben Chan <benchan@chromium.org>
2014-08-07 14:25:23 +00:00
Alex Vakulenko
4e59634509 metrics: fix remaining linter issues
Fixed various issues reported by cpplint.py when run on
src/platform2/metrics.

BUG=None
TEST=cpplint.py `find metrics/* | grep "\.cc\|\.h"`
     FEATURES=test emerge-link metrics

Change-Id: I589be238c97c38f985f24ffe26d2cdf259c96760
Reviewed-on: https://chromium-review.googlesource.com/210505
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
2014-08-01 04:19:03 +00:00
Bertrand SIMONNET
46b49da5ad Add an uploader to metrics_daemon
Metrics_daemon will now upload the metrics to Chrome's backend when Chrome is
not available.
This uses //components/metrics from chrome to use its protobuf definition and
the metrics common code.

This functionality is not yet enabled. It will be once the end-to-end test is
enabled.

BUG=chromium:358283, chromium:364579
TEST=FEATURES=test emerge-amd64-generic metrics

CQ-DEPEND=CL:205790
CQ-DEPEND=CL:206055

Change-Id: I87aaf7a2ac041581fa3ffd4ec61f73e933c00a52
Reviewed-on: https://chromium-review.googlesource.com/205810
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
2014-07-08 04:28:11 +00:00