am 011b2bc3: Merge "metrics: Add a CLI flag to disable dbus."
* commit '011b2bc3ebba01de7acec1a6ed7a287a492b6fa0':
metrics: Add a CLI flag to disable dbus.
diff --git a/metrics/metrics_daemon.cc b/metrics/metrics_daemon.cc
index 6340278..f9061d5 100644
--- a/metrics/metrics_daemon.cc
+++ b/metrics/metrics_daemon.cc
@@ -210,6 +210,7 @@
void MetricsDaemon::Init(bool testing,
bool uploader_active,
+ bool dbus_enabled,
MetricsLibraryInterface* metrics_lib,
const string& vmstats_path,
const string& scaling_max_freq_path,
@@ -220,6 +221,7 @@
const string& config_root) {
testing_ = testing;
uploader_active_ = uploader_active;
+ dbus_enabled_ = dbus_enabled;
config_root_ = config_root;
DCHECK(metrics_lib != nullptr);
metrics_lib_ = metrics_lib;
@@ -275,36 +277,39 @@
}
int MetricsDaemon::OnInit() {
- int return_code = chromeos::DBusDaemon::OnInit();
+ int return_code = dbus_enabled_ ? chromeos::DBusDaemon::OnInit() :
+ chromeos::Daemon::OnInit();
if (return_code != EX_OK)
return return_code;
if (testing_)
return EX_OK;
- bus_->AssertOnDBusThread();
- CHECK(bus_->SetUpAsyncOperations());
+ if (dbus_enabled_) {
+ bus_->AssertOnDBusThread();
+ CHECK(bus_->SetUpAsyncOperations());
- if (bus_->is_connected()) {
- const std::string match_rule =
- base::StringPrintf(kCrashReporterMatchRule,
- kCrashReporterInterface,
- kCrashReporterUserCrashSignal);
+ if (bus_->is_connected()) {
+ const std::string match_rule =
+ base::StringPrintf(kCrashReporterMatchRule,
+ kCrashReporterInterface,
+ kCrashReporterUserCrashSignal);
- bus_->AddFilterFunction(&MetricsDaemon::MessageFilter, this);
+ bus_->AddFilterFunction(&MetricsDaemon::MessageFilter, this);
- DBusError error;
- dbus_error_init(&error);
- bus_->AddMatch(match_rule, &error);
+ DBusError error;
+ dbus_error_init(&error);
+ bus_->AddMatch(match_rule, &error);
- if (dbus_error_is_set(&error)) {
- LOG(ERROR) << "Failed to add match rule \"" << match_rule << "\". Got "
- << error.name << ": " << error.message;
- return EX_SOFTWARE;
+ if (dbus_error_is_set(&error)) {
+ LOG(ERROR) << "Failed to add match rule \"" << match_rule << "\". Got "
+ << error.name << ": " << error.message;
+ return EX_SOFTWARE;
+ }
+ } else {
+ LOG(ERROR) << "DBus isn't connected.";
+ return EX_UNAVAILABLE;
}
- } else {
- LOG(ERROR) << "DBus isn't connected.";
- return EX_UNAVAILABLE;
}
if (uploader_active_) {
@@ -317,7 +322,7 @@
}
void MetricsDaemon::OnShutdown(int* return_code) {
- if (!testing_ && bus_->is_connected()) {
+ if (!testing_ && dbus_enabled_ && bus_->is_connected()) {
const std::string match_rule =
base::StringPrintf(kCrashReporterMatchRule,
kCrashReporterInterface,
diff --git a/metrics/metrics_daemon.h b/metrics/metrics_daemon.h
index 49e6d70..ccac52a 100644
--- a/metrics/metrics_daemon.h
+++ b/metrics/metrics_daemon.h
@@ -31,6 +31,7 @@
// Initializes metrics class variables.
void Init(bool testing,
bool uploader_active,
+ bool dbus_enabled,
MetricsLibraryInterface* metrics_lib,
const std::string& vmstats_path,
const std::string& cpuinfo_max_freq_path,
@@ -289,6 +290,10 @@
// Whether the uploader is enabled or disabled.
bool uploader_active_;
+ // Whether or not dbus should be used.
+ // If disabled, we will not collect the frequency of crashes.
+ bool dbus_enabled_;
+
// Root of the configuration files to use.
std::string config_root_;
diff --git a/metrics/metrics_daemon_main.cc b/metrics/metrics_daemon_main.cc
index 01a6f7b..6c580ba 100644
--- a/metrics/metrics_daemon_main.cc
+++ b/metrics/metrics_daemon_main.cc
@@ -29,6 +29,9 @@
false,
"run the uploader once and exit");
+ // Enable dbus.
+ DEFINE_bool(withdbus, true, "Enable dbus");
+
// Upload Service flags.
DEFINE_int32(upload_interval_secs,
1800,
@@ -58,6 +61,7 @@
MetricsDaemon daemon;
daemon.Init(FLAGS_uploader_test,
FLAGS_uploader | FLAGS_uploader_test,
+ FLAGS_withdbus,
&metrics_lib,
"/proc/vmstat",
kScalingMaxFreqPath,