]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[756-correct-statistic-get{all}-commands] changed Observation::getJSON
authorFranciszek Gorski <fagorski9@gmail.com>
Thu, 1 Aug 2019 07:26:30 +0000 (09:26 +0200)
committerFranciszek Gorski <fagorski9@gmail.com>
Wed, 7 Aug 2019 17:50:14 +0000 (19:50 +0200)
src/lib/stats/observation.cc
src/lib/stats/tests/observation_unittest.cc
src/lib/stats/tests/stats_mgr_unittest.cc

index 33661ffa9d92227e3ac7522e9f159bb57f2abc09..dfdbc41b1b70ba2c265fdb2943bc7b1e26a01a94 100644 (file)
@@ -344,7 +344,9 @@ std::string Observation::typeToText(Type type) {
 isc::data::ConstElementPtr
 Observation::getJSON() const {
 
-    ElementPtr entry = isc::data::Element::createList(); // multiple observations
+    //ElementPtr entry = isc::data::Element::createList(); // multiple observations
+    ElementPtr list = isc::data::Element::createList(); // multiple observations
+    ElementPtr entry;
     ElementPtr value;
     ElementPtr timestamp;
 
@@ -357,11 +359,14 @@ Observation::getJSON() const {
         // Iteration over all elements in the list
         // and adding alternately value and timestamp to the entry
         for (std::list<IntegerSample>::iterator it = s.begin(); it != s.end(); ++it) {
+            entry = isc::data::Element::createList();
             value = isc::data::Element::create(static_cast<int64_t>((*it).first));
             timestamp = isc::data::Element::create(isc::util::ptimeToText((*it).second));
 
             entry->add(value);
             entry->add(timestamp);
+
+            list->add(entry);
         }
         break;
     }
@@ -371,11 +376,14 @@ Observation::getJSON() const {
         // Iteration over all elements in the list
         // and adding alternately value and timestamp to the entry
         for (std::list<FloatSample>::iterator it = s.begin(); it != s.end(); ++it) {
+            entry = isc::data::Element::createList();
             value = isc::data::Element::create((*it).first);
             timestamp = isc::data::Element::create(isc::util::ptimeToText((*it).second));
 
             entry->add(value);
             entry->add(timestamp);
+
+            list->add(entry);
         }
         break;
     }
@@ -385,11 +393,14 @@ Observation::getJSON() const {
         // Iteration over all elements in the list
         // and adding alternately value and timestamp to the entry
         for (std::list<DurationSample>::iterator it = s.begin(); it != s.end(); ++it) {
+            entry = isc::data::Element::createList();
             value = isc::data::Element::create(isc::util::durationToText((*it).first));
             timestamp = isc::data::Element::create(isc::util::ptimeToText((*it).second));
 
             entry->add(value);
             entry->add(timestamp);
+
+            list->add(entry);
         }
         break;
     }
@@ -399,11 +410,14 @@ Observation::getJSON() const {
         // Iteration over all elements in the list
         // and adding alternately value and timestamp to the entry
         for (std::list<StringSample>::iterator it = s.begin(); it != s.end(); ++it) {
+            entry = isc::data::Element::createList();
             value = isc::data::Element::create((*it).first);
             timestamp = isc::data::Element::create(isc::util::ptimeToText((*it).second));
 
             entry->add(value);
             entry->add(timestamp);
+
+            list->add(entry);
         }
         break;
     }
@@ -412,9 +426,6 @@ Observation::getJSON() const {
                   << typeToText(type_));
     };
 
-    ElementPtr list = isc::data::Element::createList(); // multiple observations
-    list->add(entry);
-
     return (list);
 }
 
index f241b19da3e55be7310d39ffd8ec2df48519d0e5..03e4680d593e16ee6833fb926dc50694b1128859 100644 (file)
@@ -502,13 +502,13 @@ TEST_F(ObservationTest, timers) {
 /// for details.
 TEST_F(ObservationTest, integerToJSON) {
     // String which contains first added sample
-    std::string first_sample = ", 1234, \"" +
+    std::string first_sample = ", 1234, \"" +
         isc::util::ptimeToText(a.getInteger().second) + "\" ] ]";
 
     a.setValue(static_cast<int64_t>(1234));
 
     std::string exp = "[ [ 1234, \"" +
-        isc::util::ptimeToText(a.getInteger().second) + "\"" + first_sample;
+        isc::util::ptimeToText(a.getInteger().second) + "\" ]" + first_sample;
 
     std::cout << a.getJSON()->str() << std::endl;
     EXPECT_EQ(exp, a.getJSON()->str());
@@ -520,7 +520,7 @@ TEST_F(ObservationTest, integerToJSON) {
 /// for details.
 TEST_F(ObservationTest, floatToJSON) {
     // String which contains first added sample
-    std::string first_sample = ", 12.34, \"" +
+    std::string first_sample = ", 12.34, \"" +
         isc::util::ptimeToText(b.getFloat().second) + "\" ] ]";
 
     // Let's use a value that converts easily to floating point.
@@ -529,7 +529,7 @@ TEST_F(ObservationTest, floatToJSON) {
     b.setValue(1234.5);
 
     std::string exp = "[ [ 1234.5, \"" +
-        isc::util::ptimeToText(b.getFloat().second) + "\"" + first_sample;
+        isc::util::ptimeToText(b.getFloat().second) + "\" ]" + first_sample;
 
     std::cout << b.getJSON()->str() << std::endl;
     EXPECT_EQ(exp, b.getJSON()->str());
@@ -540,14 +540,14 @@ TEST_F(ObservationTest, floatToJSON) {
 // details.
 TEST_F(ObservationTest, durationToJSON) {
     // String which contains first added sample
-    std::string first_sample = ", \"01:02:03.000004\", \"" +
+    std::string first_sample = ", \"01:02:03.000004\", \"" +
         isc::util::ptimeToText(c.getDuration().second) + "\" ] ]";
 
     // 1 hour 2 minutes 3 seconds and 4 milliseconds
     c.setValue(time_duration(1, 2, 3, 4));
 
     std::string exp = "[ [ \"01:02:03.000004\", \"" +
-        isc::util::ptimeToText(c.getDuration().second) + "\"" + first_sample;
+        isc::util::ptimeToText(c.getDuration().second) + "\" ]" + first_sample;
 
     std::cout << c.getJSON()->str() << std::endl;
     EXPECT_EQ(exp, c.getJSON()->str());
@@ -558,13 +558,13 @@ TEST_F(ObservationTest, durationToJSON) {
 // for details.
 TEST_F(ObservationTest, stringToJSON) {
     // String which contains first added sample
-    std::string first_sample = ", \"1234\", \"" +
+    std::string first_sample = ", \"1234\", \"" +
         isc::util::ptimeToText(d.getString().second) + "\" ] ]";
 
     d.setValue("Lorem ipsum dolor sit amet");
 
     std::string exp = "[ [ \"Lorem ipsum dolor sit amet\", \"" +
-        isc::util::ptimeToText(d.getString().second) + "\"" + first_sample;
+        isc::util::ptimeToText(d.getString().second) + "\" ]" + first_sample;
 
     std::cout << d.getJSON()->str() << std::endl;
     EXPECT_EQ(exp, d.getJSON()->str());
index bf2114f5439a19715f81c34a52ade1cb709738e1..952b1b8c22ab5c4153e0dc816cf2305f5e07af85 100644 (file)
@@ -225,16 +225,16 @@ TEST_F(StatsMgrTest, getGetAll) {
     StatsMgr::instance().setValue("delta", "Lorem");
 
     // The string's representation of firstly added statistics
-    std::string alpha_first = ", 1234, \"" +
+    std::string alpha_first = ", 1234, \"" +
         isc::util::ptimeToText(StatsMgr::instance().getObservation("alpha")
                                    ->getInteger().second) + "\" ] ]";
-    std::string beta_first = ", 12.34, \"" +
+    std::string beta_first = ", 12.34, \"" +
         isc::util::ptimeToText(StatsMgr::instance().getObservation("beta")
                                    ->getFloat().second) + "\" ] ]";
-    std::string gamma_first = ", \"01:02:03.000004\", \"" +
+    std::string gamma_first = ", \"01:02:03.000004\", \"" +
         isc::util::ptimeToText(StatsMgr::instance().getObservation("gamma")
                                    ->getDuration().second) + "\" ] ]";
-    std::string delta_first = ", \"Lorem\", \"" +
+    std::string delta_first = ", \"Lorem\", \"" +
         isc::util::ptimeToText(StatsMgr::instance().getObservation("delta")
                                    ->getString().second) + "\" ] ]";
 
@@ -260,16 +260,16 @@ TEST_F(StatsMgrTest, getGetAll) {
 
     std::string exp_str_alpha = "[ [ 6912, \"" +
         isc::util::ptimeToText(StatsMgr::instance().getObservation("alpha")
-                                   ->getInteger().second) + "\"" + alpha_first;
+                                   ->getInteger().second) + "\" ]" + alpha_first;
     std::string exp_str_beta = "[ [ 69.12, \"" +
         isc::util::ptimeToText(StatsMgr::instance().getObservation("beta")
-                                   ->getFloat().second) + "\"" + beta_first;
+                                   ->getFloat().second) + "\" ]" + beta_first;
     std::string exp_str_gamma = "[ [ \"06:08:10.000012\", \"" +
         isc::util::ptimeToText(StatsMgr::instance().getObservation("gamma")
-                                   ->getDuration().second) + "\"" + gamma_first;
+                                   ->getDuration().second) + "\" ]" + gamma_first;
     std::string exp_str_delta = "[ [ \"Lorem ipsum\", \"" +
         isc::util::ptimeToText(StatsMgr::instance().getObservation("delta")
-                                   ->getString().second) + "\"" + delta_first;
+                                   ->getString().second) + "\" ]" + delta_first;
 
     // Check that individual stats are reported properly
     EXPECT_EQ("{ \"alpha\": " + exp_str_alpha + " }", rep_alpha->str());