def test_loadbalancer(self):
        """ testing scaling up and down threads """
        
        # scaling up
        dummy_checks = 1000
        self.create_dummy_checks(dummy_checks, 60)
        
        self.config.set("Checker", "latency_spawn_thread", "1")
        self.config.set("Checker", "latency_calculate", "5")
        self.config.set("Checker", "spawn_thread_max", "2")
        self.config.set("Checker", "delete_thread_max", "30")        
        
        self.monitor_engine = checker.start_checker(
            self.config, self.config.get("Checker", "test_db"),
            1, 10000, 2
        )
        
        time.sleep(3)
        last_threads = self.monitor_engine['active_monitor_threads']
        
        time.sleep(30)
        threads = self.monitor_engine['active_monitor_threads']
        self.assertTrue(threads > last_threads)
        last_threads = threads
        
        time.sleep(30)
        threads = self.monitor_engine['active_monitor_threads']
        self.assertTrue(threads > last_threads)

        self.monitor_engine.shutdown()
        
        
        
        
        # scaling down
        self.delete_dummy_checks(dummy_checks - 3)
        
        self.config.set("Checker", "latency_spawn_thread", "1")
        self.config.set("Checker", "latency_calculate", "5")
        self.config.set("Checker", "spawn_thread_max", "10")
        self.config.set("Checker", "delete_thread_max", "2")        
        
        self.monitor_engine = checker.start_checker(
            self.config, self.config.get("Checker", "test_db"),
            100, 10000, 2
        )
        
        time.sleep(3)
        last_threads = self.monitor_engine['active_monitor_threads']
        
        time.sleep(30)
        threads = self.monitor_engine['active_monitor_threads']
        self.assertTrue(threads < last_threads)
        last_threads = threads
        
        time.sleep(30)
        threads = self.monitor_engine['active_monitor_threads']
        self.assertTrue(threads < last_threads)
 def test_spike_distribution(self):
     """ testing check spike distribution """
     
     self.create_dummy_checks(1000, 60)      
     
     self.monitor_engine = checker.start_checker(
         self.config, self.config.get("Checker", "test_db"),
         10, 10000, 2
     )
     
     time.sleep(5)
     chunk, total = self.monitor_engine['feeder_throttle']
     self.assertTrue(chunk < total)
     old_total = total
     
     time.sleep(5)
     chunk, total = self.monitor_engine['feeder_throttle']
     self.assertTrue(chunk < total)
     self.assertTrue(total < old_total)
     old_total = total
     
     time.sleep(5)
     chunk, total = self.monitor_engine['feeder_throttle']
     self.assertTrue(chunk < total)
     self.assertTrue(total < old_total)
     old_total = total
 def test_dns(self):
     """ testing pyDNS ip resolution """
     
     domain = ("medtelligent.com", "174.36.81.144")
     
     cursor = self.connection.cursor()
     cursor.execute("""
         INSERT INTO LocalSchedule (
             global_schedule_id,
             monitor_point_id,
             port,
             service_type,
             frequency,
             next_check_time,
             fqdn
         ) VALUES (
             1,
             1,
             80,
             "icmp.ping",
             10,
             NOW(),
             "%s"
         )
     """ % domain[0])
     cursor.close()
     self.connection.commit()
     
     self.monitor_engine = checker.start_checker(
         self.config, self.config.get("Checker", "test_db"),
         10, 10000, 2
     )
     time.sleep(5)
     self.assertEqual(self.monitor_engine.get('last_resolved_dns'), domain)