Loading metricsd/Android.mk +25 −17 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ metrics_cpp_extension := .cc libmetrics_sources := \ c_metrics_library.cc \ metrics_library.cc \ serialization/metric_sample.cc \ serialization/serialization_utils.cc \ timer.cc metrics_client_sources := \ Loading @@ -30,18 +28,18 @@ metrics_collector_common := \ collectors/cpu_usage_collector.cc \ collectors/disk_usage_collector.cc \ metrics_collector.cc \ persistent_integer.cc \ persistent_integer.cc metricsd_common := \ persistent_integer.cc \ serialization/metric_sample.cc \ serialization/serialization_utils.cc \ uploader/bn_metricsd_impl.cc \ uploader/crash_counters.cc \ uploader/metrics_hashes.cc \ uploader/metrics_log_base.cc \ uploader/metrics_log.cc \ uploader/sender_http.cc \ uploader/system_profile_cache.cc \ uploader/upload_service.cc \ uploader/upload_service.cc metrics_collector_tests_sources := \ collectors/averaged_statistics_collector_test.cc \ Loading @@ -49,14 +47,13 @@ metrics_collector_tests_sources := \ metrics_collector_test.cc \ metrics_library_test.cc \ persistent_integer_test.cc \ serialization/serialization_utils_unittest.cc \ timer_test.cc \ timer_test.cc metricsd_tests_sources := \ uploader/metrics_hashes_unittest.cc \ uploader/metrics_log_base_unittest.cc \ uploader/mock/sender_mock.cc \ uploader/upload_service_test.cc \ uploader/upload_service_test.cc metrics_CFLAGS := -Wall \ -Wno-char-subscripts \ Loading @@ -70,7 +67,7 @@ metrics_CPPFLAGS := -Wno-non-virtual-dtor \ -fvisibility=default metrics_includes := external/gtest/include \ $(LOCAL_PATH)/include libmetrics_shared_libraries := libchrome libbrillo libmetrics_shared_libraries := libchrome libbinder libbrillo libutils metrics_collector_shared_libraries := $(libmetrics_shared_libraries) \ libbrillo-dbus \ libbrillo-http \ Loading @@ -78,14 +75,24 @@ metrics_collector_shared_libraries := $(libmetrics_shared_libraries) \ libdbus \ libmetrics \ librootdev \ libweaved \ libweaved metricsd_shared_libraries := \ libbinder \ libbrillo \ libbrillo-http \ libchrome \ libprotobuf-cpp-lite \ libupdate_engine_client \ libutils # Static proxy library for the binder interface. # ======================================================== include $(CLEAR_VARS) LOCAL_MODULE := metricsd_binder_proxy LOCAL_SHARED_LIBRARIES := libbinder libutils LOCAL_SRC_FILES := aidl/android/brillo/metrics/IMetricsd.aidl include $(BUILD_STATIC_LIBRARY) # Shared library for metrics. # ======================================================== Loading @@ -100,6 +107,7 @@ LOCAL_RTTI_FLAG := -frtti LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include LOCAL_SHARED_LIBRARIES := $(libmetrics_shared_libraries) LOCAL_SRC_FILES := $(libmetrics_sources) LOCAL_STATIC_LIBRARIES := metricsd_binder_proxy include $(BUILD_SHARED_LIBRARY) # CLI client for metrics. Loading @@ -114,6 +122,7 @@ LOCAL_CPPFLAGS := $(metrics_CPPFLAGS) LOCAL_SHARED_LIBRARIES := $(libmetrics_shared_libraries) \ libmetrics LOCAL_SRC_FILES := $(metrics_client_sources) LOCAL_STATIC_LIBRARIES := metricsd_binder_proxy include $(BUILD_EXECUTABLE) # Protobuf library for metricsd. Loading Loading @@ -144,6 +153,7 @@ LOCAL_RTTI_FLAG := -frtti LOCAL_SHARED_LIBRARIES := $(metrics_collector_shared_libraries) LOCAL_SRC_FILES := $(metrics_collector_common) \ metrics_collector_main.cc LOCAL_STATIC_LIBRARIES := metricsd_binder_proxy include $(BUILD_EXECUTABLE) # metricsd daemon. Loading @@ -158,9 +168,8 @@ LOCAL_CPPFLAGS := $(metrics_CPPFLAGS) LOCAL_INIT_RC := metricsd.rc LOCAL_REQUIRED_MODULES := \ metrics_collector LOCAL_RTTI_FLAG := -frtti LOCAL_SHARED_LIBRARIES := $(metricsd_shared_libraries) LOCAL_STATIC_LIBRARIES := metricsd_protos LOCAL_STATIC_LIBRARIES := metricsd_protos metricsd_binder_proxy LOCAL_SRC_FILES := $(metricsd_common) \ metricsd_main.cc include $(BUILD_EXECUTABLE) Loading @@ -173,10 +182,9 @@ LOCAL_CFLAGS := $(metrics_CFLAGS) LOCAL_CLANG := true LOCAL_CPP_EXTENSION := $(metrics_cpp_extension) LOCAL_CPPFLAGS := $(metrics_CPPFLAGS) -Wno-sign-compare LOCAL_RTTI_FLAG := -frtti LOCAL_SHARED_LIBRARIES := $(metricsd_shared_libraries) libmetrics LOCAL_SHARED_LIBRARIES := $(metricsd_shared_libraries) LOCAL_SRC_FILES := $(metricsd_tests_sources) $(metricsd_common) LOCAL_STATIC_LIBRARIES := libBionicGtestMain libgmock metricsd_protos LOCAL_STATIC_LIBRARIES := libBionicGtestMain libgmock metricsd_protos metricsd_binder_proxy include $(BUILD_NATIVE_TEST) # Unit tests for metrics_collector. Loading @@ -191,7 +199,7 @@ LOCAL_RTTI_FLAG := -frtti LOCAL_SHARED_LIBRARIES := $(metrics_collector_shared_libraries) LOCAL_SRC_FILES := $(metrics_collector_tests_sources) \ $(metrics_collector_common) LOCAL_STATIC_LIBRARIES := libBionicGtestMain libgmock LOCAL_STATIC_LIBRARIES := libBionicGtestMain libgmock metricsd_binder_proxy include $(BUILD_NATIVE_TEST) # Weave schema files Loading metricsd/aidl/android/brillo/metrics/IMetricsd.aidl 0 → 100644 +25 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.brillo.metrics; interface IMetricsd { oneway void recordHistogram(String name, int sample, int min, int max, int nbuckets); oneway void recordLinearHistogram(String name, int sample, int max); oneway void recordSparseHistogram(String name, int sample); oneway void recordCrash(String type); } metricsd/constants.h +0 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ static const char kSharedMetricsDirectory[] = "/data/misc/metrics/"; static const char kMetricsdDirectory[] = "/data/misc/metricsd/"; static const char kMetricsCollectorDirectory[] = "/data/misc/metrics_collector/"; static const char kMetricsEventsFileName[] = "uma-events"; static const char kMetricsGUIDFileName[] = "Sysinfo.GUID"; static const char kMetricsServer[] = "https://clients4.google.com/uma/v2"; static const char kConsentFileName[] = "enabled"; Loading metricsd/include/metrics/metrics_library.h +15 −2 Original line number Diff line number Diff line Loading @@ -24,9 +24,17 @@ #include <base/compiler_specific.h> #include <base/files/file_path.h> #include <base/macros.h> #include <base/memory/scoped_ptr.h> #include <binder/IServiceManager.h> #include <gtest/gtest_prod.h> // for FRIEND_TEST namespace android { namespace brillo { namespace metrics { class IMetricsd; } // namespace metrics } // namespace brillo } // namespace android class MetricsLibraryInterface { public: virtual void Init() = 0; Loading Loading @@ -152,6 +160,10 @@ class MetricsLibrary : public MetricsLibraryInterface { char* buffer, int buffer_size, bool* result); // Connects to IMetricsd if the proxy does not exist or is not alive. // Don't block if we fail to get the proxy for any reason. bool CheckService(); // Time at which we last checked if metrics were enabled. time_t cached_enabled_time_; Loading @@ -161,7 +173,8 @@ class MetricsLibrary : public MetricsLibraryInterface { // True iff we should cache the enabled/disabled status. bool use_caching_; base::FilePath uma_events_file_; android::sp<android::IServiceManager> manager_; android::sp<android::brillo::metrics::IMetricsd> metricsd_proxy_; base::FilePath consent_file_; DISALLOW_COPY_AND_ASSIGN(MetricsLibrary); Loading metricsd/metrics_client.cc +1 −49 Original line number Diff line number Diff line Loading @@ -21,11 +21,8 @@ #include "constants.h" #include "metrics/metrics_library.h" #include "serialization/metric_sample.h" #include "serialization/serialization_utils.h" enum Mode { kModeDumpLogs, kModeSendSample, kModeSendEnumSample, kModeSendSparseSample, Loading @@ -48,7 +45,6 @@ void ShowUsage() { " |min| > 0, |min| <= sample < |max|\n" " -c: return exit status 0 if user consents to stats, 1 otherwise,\n" " in guest mode always return 1\n" " -d: dump cached logs to the console\n" " -e: send linear/enumeration histogram data\n" " -g: return exit status 0 if machine in guest mode, 1 otherwise\n" " -s: send a sparse histogram sample\n" Loading Loading @@ -139,59 +135,17 @@ static int IsGuestMode() { return metrics_lib.IsGuestMode() ? 0 : 1; } static int DumpLogs() { base::FilePath events_file = base::FilePath(metrics::kSharedMetricsDirectory) .Append(metrics::kMetricsEventsFileName); printf("Metrics from %s\n\n", events_file.value().data()); ScopedVector<metrics::MetricSample> metrics; metrics::SerializationUtils::ReadMetricsFromFile(events_file.value(), &metrics); for (ScopedVector<metrics::MetricSample>::const_iterator i = metrics.begin(); i != metrics.end(); ++i) { const metrics::MetricSample* sample = *i; printf("name: %s\t", sample->name().c_str()); printf("type: "); switch (sample->type()) { case metrics::MetricSample::CRASH: printf("CRASH"); break; case metrics::MetricSample::HISTOGRAM: printf("HISTOGRAM"); break; case metrics::MetricSample::LINEAR_HISTOGRAM: printf("LINEAR_HISTOGRAM"); break; case metrics::MetricSample::SPARSE_HISTOGRAM: printf("SPARSE_HISTOGRAM"); break; case metrics::MetricSample::USER_ACTION: printf("USER_ACTION"); break; } printf("\n"); } return 0; } int main(int argc, char** argv) { enum Mode mode = kModeSendSample; bool secs_to_msecs = false; // Parse arguments int flag; while ((flag = getopt(argc, argv, "abcdegstuv")) != -1) { while ((flag = getopt(argc, argv, "abcegstuv")) != -1) { switch (flag) { case 'c': mode = kModeHasConsent; break; case 'd': mode = kModeDumpLogs; break; case 'e': mode = kModeSendEnumSample; break; Loading Loading @@ -252,8 +206,6 @@ int main(int argc, char** argv) { return HasConsent(); case kModeIsGuestMode: return IsGuestMode(); case kModeDumpLogs: return DumpLogs(); default: ShowUsage(); return 0; Loading Loading
metricsd/Android.mk +25 −17 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ metrics_cpp_extension := .cc libmetrics_sources := \ c_metrics_library.cc \ metrics_library.cc \ serialization/metric_sample.cc \ serialization/serialization_utils.cc \ timer.cc metrics_client_sources := \ Loading @@ -30,18 +28,18 @@ metrics_collector_common := \ collectors/cpu_usage_collector.cc \ collectors/disk_usage_collector.cc \ metrics_collector.cc \ persistent_integer.cc \ persistent_integer.cc metricsd_common := \ persistent_integer.cc \ serialization/metric_sample.cc \ serialization/serialization_utils.cc \ uploader/bn_metricsd_impl.cc \ uploader/crash_counters.cc \ uploader/metrics_hashes.cc \ uploader/metrics_log_base.cc \ uploader/metrics_log.cc \ uploader/sender_http.cc \ uploader/system_profile_cache.cc \ uploader/upload_service.cc \ uploader/upload_service.cc metrics_collector_tests_sources := \ collectors/averaged_statistics_collector_test.cc \ Loading @@ -49,14 +47,13 @@ metrics_collector_tests_sources := \ metrics_collector_test.cc \ metrics_library_test.cc \ persistent_integer_test.cc \ serialization/serialization_utils_unittest.cc \ timer_test.cc \ timer_test.cc metricsd_tests_sources := \ uploader/metrics_hashes_unittest.cc \ uploader/metrics_log_base_unittest.cc \ uploader/mock/sender_mock.cc \ uploader/upload_service_test.cc \ uploader/upload_service_test.cc metrics_CFLAGS := -Wall \ -Wno-char-subscripts \ Loading @@ -70,7 +67,7 @@ metrics_CPPFLAGS := -Wno-non-virtual-dtor \ -fvisibility=default metrics_includes := external/gtest/include \ $(LOCAL_PATH)/include libmetrics_shared_libraries := libchrome libbrillo libmetrics_shared_libraries := libchrome libbinder libbrillo libutils metrics_collector_shared_libraries := $(libmetrics_shared_libraries) \ libbrillo-dbus \ libbrillo-http \ Loading @@ -78,14 +75,24 @@ metrics_collector_shared_libraries := $(libmetrics_shared_libraries) \ libdbus \ libmetrics \ librootdev \ libweaved \ libweaved metricsd_shared_libraries := \ libbinder \ libbrillo \ libbrillo-http \ libchrome \ libprotobuf-cpp-lite \ libupdate_engine_client \ libutils # Static proxy library for the binder interface. # ======================================================== include $(CLEAR_VARS) LOCAL_MODULE := metricsd_binder_proxy LOCAL_SHARED_LIBRARIES := libbinder libutils LOCAL_SRC_FILES := aidl/android/brillo/metrics/IMetricsd.aidl include $(BUILD_STATIC_LIBRARY) # Shared library for metrics. # ======================================================== Loading @@ -100,6 +107,7 @@ LOCAL_RTTI_FLAG := -frtti LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include LOCAL_SHARED_LIBRARIES := $(libmetrics_shared_libraries) LOCAL_SRC_FILES := $(libmetrics_sources) LOCAL_STATIC_LIBRARIES := metricsd_binder_proxy include $(BUILD_SHARED_LIBRARY) # CLI client for metrics. Loading @@ -114,6 +122,7 @@ LOCAL_CPPFLAGS := $(metrics_CPPFLAGS) LOCAL_SHARED_LIBRARIES := $(libmetrics_shared_libraries) \ libmetrics LOCAL_SRC_FILES := $(metrics_client_sources) LOCAL_STATIC_LIBRARIES := metricsd_binder_proxy include $(BUILD_EXECUTABLE) # Protobuf library for metricsd. Loading Loading @@ -144,6 +153,7 @@ LOCAL_RTTI_FLAG := -frtti LOCAL_SHARED_LIBRARIES := $(metrics_collector_shared_libraries) LOCAL_SRC_FILES := $(metrics_collector_common) \ metrics_collector_main.cc LOCAL_STATIC_LIBRARIES := metricsd_binder_proxy include $(BUILD_EXECUTABLE) # metricsd daemon. Loading @@ -158,9 +168,8 @@ LOCAL_CPPFLAGS := $(metrics_CPPFLAGS) LOCAL_INIT_RC := metricsd.rc LOCAL_REQUIRED_MODULES := \ metrics_collector LOCAL_RTTI_FLAG := -frtti LOCAL_SHARED_LIBRARIES := $(metricsd_shared_libraries) LOCAL_STATIC_LIBRARIES := metricsd_protos LOCAL_STATIC_LIBRARIES := metricsd_protos metricsd_binder_proxy LOCAL_SRC_FILES := $(metricsd_common) \ metricsd_main.cc include $(BUILD_EXECUTABLE) Loading @@ -173,10 +182,9 @@ LOCAL_CFLAGS := $(metrics_CFLAGS) LOCAL_CLANG := true LOCAL_CPP_EXTENSION := $(metrics_cpp_extension) LOCAL_CPPFLAGS := $(metrics_CPPFLAGS) -Wno-sign-compare LOCAL_RTTI_FLAG := -frtti LOCAL_SHARED_LIBRARIES := $(metricsd_shared_libraries) libmetrics LOCAL_SHARED_LIBRARIES := $(metricsd_shared_libraries) LOCAL_SRC_FILES := $(metricsd_tests_sources) $(metricsd_common) LOCAL_STATIC_LIBRARIES := libBionicGtestMain libgmock metricsd_protos LOCAL_STATIC_LIBRARIES := libBionicGtestMain libgmock metricsd_protos metricsd_binder_proxy include $(BUILD_NATIVE_TEST) # Unit tests for metrics_collector. Loading @@ -191,7 +199,7 @@ LOCAL_RTTI_FLAG := -frtti LOCAL_SHARED_LIBRARIES := $(metrics_collector_shared_libraries) LOCAL_SRC_FILES := $(metrics_collector_tests_sources) \ $(metrics_collector_common) LOCAL_STATIC_LIBRARIES := libBionicGtestMain libgmock LOCAL_STATIC_LIBRARIES := libBionicGtestMain libgmock metricsd_binder_proxy include $(BUILD_NATIVE_TEST) # Weave schema files Loading
metricsd/aidl/android/brillo/metrics/IMetricsd.aidl 0 → 100644 +25 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.brillo.metrics; interface IMetricsd { oneway void recordHistogram(String name, int sample, int min, int max, int nbuckets); oneway void recordLinearHistogram(String name, int sample, int max); oneway void recordSparseHistogram(String name, int sample); oneway void recordCrash(String type); }
metricsd/constants.h +0 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ static const char kSharedMetricsDirectory[] = "/data/misc/metrics/"; static const char kMetricsdDirectory[] = "/data/misc/metricsd/"; static const char kMetricsCollectorDirectory[] = "/data/misc/metrics_collector/"; static const char kMetricsEventsFileName[] = "uma-events"; static const char kMetricsGUIDFileName[] = "Sysinfo.GUID"; static const char kMetricsServer[] = "https://clients4.google.com/uma/v2"; static const char kConsentFileName[] = "enabled"; Loading
metricsd/include/metrics/metrics_library.h +15 −2 Original line number Diff line number Diff line Loading @@ -24,9 +24,17 @@ #include <base/compiler_specific.h> #include <base/files/file_path.h> #include <base/macros.h> #include <base/memory/scoped_ptr.h> #include <binder/IServiceManager.h> #include <gtest/gtest_prod.h> // for FRIEND_TEST namespace android { namespace brillo { namespace metrics { class IMetricsd; } // namespace metrics } // namespace brillo } // namespace android class MetricsLibraryInterface { public: virtual void Init() = 0; Loading Loading @@ -152,6 +160,10 @@ class MetricsLibrary : public MetricsLibraryInterface { char* buffer, int buffer_size, bool* result); // Connects to IMetricsd if the proxy does not exist or is not alive. // Don't block if we fail to get the proxy for any reason. bool CheckService(); // Time at which we last checked if metrics were enabled. time_t cached_enabled_time_; Loading @@ -161,7 +173,8 @@ class MetricsLibrary : public MetricsLibraryInterface { // True iff we should cache the enabled/disabled status. bool use_caching_; base::FilePath uma_events_file_; android::sp<android::IServiceManager> manager_; android::sp<android::brillo::metrics::IMetricsd> metricsd_proxy_; base::FilePath consent_file_; DISALLOW_COPY_AND_ASSIGN(MetricsLibrary); Loading
metricsd/metrics_client.cc +1 −49 Original line number Diff line number Diff line Loading @@ -21,11 +21,8 @@ #include "constants.h" #include "metrics/metrics_library.h" #include "serialization/metric_sample.h" #include "serialization/serialization_utils.h" enum Mode { kModeDumpLogs, kModeSendSample, kModeSendEnumSample, kModeSendSparseSample, Loading @@ -48,7 +45,6 @@ void ShowUsage() { " |min| > 0, |min| <= sample < |max|\n" " -c: return exit status 0 if user consents to stats, 1 otherwise,\n" " in guest mode always return 1\n" " -d: dump cached logs to the console\n" " -e: send linear/enumeration histogram data\n" " -g: return exit status 0 if machine in guest mode, 1 otherwise\n" " -s: send a sparse histogram sample\n" Loading Loading @@ -139,59 +135,17 @@ static int IsGuestMode() { return metrics_lib.IsGuestMode() ? 0 : 1; } static int DumpLogs() { base::FilePath events_file = base::FilePath(metrics::kSharedMetricsDirectory) .Append(metrics::kMetricsEventsFileName); printf("Metrics from %s\n\n", events_file.value().data()); ScopedVector<metrics::MetricSample> metrics; metrics::SerializationUtils::ReadMetricsFromFile(events_file.value(), &metrics); for (ScopedVector<metrics::MetricSample>::const_iterator i = metrics.begin(); i != metrics.end(); ++i) { const metrics::MetricSample* sample = *i; printf("name: %s\t", sample->name().c_str()); printf("type: "); switch (sample->type()) { case metrics::MetricSample::CRASH: printf("CRASH"); break; case metrics::MetricSample::HISTOGRAM: printf("HISTOGRAM"); break; case metrics::MetricSample::LINEAR_HISTOGRAM: printf("LINEAR_HISTOGRAM"); break; case metrics::MetricSample::SPARSE_HISTOGRAM: printf("SPARSE_HISTOGRAM"); break; case metrics::MetricSample::USER_ACTION: printf("USER_ACTION"); break; } printf("\n"); } return 0; } int main(int argc, char** argv) { enum Mode mode = kModeSendSample; bool secs_to_msecs = false; // Parse arguments int flag; while ((flag = getopt(argc, argv, "abcdegstuv")) != -1) { while ((flag = getopt(argc, argv, "abcegstuv")) != -1) { switch (flag) { case 'c': mode = kModeHasConsent; break; case 'd': mode = kModeDumpLogs; break; case 'e': mode = kModeSendEnumSample; break; Loading Loading @@ -252,8 +206,6 @@ int main(int argc, char** argv) { return HasConsent(); case kModeIsGuestMode: return IsGuestMode(); case kModeDumpLogs: return DumpLogs(); default: ShowUsage(); return 0; Loading