]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common: add description in PerfCounter class
authorVed-vampir <akiselyova@mirantis.com>
Fri, 20 Feb 2015 15:04:49 +0000 (18:04 +0300)
committerVed-vampir <akiselyova@mirantis.com>
Fri, 20 Feb 2015 16:01:44 +0000 (19:01 +0300)
Signed-off-by: Kiseleva Alyona <akiselyova@mirantis.com>
src/common/perf_counters.cc
src/common/perf_counters.h
src/test/perf_counters.cc

index 61242727f3bc90f295b3044f9ad67b55ca765fcb..f520e1fb1756376e9ca13e17fe5f73b7a8e81947 100644 (file)
@@ -292,6 +292,7 @@ void PerfCounters::dump_formatted(Formatter *f, bool schema,
     if (schema) {
       f->open_object_section(d->name);
       f->dump_int("type", d->type);
+      f->dump_string("description", d->description);
       f->close_section();
     } else {
       if (d->type & PERFCOUNTER_LONGRUNAVG) {
@@ -356,32 +357,32 @@ PerfCountersBuilder::~PerfCountersBuilder()
   m_perf_counters = NULL;
 }
 
-void PerfCountersBuilder::add_u64_counter(int idx, const char *name)
+void PerfCountersBuilder::add_u64_counter(int idx, const char *name, const char *description)
 {
-  add_impl(idx, name, PERFCOUNTER_U64 | PERFCOUNTER_COUNTER);
+  add_impl(idx, name, description, PERFCOUNTER_U64 | PERFCOUNTER_COUNTER);
 }
 
-void PerfCountersBuilder::add_u64(int idx, const char *name)
+void PerfCountersBuilder::add_u64(int idx, const char *name, const char *description)
 {
-  add_impl(idx, name, PERFCOUNTER_U64);
+  add_impl(idx, name, description, PERFCOUNTER_U64);
 }
 
-void PerfCountersBuilder::add_u64_avg(int idx, const char *name)
+void PerfCountersBuilder::add_u64_avg(int idx, const char *name, const char *description)
 {
-  add_impl(idx, name, PERFCOUNTER_U64 | PERFCOUNTER_LONGRUNAVG);
+  add_impl(idx, name, description, PERFCOUNTER_U64 | PERFCOUNTER_LONGRUNAVG);
 }
 
-void PerfCountersBuilder::add_time(int idx, const char *name)
+void PerfCountersBuilder::add_time(int idx, const char *name, const char *description)
 {
-  add_impl(idx, name, PERFCOUNTER_TIME);
+  add_impl(idx, name, description, PERFCOUNTER_TIME);
 }
 
-void PerfCountersBuilder::add_time_avg(int idx, const char *name)
+void PerfCountersBuilder::add_time_avg(int idx, const char *name, const char *description)
 {
-  add_impl(idx, name, PERFCOUNTER_TIME | PERFCOUNTER_LONGRUNAVG);
+  add_impl(idx, name, description, PERFCOUNTER_TIME | PERFCOUNTER_LONGRUNAVG);
 }
 
-void PerfCountersBuilder::add_impl(int idx, const char *name, int ty)
+void PerfCountersBuilder::add_impl(int idx, const char *name, const char *description, int ty)
 {
   assert(idx > m_perf_counters->m_lower_bound);
   assert(idx < m_perf_counters->m_upper_bound);
@@ -390,6 +391,7 @@ void PerfCountersBuilder::add_impl(int idx, const char *name, int ty)
     &data(vec[idx - m_perf_counters->m_lower_bound - 1]);
   assert(data.type == PERFCOUNTER_NONE);
   data.name = name;
+  data.description = description;
   data.type = (enum perfcounter_type_d)ty;
 }
 
index 8850138a23fa9feca6881b26a48d100abb363496..c11e8c2a6bdfdb9ef7074d4b361c417793081dd4 100644 (file)
@@ -114,25 +114,29 @@ private:
   struct perf_counter_data_any_d {
     perf_counter_data_any_d()
       : name(NULL),
-       type(PERFCOUNTER_NONE),
-       u64(0),
-       avgcount(0),
-       avgcount2(0)
+        description(NULL),
+               type(PERFCOUNTER_NONE),
+               u64(0),
+               avgcount(0),
+               avgcount2(0)
     {}
     perf_counter_data_any_d(const perf_counter_data_any_d& other)
       : name(other.name),
-       type(other.type),
-       u64(other.u64.read()) {
+        description(other.description),
+               type(other.type),
+               u64(other.u64.read()) {
       pair<uint64_t,uint64_t> a = other.read_avg();
       u64.set(a.first);
       avgcount.set(a.second);
       avgcount2.set(a.second);
     }
 
+    // this functions are not used, for what are they?
     void write_schema_json(char *buf, size_t buf_sz) const;
     void  write_json(char *buf, size_t buf_sz) const;
 
     const char *name;
+    const char *description;
     enum perfcounter_type_d type;
     atomic64_t u64;
     atomic64_t avgcount;
@@ -149,6 +153,7 @@ private:
 
     perf_counter_data_any_d& operator=(const perf_counter_data_any_d& other) {
       name = other.name;
+      description = other.description;
       type = other.type;
       pair<uint64_t,uint64_t> a = other.read_avg();
       u64.set(a.first);
@@ -234,16 +239,16 @@ public:
   PerfCountersBuilder(CephContext *cct, const std::string &name,
                    int first, int last);
   ~PerfCountersBuilder();
-  void add_u64(int key, const char *name);
-  void add_u64_counter(int key, const char *name);
-  void add_u64_avg(int key, const char *name);
-  void add_time(int key, const char *name);
-  void add_time_avg(int key, const char *name);
+  void add_u64(int key, const char *name, const char *description = "NO_INFO_FIX");
+  void add_u64_counter(int key, const char *name, const char *description = "NO_INFO_FIX");
+  void add_u64_avg(int key, const char *name, const char *description = "NO_INFO_FIX");
+  void add_time(int key, const char *name, const char *description = "NO_INFO_FIX");
+  void add_time_avg(int key, const char *name, const char *description = "NO_INFO_FIX");
   PerfCounters* create_perf_counters();
 private:
   PerfCountersBuilder(const PerfCountersBuilder &rhs);
   PerfCountersBuilder& operator=(const PerfCountersBuilder &rhs);
-  void add_impl(int idx, const char *name, int ty);
+  void add_impl(int idx, const char *name, const char *description, int ty);
 
   PerfCounters *m_perf_counters;
 };
index 9b6bd71b514444fc45a411662a9028238f2db0f9..1a93db42f784c5f9c2d5d5404c8bb46ea1cd015d 100644 (file)
@@ -181,8 +181,9 @@ TEST(PerfCounters, MultiplePerfCounters) {
   ASSERT_EQ(sd("{\"test_perfcounter_1\":{\"element1\":13,\"element2\":0.000000000,"
            "\"element3\":{\"avgcount\":0,\"sum\":0.000000000}}}"), msg);
   ASSERT_EQ("", client.do_request("{ \"prefix\": \"perf schema\", \"format\": \"json\" }", &msg));
-  ASSERT_EQ(sd("{\"test_perfcounter_1\":{\"element1\":{\"type\":2},"
-              "\"element2\":{\"type\":1},\"element3\":{\"type\":5}}}"), msg);
+
+  ASSERT_EQ(sd("{\"test_perfcounter_1\":{\"element1\":{\"type\":2,\"description\":\"NO_INFO_FIX\"},"
+              "\"element2\":{\"type\":1,\"description\":\"NO_INFO_FIX\"},\"element3\":{\"type\":5,\"description\":\"NO_INFO_FIX\"}}}"), msg);
 
   coll->clear();
   ASSERT_EQ("", client.do_request("{ \"prefix\": \"perf dump\", \"format\": \"json\" }", &msg));