def __init__(self, message_queue, config=None): self.functions = {} self.is_running = False self.message_queue = message_queue if config is None: self.config = get_config()["handlers"]["multi_thread"] else: self.config = config
def test_merges_config_with_default_config(self): config.set_config({"handlers": {"multi_thread": {"thread_count": 10}}}) multi_thread_config = config.get_config()["handlers"]["multi_thread"] self.assertEqual(multi_thread_config["thread_count"], 10) default_timeout = DEFAULTS["handlers"]["multi_thread"][ "queue_listen_timeout"] self.assertEqual(multi_thread_config["queue_listen_timeout"], default_timeout)
def test_starts_multiple_threads(self): multi_thread_handler = MultiThreadHandler(Queue()) multi_thread_handler.start() thread_count = get_config()["handlers"]["multi_thread"]["thread_count"] try: wait_until_success(lambda: self.assertTrue(threading.active_count( ) >= thread_count + 1)) finally: multi_thread_handler.stop()
def __init__(self, message_queue, config=None): self.is_running = False if config is None: self.config = get_config()["redis"] else: self.config = config self.message_queue = message_queue self.handlers = [] self.redis_client = redis.StrictRedis(host=self.config["host"], port=self.config["port"])
def test_executes_events(self): queue = Queue() first_queue_mock = Mock() queue_name = "queue" multi_thread_handler = MultiThreadHandler(queue) multi_thread_handler.add_function(queue_name, first_queue_mock) event_count = 10 for i in range(0, 10): queue.put_nowait(Event(queue_name, "some data")) try: multi_thread_handler.start() wait_until_success(lambda: self.assertEqual( first_queue_mock.call_count, event_count)) thread_count = get_config( )["handlers"]["multi_thread"]["thread_count"] self.assertTrue(threading.active_count() >= thread_count + 1) finally: multi_thread_handler.stop()
def test_catch_all_errors_from_user_functions(self): def fail_if_one(callback, number): if number == 1: raise Exception("Boom!") callback() queue = Queue() queue_name = "queue" success_callback = Mock() handler_config = get_config()["handlers"]["multi_thread"] handler_config["thread_count"] = 1 multi_thread_handler = MultiThreadHandler(queue, config=handler_config) multi_thread_handler.add_function( queue_name, partial(fail_if_one, success_callback)) queue.put_nowait(Event(queue_name, 1)) queue.put_nowait(Event(queue_name, 2)) try: multi_thread_handler.start() wait_until_success( lambda: self.assertTrue(success_callback.called)) finally: multi_thread_handler.stop()
def test_sets_config(self): config.set_config({"extra_config": "foobar"}) self.assertEqual(config.get_config()["extra_config"], "foobar")
def test_raises_error_if_config_not_set(self): with self.assertRaises(config.ConfigurationException): config.get_config()