Revert^4 "[metrics] Add file output support"
Adds a new command line option, -Xwrite-metrics-to-file=_, which
specifies a file for writing metrics to. This can be used in conjunction
with -Xwrite-metrics-to-log, which will cause the output to go to both
logcat and the file.
Writing metrics to a file can be helpful for testing or benchmarking
environments.
Access to the file is protected using advisory locking, so it is safe to
have multiple processes write metrics to the same file.
This reverts commit f8567b535dcc4618f0ee76e5b8716d296681197b.
Reason for revert: Splitting out problematic test.
Test: test/run-test --host test/2234-write-metrics-to-file
Bug: 175025360
Bug: 170149255
Change-Id: I09be3bfe10293fe71ded1a5b155dcd2fd226f8b3
diff --git a/runtime/metrics/metrics.h b/runtime/metrics/metrics.h
index 7156d57..a6e3955 100644
--- a/runtime/metrics/metrics.h
+++ b/runtime/metrics/metrics.h
@@ -21,6 +21,7 @@
#include <array>
#include <atomic>
+#include <optional>
#include <ostream>
#include <string_view>
#include <vector>
@@ -58,6 +59,10 @@
// per metric.
namespace art {
+
+class Runtime;
+struct RuntimeArgumentMap;
+
namespace metrics {
/**
@@ -340,9 +345,16 @@
std::string DatumName(DatumId datum);
struct ReportingConfig {
- bool dump_to_logcat;
- // TODO(eholk): this will grow to support other configurations, such as logging to a file, or
- // statsd. There will also be options for reporting after a period of time, or at certain events.
+ static ReportingConfig FromRuntimeArguments(const RuntimeArgumentMap& args);
+
+ // Causes metrics to be written to the log, which makes them show up in logcat.
+ bool dump_to_logcat{false};
+
+ // If set, provides a file name to enable metrics logging to a file.
+ std::optional<std::string> dump_to_file;
+
+ // Returns whether any options are set that enables metrics reporting.
+ constexpr bool ReportingEnabled() const { return dump_to_logcat || dump_to_file.has_value(); }
};
// MetricsReporter handles periodically reporting ART metrics.