]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/test/exporter/test_exporter.cc
update ceph source to reef 18.2.1
[ceph.git] / ceph / src / test / exporter / test_exporter.cc
index 83750e0eaf1d353b1fda4aa6d46048b2abe7d701..b607d1afffbed4281a34f42d13a6ca358e0b1819 100644 (file)
@@ -1,10 +1,13 @@
 #include "gtest/gtest.h"
 #include "exporter/util.h"
+#include "exporter/DaemonMetricCollector.h"
 
 #include <string>
 #include <vector>
 #include <utility>
 
+typedef std::map<std::string, std::string> labels_t;
+
 // 17.2.6's memento mori:
 // This data was gathered from the python implementation of the promethize method
 // where we transform the path of a counter to a valid prometheus name.
@@ -662,3 +665,30 @@ TEST(Exporter, promethize) {
   }
 }
 
+TEST(Exporter, check_labels_and_metric_name) {
+  static std::vector<std::pair<std::string, std::string>> counters_data;
+  counters_data.emplace_back("ceph-osd.0", "ceph_osd_numpg");
+  counters_data.emplace_back("ceph-client.rgw.foo.ceph-node-00.hrgsea.2.94739968030880", "ceph_rgw_get");
+
+  static std::vector<labels_t> labels_vec;
+  labels_vec.emplace_back(labels_t{{"ceph_daemon", "\"osd.0\""}});
+  labels_vec.emplace_back(labels_t{{"instance_id", "\"hrgsea\""}});
+  auto counter_data_itr = counters_data.begin();
+  auto labels_vec_itr = labels_vec.begin();
+  for (; counter_data_itr != counters_data.end() && labels_vec_itr != labels_vec.end();
+         ++counter_data_itr, ++labels_vec_itr) {
+        std::string daemon_name = counter_data_itr->first;
+        std::string counter_name = counter_data_itr->second;
+        DaemonMetricCollector &collector = collector_instance();
+        labels_t result = collector.get_extra_labels(daemon_name);
+        ASSERT_EQ(result, *labels_vec_itr);
+  }
+  // test for fail case with daemon_name.size() < 4
+  std::string short_daemon_name = "ceph-client.rgw.foo";
+  std::string counter_name = "ceph_rgw_get";
+  DaemonMetricCollector &collector = collector_instance();
+  labels_t fail_result = collector.get_extra_labels(short_daemon_name);
+  // This is a special case, the daemon name is not of the required size for fetching instance_id.
+  // So no labels should be added.
+  ASSERT_TRUE(fail_result.empty());
+}