changed value of link_up/down_interval from minutes to seconds
authorChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 11 Jun 2015 16:45:46 +0000 (18:45 +0200)
committerChristian Herdtweck <christian.herdtweck@intra2net.com>
Thu, 11 Jun 2015 16:45:46 +0000 (18:45 +0200)
more work than expected!

src/config/configuration.cpp
src/config/configuration.h
src/config/option/linkdownintervaloption.cpp
src/config/option/linkupintervaloption.cpp
src/link/linkstatus.cpp
src/link/linkstatus.h
src/main.cpp
test/test_configurationcommandline.cpp
test/test_configurationfile.cpp
test/test_configurationoptions.cpp

index c030e81..32ed292 100644 (file)
@@ -55,10 +55,10 @@ Configuration::Configuration() :
     MinPingFailLimit( 0 ),
     MaxPingFailLimit( 100 ),
     StatusNotifierCmd( "" ),
-    LinkUpIntervalInMin( 0 ),
-    LinkDownIntervalInMin( 0 ),
-    MinStableLinkIntervalInMin( 0 ),
-    MaxStableLinkIntervalInMin( 60 ),
+    LinkUpIntervalInSec( 0 ),
+    LinkDownIntervalInSec( 0 ),
+    MinStableLinkIntervalInSec( 0 ),
+    MaxStableLinkIntervalInSec( 3600 ),
     PingReplyTimeout( 30 ),
     MaxAddressResolutionAttempts( 10 ),
     ResolvedIpTtlThreshold( 10 ),
@@ -191,32 +191,32 @@ void Configuration::set_status_notifier_cmd( const string &status_notifier_cmd )
     StatusNotifierCmd = status_notifier_cmd;
 }
 
-int Configuration::get_link_up_interval_in_min() const
+int Configuration::get_link_up_interval_in_sec() const
 {
-    return LinkUpIntervalInMin;
+    return LinkUpIntervalInSec;
 }
 
-void Configuration::set_link_up_interval_in_min(
-        const int link_up_interval_in_min
+void Configuration::set_link_up_interval_in_sec(
+        const int link_up_interval_in_sec
 )
 {
-    BOOST_ASSERT( ( MinStableLinkIntervalInMin <= link_up_interval_in_min ) && ( link_up_interval_in_min <= MaxStableLinkIntervalInMin ) );
+    BOOST_ASSERT( ( MinStableLinkIntervalInSec <= link_up_interval_in_sec ) && ( link_up_interval_in_sec <= MaxStableLinkIntervalInSec ) );
 
-    LinkUpIntervalInMin = link_up_interval_in_min;
+    LinkUpIntervalInSec = link_up_interval_in_sec;
 }
 
-int Configuration::get_link_down_interval_in_min() const
+int Configuration::get_link_down_interval_in_sec() const
 {
-    return LinkDownIntervalInMin;
+    return LinkDownIntervalInSec;
 }
 
-void Configuration::set_link_down_interval_in_min(
-        const int link_down_interval_in_min
+void Configuration::set_link_down_interval_in_sec(
+        const int link_down_interval_in_sec
 )
 {
-    BOOST_ASSERT( ( MinStableLinkIntervalInMin <= link_down_interval_in_min ) && ( link_down_interval_in_min <= MaxStableLinkIntervalInMin ) );
+    BOOST_ASSERT( ( MinStableLinkIntervalInSec <= link_down_interval_in_sec ) && ( link_down_interval_in_sec <= MaxStableLinkIntervalInSec ) );
 
-    LinkDownIntervalInMin = link_down_interval_in_min;
+    LinkDownIntervalInSec = link_down_interval_in_sec;
 }
 
 int Configuration::get_ping_reply_timeout() const
index 32e9d13..3002665 100644 (file)
@@ -81,11 +81,11 @@ public:
     std::string get_status_notifier_cmd() const;
     void set_status_notifier_cmd( const std::string &status_notifier_cmd );
 
-    int get_link_up_interval_in_min() const;
-    void set_link_up_interval_in_min( const int link_up_interval_in_min );
+    int get_link_up_interval_in_sec() const;
+    void set_link_up_interval_in_sec( const int link_up_interval_in_sec );
 
-    int get_link_down_interval_in_min() const;
-    void set_link_down_interval_in_min( const int link_down_interval_in_min );
+    int get_link_down_interval_in_sec() const;
+    void set_link_down_interval_in_sec( const int link_down_interval_in_sec );
 
     int get_ping_reply_timeout() const;
     void set_ping_reply_timeout( const int ping_reply_timeout );
@@ -133,10 +133,10 @@ private:
     int MinPingFailLimit;
     int MaxPingFailLimit;
     std::string StatusNotifierCmd;
-    int LinkUpIntervalInMin;
-    int LinkDownIntervalInMin;
-    int MinStableLinkIntervalInMin;
-    int MaxStableLinkIntervalInMin;
+    int LinkUpIntervalInSec;
+    int LinkDownIntervalInSec;
+    int MinStableLinkIntervalInSec;
+    int MaxStableLinkIntervalInSec;
     int PingReplyTimeout;
     int MaxAddressResolutionAttempts;
     int ResolvedIpTtlThreshold;
index 2cc1797..843e79c 100644 (file)
@@ -34,8 +34,8 @@ using I2n::Logger::GlobalLogger;
 LinkDownIntervalOption::LinkDownIntervalOption() :
     ConfigurationOption(
         "link-down-interval",
-        value<int>()->default_value( 2 ), // 2 minutes
-        "How long the link must be offline in order to consider it down."
+        value<int>()->default_value( 120 ), // 2 minutes
+        "How many seconds the link must be offline in order to consider it down."
     )
 {
 }
@@ -52,11 +52,11 @@ bool LinkDownIntervalOption::parse(
     // link-down-interval
     if ( 1 <= vm.count( get_command_string() ) )
     {
-        int link_down_interval_in_min = vm[ get_command_string() ].as<int>();
-        configuration->set_link_down_interval_in_min( link_down_interval_in_min );
+        int link_down_interval_secs = vm[ get_command_string() ].as<int>();
+        configuration->set_link_down_interval_in_sec( link_down_interval_secs );
 
         GlobalLogger.info() << get_command_string() << "="
-                << link_down_interval_in_min << endl;
+                << link_down_interval_secs << endl;
 
         return true;
     }
index 5598a59..ae69a2f 100644 (file)
@@ -34,8 +34,8 @@ using I2n::Logger::GlobalLogger;
 LinkUpIntervalOption::LinkUpIntervalOption() :
     ConfigurationOption(
         "link-up-interval",
-        value<int>()->default_value( 5 ), // 5 minutes
-        "How long the link must be responsive in order to consider it stable."
+        value<int>()->default_value( 300 ), // 5 minutes
+        "How many seconds the link must be responsive in order to consider it stable."
     )
 {
 }
@@ -52,11 +52,11 @@ bool LinkUpIntervalOption::parse(
     // link-up-interval
     if ( 1 <= vm.count( get_command_string() ) )
     {
-        int link_up_interval_in_min = vm[ get_command_string() ].as<int>();
-        configuration->set_link_up_interval_in_min( link_up_interval_in_min );
+        int link_up_interval_secs = vm[ get_command_string() ].as<int>();
+        configuration->set_link_up_interval_in_sec( link_up_interval_secs );
 
         GlobalLogger.info() << get_command_string() << "="
-                << link_up_interval_in_min << endl;
+                << link_up_interval_secs << endl;
 
         return true;
     }
index 0a44101..aeebb5c 100644 (file)
@@ -41,31 +41,31 @@ using I2n::Logger::GlobalLogger;
  *
  * @param hosts_down_limit The maximum amount of different hosts that can be
  * down before the system take any action.
- * @param link_up_interval_in_min The amount of time required to the link to
+ * @param link_up_interval_in_sec The amount of time required to the link to
  * stay up before notify.
- * @param link_down_interval_in_min The amount of time required to the link to
+ * @param link_down_interval_in_sec The amount of time required to the link to
  * stay down before notify.
  * @param status_notifier_cmd The command used to notify about link status
  * changes.
  */
 LinkStatus::LinkStatus(
         const int hosts_down_limit,
-        const int link_up_interval_in_min,
-        const int link_down_interval_in_min,
+        const int link_up_interval_in_sec,
+        const int link_down_interval_in_sec,
         const string &status_notifier_cmd
 ) :
     HostsDownLimit( hosts_down_limit ),
     HostsDownList(),
-    LinkUpIntervalInMin( link_up_interval_in_min ),
-    LinkDownIntervalInMin( link_down_interval_in_min ),
+    LinkUpIntervalInSec( link_up_interval_in_sec ),
+    LinkDownIntervalInSec( link_down_interval_in_sec ),
     CurrentLinkStatus( Status_Down ),
     CurrentNotificationStatus( NotificationStatus_NotReported ),
     TimeLinkStatusChanged( microsec_clock::universal_time() ),
     StatusNotifierCmd( new StatusNotifierCommand( status_notifier_cmd ) )
 {
     BOOST_ASSERT( 0 <= hosts_down_limit );
-    BOOST_ASSERT( 0 <= link_up_interval_in_min );
-    BOOST_ASSERT( 0 <= link_down_interval_in_min );
+    BOOST_ASSERT( 0 <= link_up_interval_in_sec );
+    BOOST_ASSERT( 0 <= link_down_interval_in_sec );
 }
 
 LinkStatus::~LinkStatus()
@@ -221,9 +221,8 @@ bool LinkStatus::is_link_up_enough_time() const
     {
         ptime now = microsec_clock::universal_time();
         long amount_time_link_is_up = (now - TimeLinkStatusChanged).total_seconds();
-        long link_up_interval_in_sec = LinkUpIntervalInMin * 60;
 
-        if ( amount_time_link_is_up >= link_up_interval_in_sec )
+        if ( amount_time_link_is_up >= LinkUpIntervalInSec )
         {
             return true;
         }
@@ -238,9 +237,8 @@ bool LinkStatus::is_link_down_enough_time() const
     {
         ptime now = microsec_clock::universal_time();
         long amount_time_link_is_down = (now - TimeLinkStatusChanged).total_seconds();
-        long link_down_interval_in_sec = LinkDownIntervalInMin * 60;
 
-        if ( amount_time_link_is_down >= link_down_interval_in_sec )
+        if ( amount_time_link_is_down >= LinkDownIntervalInSec )
         {
             return true;
         }
index 6353f6c..19118f1 100644 (file)
@@ -42,8 +42,8 @@ class LinkStatus
 public:
     LinkStatus(
             const int hosts_down_limit,
-            const int link_up_interval_in_min,
-            const int link_down_interval_in_min,
+            const int link_up_interval_in_sec,
+            const int link_down_interval_in_sec,
             const std::string &status_notifier_cmd
     );
     ~LinkStatus();
@@ -100,9 +100,9 @@ public:
     /// List of hosts down (obvious isn't it?)
     std::set<std::string> HostsDownList;
     /// Interval the link have to be stable in order to consider it is functional
-    const int LinkUpIntervalInMin;
+    const int LinkUpIntervalInSec;
     /// Interval the link have to be down in order to consider it is non-functional
-    const int LinkDownIntervalInMin;
+    const int LinkDownIntervalInSec;
     /// Keep track of the actual link status
     LinkStatus::Status CurrentLinkStatus;
     /// Indicates if the last link status change was notified
index 8478bc9..9d27408 100644 (file)
@@ -137,14 +137,14 @@ LinkStatusItem get_status_notifier(
 )
 {
     int hosts_down_limit = configuration->get_hosts_down_limit();
-    int link_up_interval_in_min = configuration->get_link_up_interval_in_min();
-    int link_down_interval_in_min = configuration->get_link_down_interval_in_min();
+    int link_up_interval_in_sec = configuration->get_link_up_interval_in_sec();
+    int link_down_interval_in_sec = configuration->get_link_down_interval_in_sec();
     string status_notifier_cmd = configuration->get_status_notifier_cmd();
     LinkStatusItem link_analyzer(
             new LinkStatus(
                     hosts_down_limit,
-                    link_up_interval_in_min,
-                    link_down_interval_in_min,
+                    link_up_interval_in_sec,
+                    link_down_interval_in_sec,
                     status_notifier_cmd
             )
     );
index aa7f608..a79ea12 100644 (file)
@@ -42,8 +42,8 @@ BOOST_AUTO_TEST_CASE( normal_options )
         "--hosts-down-limit=2",
         "--ping-fail-limit=80",
         "--status-notifier-cmd=scripts/notifier_command.sh",
-        "--link-up-interval=10",
-        "--link-down-interval=10",
+        "--link-up-interval=600",
+        "--link-down-interval=600",
         // 1st host
         "--host.name=www.intra2net.com",
         "--host.port=80",
@@ -80,8 +80,8 @@ BOOST_AUTO_TEST_CASE( normal_options )
     BOOST_CHECK_EQUAL( config.get_hosts_down_limit(), 2 );
     BOOST_CHECK_EQUAL( config.get_ping_fail_limit(), 80 );
     BOOST_CHECK_EQUAL( config.get_status_notifier_cmd(), "scripts/notifier_command.sh" );
-    BOOST_CHECK_EQUAL( config.get_link_up_interval_in_min(), 10 );
-    BOOST_CHECK_EQUAL( config.get_link_down_interval_in_min(), 10 );
+    BOOST_CHECK_EQUAL( config.get_link_up_interval_in_sec(), 600 );
+    BOOST_CHECK_EQUAL( config.get_link_down_interval_in_sec(), 600 );
 
     BOOST_CHECK_EQUAL( config.get_hosts().size(), 3 );
     HostItem host1 = config.get_hosts().at(0);
index b4c1a91..86ef346 100644 (file)
@@ -47,8 +47,8 @@ BOOST_AUTO_TEST_CASE( normal_options )
     file << "hosts-down-limit=2\n";
     file << "ping-fail-limit=80\n";
     file << "status-notifier-cmd=scripts/notifier_command.sh\n";
-    file << "link-up-interval=10\n";
-    file << "link-down-interval=10\n";
+    file << "link-up-interval=600\n";
+    file << "link-down-interval=600\n";
     // 1st host
     file << "[host]\n";
     file << "name=www.intra2net.com\n";
@@ -84,8 +84,8 @@ BOOST_AUTO_TEST_CASE( normal_options )
     BOOST_CHECK_EQUAL( config.get_hosts_down_limit(), 2 );
     BOOST_CHECK_EQUAL( config.get_ping_fail_limit(), 80 );
     BOOST_CHECK_EQUAL( config.get_status_notifier_cmd(), "scripts/notifier_command.sh" );
-    BOOST_CHECK_EQUAL( config.get_link_up_interval_in_min(), 10 );
-    BOOST_CHECK_EQUAL( config.get_link_down_interval_in_min(), 10 );
+    BOOST_CHECK_EQUAL( config.get_link_up_interval_in_sec(), 600 );
+    BOOST_CHECK_EQUAL( config.get_link_down_interval_in_sec(), 600 );
 
     BOOST_CHECK_EQUAL( config.get_hosts().size(), 3 );
     HostItem host1 = config.get_hosts().at(0);
index bf4e418..30f9a69 100644 (file)
@@ -172,8 +172,8 @@ BOOST_AUTO_TEST_CASE( parse_configuration_options )
     boost::program_options::variables_map vm;
 
     option_insert( "hosts-down-limit", boost::any( 0 ), vm );
-    option_insert( "link-down-interval", boost::any( 30 ), vm );
-    option_insert( "link-up-interval", boost::any( 40 ), vm );
+    option_insert( "link-down-interval", boost::any( 30*60 ), vm );
+    option_insert( "link-up-interval", boost::any( 40*60 ), vm );
     option_insert( "nameserver", boost::any( std::string("localhost") ), vm );
     option_insert( "ping-fail-limit", boost::any( 50 ), vm );
     option_insert( "default-source-network-interface", boost::any( std::string("wlan1") ), vm );
@@ -184,8 +184,8 @@ BOOST_AUTO_TEST_CASE( parse_configuration_options )
     config_options.parse_configuration_options( vm, &configuration );
 
     BOOST_CHECK_EQUAL( configuration.get_hosts_down_limit(), 0 );
-    BOOST_CHECK_EQUAL( configuration.get_link_down_interval_in_min(), 30 );
-    BOOST_CHECK_EQUAL( configuration.get_link_up_interval_in_min(), 40 );
+    BOOST_CHECK_EQUAL( configuration.get_link_down_interval_in_sec(), 30*60 );
+    BOOST_CHECK_EQUAL( configuration.get_link_up_interval_in_sec(), 40*60 );
     BOOST_CHECK_EQUAL( configuration.get_nameserver(), "localhost" );
     BOOST_CHECK_EQUAL( configuration.get_ping_fail_limit(), 50 );
     BOOST_CHECK_EQUAL( configuration.get_source_network_interface(), "wlan1" );