[metrics] Improve metrics definition API

This CL combines the ART_COUNTERS and ART_HISTOGRAMS lists into a
single ART_METRICS list. Additionally, this will make it possible to
add additional metrics types with less boilerplate.

Bug: 170149255
Test: gtests
Change-Id: I09e161de1ae574dfcc9ab95e8827b071f0a53892
diff --git a/libartbase/base/metrics/metrics_test.cc b/libartbase/base/metrics/metrics_test.cc
index 44a3b60..93701e6 100644
--- a/libartbase/base/metrics/metrics_test.cc
+++ b/libartbase/base/metrics/metrics_test.cc
@@ -212,18 +212,12 @@
 
   metrics.ReportAllMetrics(&backend);
 
-  // Make sure the resulting string lists all the counters.
+  // Make sure the resulting string lists all the metrics.
   const std::string result = backend.GetAndResetBuffer();
-#define COUNTER(name) \
+#define METRIC(name, type, ...) \
   EXPECT_NE(result.find(DatumName(DatumId::k##name)), std::string::npos);
-  ART_COUNTERS(COUNTER);
-#undef COUNTER
-
-  // Make sure the resulting string lists all the histograms.
-#define HISTOGRAM(name, num_buckets, minimum_value, maximum_value) \
-  EXPECT_NE(result.find(DatumName(DatumId::k##name)), std::string::npos);
-  ART_HISTOGRAMS(HISTOGRAM);
-#undef HISTOGRAM
+  ART_METRICS(METRIC);
+#undef METRIC
 }
 
 }  // namespace metrics