From: Razvan Becheriu Date: Mon, 15 Jul 2019 11:47:56 +0000 (+0300) Subject: updated ChangeLog, AUTHORS and addressed formatting X-Git-Tag: Kea-1.6.0-beta2~48 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f498cc6f2f3b27505b5f4b380190cb6f7d7f5bd;p=thirdparty%2Fkea.git updated ChangeLog, AUTHORS and addressed formatting --- diff --git a/AUTHORS b/AUTHORS index 170ed305c2..0f59b9f56c 100644 --- a/AUTHORS +++ b/AUTHORS @@ -193,6 +193,7 @@ We have received the following contributions: - Franciszek Gorski 2018-10: Makefile bug fixed + 2019-07: Statistics enhancements - Suzanne Goldlust 2018-10: API documentation diff --git a/ChangeLog b/ChangeLog index 4bc599d53b..b3956c5ebe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +1620. [func] franek, razvan + Kea statistics improvements: Support for storing more than one + sample. + (Gitlab #696,!418, git c7b8c275758c96f56081e02da429f5dd9d653b87) + 1619. [func] marcin Add support for associating subnets with the server tags in the mysql_cb hooks library. diff --git a/src/lib/stats/observation.cc b/src/lib/stats/observation.cc index 950ed74c6c..c82c1db47b 100644 --- a/src/lib/stats/observation.cc +++ b/src/lib/stats/observation.cc @@ -164,7 +164,7 @@ size_t Observation::getSizeInternal(StorageType& storage, Type exp_type) const { template void Observation::setValueInternal(SampleType value, StorageType& storage, - Type exp_type) { + Type exp_type) { if (type_ != exp_type) { isc_throw(InvalidStatType, "Invalid statistic type requested: " << typeToText(exp_type) << ", but the actual type is " @@ -247,7 +247,8 @@ std::list Observation::getStrings() const { } template -std::list Observation::getValuesInternal(Storage& storage, Type exp_type) const { +std::list Observation::getValuesInternal(Storage& storage, + Type exp_type) const { if (type_ != exp_type) { isc_throw(InvalidStatType, "Invalid statistic type requested: " << typeToText(exp_type) << ", but the actual type is " @@ -265,7 +266,8 @@ std::list Observation::getValuesInternal(Storage& storage, Type exp_ template void Observation::setMaxSampleAgeInternal(StorageType& storage, - const StatsDuration& duration, Type exp_type) { + const StatsDuration& duration, + Type exp_type) { if (type_ != exp_type) { isc_throw(InvalidStatType, "Invalid statistic type requested: " << typeToText(exp_type) << ", but the actual type is " @@ -289,7 +291,8 @@ void Observation::setMaxSampleAgeInternal(StorageType& storage, template void Observation::setMaxSampleCountInternal(StorageType& storage, - uint32_t max_samples, Type exp_type) { + uint32_t max_samples, + Type exp_type) { if (type_ != exp_type) { isc_throw(InvalidStatType, "Invalid statistic type requested: " << typeToText(exp_type) << ", but the actual type is " diff --git a/src/lib/stats/observation.h b/src/lib/stats/observation.h index 086898fd54..0fa2b7f439 100644 --- a/src/lib/stats/observation.h +++ b/src/lib/stats/observation.h @@ -121,10 +121,10 @@ class Observation { /// /// @param duration determines maximum age of samples /// Example: - /// To set a statistic to keep observations for the last 5 minutes, - /// call: setMaxSampleAge(time_duration(0, 5, 0, 0)); + /// To set a statistic to keep observations for the last 5 minutes, call: + /// setMaxSampleAge(time_duration(0, 5, 0, 0)); /// To revert statistic to a single value, call: - /// setMaxSampleAge(time_duration(0, 0, 0, 0)) + /// setMaxSampleAge(time_duration(0, 0, 0, 0)); void setMaxSampleAge(const StatsDuration& duration); /// @brief Determines how many samples of a given statistic should be kept. @@ -134,6 +134,7 @@ class Observation { /// be kept. When adding max_samples + 1 sample, the oldest sample will be /// discarded. /// + /// /// @param max_samples how many samples of a given statistic should be kept /// Example: /// To set a statistic to keep the last 100 observations, call: @@ -268,7 +269,7 @@ private: /// @tparam Storage type of storage (e.g. list) /// @param storage storage which size will be returned /// @param exp_type expected observation type (used for sanity checking) - /// @return Size of storage + /// @return size of storage template size_t getSizeInternal(StorageType& storage, Type exp_type) const; @@ -306,7 +307,7 @@ private: /// @param observation storage /// @param exp_type expected observation type (used for sanity checking) /// @throw InvalidStatType if observation type mismatches - /// @return List of observed samples + /// @return list of observed samples template std::list getValuesInternal(Storage& storage, Type exp_type) const; @@ -338,7 +339,7 @@ private: Type type_; /// @brief Maximum number of samples - /// The limit is represent as a pair + /// The limit is represented as a pair /// of bool value and uint32_t /// Only one kind of limit can be active /// The bool value informs which limit @@ -349,7 +350,7 @@ private: std::pair max_sample_count_ = std::make_pair(true, 20); /// @brief Maximum timespan of samples - /// The limit is represent as a pair + /// The limit is represented as a pair /// of bool value and StatsDuration(boost::posix_time::time_duration) /// Only one kind of limit can be active /// The bool value informs which limit diff --git a/src/lib/stats/stats_mgr.cc b/src/lib/stats/stats_mgr.cc index 910f4a2f8f..3ae30e24ed 100644 --- a/src/lib/stats/stats_mgr.cc +++ b/src/lib/stats/stats_mgr.cc @@ -90,7 +90,8 @@ bool StatsMgr::setMaxSampleAge(const std::string& name, } } -bool StatsMgr::setMaxSampleCount(const std::string& name, uint32_t max_samples) { +bool StatsMgr::setMaxSampleCount(const std::string& name, + uint32_t max_samples) { ObservationPtr obs = getObservation(name); if (obs) { obs->setMaxSampleCount(max_samples); diff --git a/src/lib/stats/stats_mgr.h b/src/lib/stats/stats_mgr.h index 86f8d2abb9..44401762b0 100644 --- a/src/lib/stats/stats_mgr.h +++ b/src/lib/stats/stats_mgr.h @@ -138,10 +138,11 @@ class StatsMgr : public boost::noncopyable { /// @param name name of the observation /// @param duration determines maximum age of samples /// @return true if successful, false if there's no such statistic - /// Example: to set a statistic to keep observations for the last 5 minutes, - /// call setMaxSampleAge("incoming-packets", time_duration(0, 5, 0, 0)); + /// Example: + /// To set a statistic to keep observations for the last 5 minutes, call: + /// setMaxSampleAge("incoming-packets", time_duration(0, 5, 0, 0)); /// to revert statistic to a single value, call: - /// setMaxSampleAge("incoming-packets" time_duration(0, 0, 0, 0)) + /// setMaxSampleAge("incoming-packets", time_duration(0, 0, 0, 0)); bool setMaxSampleAge(const std::string& name, const StatsDuration& duration); /// @brief Determines how many samples of a given statistic should be kept. diff --git a/src/lib/stats/tests/observation_unittest.cc b/src/lib/stats/tests/observation_unittest.cc index d9e33b2719..1681dcdc34 100644 --- a/src/lib/stats/tests/observation_unittest.cc +++ b/src/lib/stats/tests/observation_unittest.cc @@ -493,7 +493,6 @@ TEST_F(ObservationTest, floatToJSON) { // See https://gitlab.isc.org/isc-projects/kea/wikis/designs/Stats-design for // details. TEST_F(ObservationTest, durationToJSON) { - // String which contains first added sample std::string first_sample = ", \"01:02:03.000004\", \"" + isc::util::ptimeToText(c.getDuration().second) + "\" ] ]"; @@ -515,6 +514,7 @@ TEST_F(ObservationTest, stringToJSON) { // String which contains first added sample 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\", \"" +