Ejemplo n.º 1
0
 def __init__(self, name: str, logger: logging.Logger,
              rabbitmq: RabbitMQApi) -> None:
     super().__init__(name, logger, rabbitmq)
     self._mongo = MongoApi(logger=self.logger.getChild(MongoApi.__name__),
                            db_name=self.mongo_db,
                            host=self.mongo_ip,
                            port=self.mongo_port)
Ejemplo n.º 2
0
 def setUp(self) -> None:
     self.dummy_logger = logging.getLogger('dummy')
     self.dummy_logger.disabled = True
     self.db = env.DB_NAME
     self.host = env.DB_IP
     self.port = env.DB_PORT
     self.live_check_time_interval = timedelta(seconds=3)
     self.live_check_time_interval_with_error_margin = timedelta(
         seconds=3.5)
     self.mongo = MongoApi(
         self.dummy_logger,
         self.db,
         self.host,
         self.port,
         live_check_time_interval=self.live_check_time_interval)
Ejemplo n.º 3
0
    def setUpClass(cls) -> None:
        # Same as in setUp(), to avoid running all tests if Mongo is offline

        dummy_logger = logging.getLogger('dummy')
        dummy_logger.disabled = True
        db = env.DB_NAME
        host = env.DB_IP
        port = env.DB_PORT
        user = ''
        password = ''
        mongo = MongoApi(logger=dummy_logger,
                         db_name=db,
                         host=host,
                         port=port,
                         username=user,
                         password=password)

        # Ping Mongo
        try:
            mongo.ping_unsafe()
        except PyMongoError:
            raise Exception("Mongo is not online.")
Ejemplo n.º 4
0
    def setUp(self) -> None:
        self.dummy_logger = logging.getLogger('dummy')
        self.dummy_logger.disabled = True
        self.db = env.DB_NAME
        self.host = 'dummyhost'
        self.port = env.DB_PORT
        self.user = ''
        self.password = ''
        self.mongo = MongoApi(self.dummy_logger,
                              self.db,
                              self.host,
                              self.port,
                              timeout_ms=1)
        # timeout_ms is set to 1ms to speed up tests. It cannot be 0

        self.col1 = 'collection1'
        self.val1 = {'a': 'b', 'c': 'd'}
        self.val2 = {'e': 'f', 'g': 'h'}
        self.val3 = {'i': 'j'}

        self.id_1 = '1'
        self.key_m_1 = 'key_m_1'
        self.val_m_1 = 'm1'
        self.test_1 = 'test_1'
        self.time_used = datetime(2021, 1, 28).timestamp()
        self.query1 = {'doc_type': self.test_1, 'd': self.time_used}

        self.doc_1 = {
            '$push': {
                self.id_1: {
                    self.key_m_1: self.val_m_1
                }
            },
            '$inc': {
                'n_entries': 1
            }
        }
Ejemplo n.º 5
0
    def setUp(self) -> None:
        self.dummy_logger = logging.getLogger('dummy')
        self.dummy_logger.disabled = True
        self.db = env.DB_NAME
        self.host = env.DB_IP
        self.port = env.DB_PORT
        self.user = ''
        self.password = ''
        self.mongo = MongoApi(logger=self.dummy_logger,
                              db_name=self.db,
                              host=self.host,
                              port=self.port,
                              username=self.user,
                              password=self.password)

        try:
            self.mongo.ping_unsafe()
        except PyMongoError:
            self.fail("Mongo is not online.")

        # Clear test database
        self.mongo.drop_db()

        self.col1 = 'collection1'
        self.col2 = 'collection2'

        self.val1 = {'a': 'b', 'c': 'd'}
        self.val2 = {'e': 'f', 'g': 'h'}
        self.val3 = {'i': 'j'}
        self.val4 = {'k': 'l', 'm': {'n': ['o', 'p', True, False, 1, 2.1]}}

        self.id_1 = '1'
        self.id_2 = '2'

        self.key_m_1 = 'key_m_1'
        self.key_m_2 = 'key_m_2'

        self.val_m_1 = 'm1'
        self.val_m_2 = 'm2'

        self.test_1 = 'test_1'
        self.test_2 = 'test_2'

        self.time_used = datetime(2021, 1, 28).timestamp()
        self.query1 = {'doc_type': self.test_1, 'd': self.time_used}
        self.query2 = {'doc_type': self.test_2, 'd': self.time_used}

        self.doc_1 = {
            '$push': {
                self.id_1: {
                    self.key_m_1: self.val_m_1
                }
            },
            '$inc': {
                'n_entries': 1
            }
        }

        self.doc_2 = {
            '$push': {
                self.id_2: {
                    self.key_m_2: self.val_m_2
                }
            },
            '$inc': {
                'n_entries': 1
            }
        }

        self.doc_3 = {
            '$push': {
                self.id_1: {
                    self.key_m_2: self.val_m_2
                }
            },
            '$inc': {
                'n_entries': 1
            }
        }

        self.time = timedelta(seconds=3)
        self.time_with_error_margin = timedelta(seconds=4)

        self.default_str = 'DEFAULT'
        self.default_int = 789
        self.default_bool = False
Ejemplo n.º 6
0
    def setUp(self) -> None:
        self.dummy_logger = logging.getLogger('Dummy')
        self.dummy_logger.disabled = True
        self.connection_check_time_interval = timedelta(seconds=0)
        self.rabbit_ip = env.RABBIT_IP
        self.rabbitmq = RabbitMQApi(
            self.dummy_logger,
            self.rabbit_ip,
            connection_check_time_interval=self.connection_check_time_interval)

        self.test_rabbit_manager = RabbitMQApi(
            self.dummy_logger,
            self.rabbit_ip,
            connection_check_time_interval=self.connection_check_time_interval)

        self.mongo_ip = env.DB_IP
        self.mongo_db = env.DB_NAME
        self.mongo_port = env.DB_PORT

        self.mongo = MongoApi(logger=self.dummy_logger.getChild(
            MongoApi.__name__),
                              db_name=self.mongo_db,
                              host=self.mongo_ip,
                              port=self.mongo_port)

        self.redis_db = env.REDIS_DB
        self.redis_host = env.REDIS_IP
        self.redis_port = env.REDIS_PORT
        self.redis_namespace = env.UNIQUE_ALERTER_IDENTIFIER
        self.redis = RedisApi(self.dummy_logger, self.redis_db,
                              self.redis_host, self.redis_port, '',
                              self.redis_namespace,
                              self.connection_check_time_interval)

        self.test_store_name = 'store name'
        self.test_store = AlertStore(self.test_store_name, self.dummy_logger,
                                     self.rabbitmq)

        self.routing_key = 'heartbeat.worker'
        self.test_queue_name = 'test queue'

        connect_to_rabbit(self.rabbitmq)
        self.rabbitmq.exchange_declare(HEALTH_CHECK_EXCHANGE, 'topic', False,
                                       True, False, False)
        self.rabbitmq.exchange_declare(STORE_EXCHANGE, 'direct', False, True,
                                       False, False)
        self.rabbitmq.queue_declare(ALERT_STORE_INPUT_QUEUE, False, True,
                                    False, False)
        self.rabbitmq.queue_bind(ALERT_STORE_INPUT_QUEUE, STORE_EXCHANGE,
                                 ALERT_STORE_INPUT_ROUTING_KEY)

        connect_to_rabbit(self.test_rabbit_manager)
        self.test_rabbit_manager.queue_declare(self.test_queue_name, False,
                                               True, False, False)
        self.test_rabbit_manager.queue_bind(self.test_queue_name,
                                            HEALTH_CHECK_EXCHANGE,
                                            self.routing_key)

        self.test_data_str = 'test data'
        self.test_exception = PANICException('test_exception', 1)

        self.parent_id = 'test_parent_id'

        self.alert_id = 'test_alert_id'
        self.origin_id = 'test_origin_id'
        self.alert_name = 'test_alert'
        self.metric = 'system_is_down'
        self.severity = 'warning'
        self.message = 'alert message'
        self.value = 'alert_code_1'

        self.alert_id_2 = 'test_alert_id_2'
        self.origin_id_2 = 'test_origin_id_2'
        self.alert_name_2 = 'test_alert_2'
        self.severity_2 = 'critical'
        self.message_2 = 'alert message 2'
        self.value_2 = 'alert_code_2'

        self.alert_id_3 = 'test_alert_id_3'
        self.origin_id_3 = 'test_origin_id_3'
        self.alert_name_3 = 'test_alert_3'
        self.severity_3 = 'info'
        self.message_3 = 'alert message 3'
        self.value_3 = 'alert_code_3'

        self.last_monitored = datetime(2012, 1, 1).timestamp()
        self.none = None

        self.alert_data_1 = {
            'parent_id': self.parent_id,
            'origin_id': self.origin_id,
            'alert_code': {
                'name': self.alert_name,
                'value': self.value,
            },
            'severity': self.severity,
            'metric': self.metric,
            'message': self.message,
            'timestamp': self.last_monitored,
        }
        self.alert_data_2 = {
            'parent_id': self.parent_id,
            'origin_id': self.origin_id_2,
            'alert_code': {
                'name': self.alert_name_2,
                'value': self.value_2,
            },
            'severity': self.severity_2,
            'metric': self.metric,
            'message': self.message_2,
            'timestamp': self.last_monitored,
        }
        self.alert_data_3 = {
            'parent_id': self.parent_id,
            'origin_id': self.origin_id_3,
            'alert_code': {
                'name': self.alert_name_3,
                'value': self.value_3,
            },
            'severity': self.severity_3,
            'metric': self.metric,
            'message': self.message_3,
            'timestamp': self.last_monitored,
        }
        self.alert_data_key_error = {"result": {"data": {}, "data2": {}}}
        self.alert_data_unexpected = {"unexpected": {}}