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>
diff --git a/metrics/metrics.gyp b/metrics/metrics.gyp
index 3df31ff..044ff66 100644
--- a/metrics/metrics.gyp
+++ b/metrics/metrics.gyp
@@ -12,6 +12,7 @@
'gthread-2.0',
'libchrome-<(libbase_ver)',
'libchromeos-<(libbase_ver)',
+ 'libcurl',
]
},
'cflags_cc': [
@@ -24,6 +25,8 @@
'type': 'static_library',
'dependencies': [
'../metrics/libmetrics-<(libbase_ver).gyp:libmetrics-<(libbase_ver)',
+ 'libupload_service',
+ 'metrics_proto',
],
'link_settings': {
'libraries': [
@@ -35,7 +38,8 @@
'persistent_integer.cc',
'metrics_daemon.cc',
'metrics_daemon_main.cc',
- ]
+ ],
+ 'include_dirs': ['.'],
},
{
'target_name': 'metrics_client',
@@ -47,6 +51,67 @@
'metrics_client.cc',
]
},
+ {
+ 'target_name': 'libupload_service',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'metrics_proto'
+ ],
+ 'link_settings': {
+ 'libraries': [
+ '-lgflags',
+ '-lvboot_host',
+ ],
+ },
+ 'variables': {
+ 'exported_deps': [
+ 'protobuf-lite',
+ ],
+ 'deps': [
+ '<@(exported_deps)',
+ ],
+ },
+ 'all_dependent_settings': {
+ 'variables': {
+ 'deps+': [
+ '<@(exported_deps)',
+ ],
+ },
+ },
+ 'sources': [
+ 'uploader/upload_service.cc',
+ 'uploader/metrics_log.cc',
+ 'uploader/system_profile_cache.cc',
+ 'uploader/curl_sender.cc',
+ 'components/metrics/chromeos/metric_sample.cc',
+ 'components/metrics/chromeos/serialization_utils.cc',
+ 'components/metrics/metrics_log_base.cc',
+ 'components/metrics/metrics_log_manager.cc',
+ 'components/metrics/metrics_hashes.cc',
+ ],
+ 'include_dirs': ['.']
+ },
+ {
+ 'target_name': 'metrics_proto',
+ 'type': 'static_library',
+ 'variables': {
+ 'proto_in_dir': 'components/metrics/proto/',
+ 'proto_out_dir': 'include/components/metrics/proto',
+ },
+ 'sources': [
+ '<(proto_in_dir)/chrome_user_metrics_extension.proto',
+ '<(proto_in_dir)/histogram_event.proto',
+ '<(proto_in_dir)/omnibox_event.proto',
+ '<(proto_in_dir)/perf_data.proto',
+ '<(proto_in_dir)/profiler_event.proto',
+ '<(proto_in_dir)/sampled_profile.proto',
+ '<(proto_in_dir)/system_profile.proto',
+ '<(proto_in_dir)/user_action_event.proto',
+ ],
+ 'includes': [
+ '../../platform2/common-mk/protoc.gypi'
+ ],
+ },
],
'conditions': [
['USE_passive_metrics == 1', {
@@ -94,6 +159,22 @@
'timer_test.cc',
]
},
+ {
+ 'target_name': 'upload_service_test',
+ 'type': 'executable',
+ 'sources': [
+ 'persistent_integer.cc',
+ 'uploader/mock/sender_mock.cc',
+ 'uploader/upload_service_test.cc',
+ ],
+ 'dependencies': [
+ 'libupload_service',
+ ],
+ 'includes':[
+ '../../platform2/common-mk/common_test.gypi',
+ ],
+ 'include_dirs': ['.']
+ },
],
}],
['USE_passive_metrics == 1 and USE_test == 1', {
@@ -107,9 +188,10 @@
'includes': ['../../platform2/common-mk/common_test.gypi'],
'sources': [
'metrics_daemon_test.cc',
- ]
+ ],
+ 'include_dirs': ['.'],
},
],
}],
- ],
+ ]
}