86 lines
2.8 KiB
Python
86 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import logging
|
|
|
|
import pytest
|
|
from httmock import all_requests, HTTMock
|
|
|
|
from passerelle.base.models import ProxyLogger, ResourceLog
|
|
from passerelle.apps.feeds.models import Feed
|
|
|
|
from .test_availability import down_mock, up_mock
|
|
|
|
|
|
@pytest.fixture
|
|
def connector():
|
|
connector, created = Feed.objects.get_or_create(slug='some-slug')
|
|
connector.set_log_level('DEBUG')
|
|
connector.url = 'http://example.net/'
|
|
connector.save()
|
|
return connector
|
|
|
|
|
|
def test_proxy_logger_basic(db, connector):
|
|
pr = ProxyLogger(connector)
|
|
pr.debug(u'some message')
|
|
rl_query = ResourceLog.objects.all()
|
|
assert len(rl_query) == 1
|
|
rl = rl_query.first()
|
|
assert rl.message == u'some message'
|
|
assert rl.levelno == logging.DEBUG
|
|
assert rl.appname == u'feeds'
|
|
assert rl.slug == u'some-slug'
|
|
|
|
|
|
def test_proxy_logger_std_interpolation(db, connector):
|
|
ResourceLog.objects.all().delete()
|
|
pr = ProxyLogger(connector)
|
|
pr.debug(u'some message %s', u'some var')
|
|
rl_query = ResourceLog.objects.all()
|
|
rl = rl_query.first()
|
|
assert rl.message == u'some message some var'
|
|
|
|
|
|
def test_proxy_logger_dict_interpolation(db, connector):
|
|
ResourceLog.objects.all().delete()
|
|
pr = ProxyLogger(connector)
|
|
pr.debug(u'some message %(var_name)s', {u'var_name': u'some var'})
|
|
rl_query = ResourceLog.objects.all()
|
|
rl = rl_query.first()
|
|
assert rl.message == u'some message some var'
|
|
|
|
|
|
def test_proxy_logger_ignore(db, connector):
|
|
ResourceLog.objects.all().delete()
|
|
connector.set_log_level('INFO')
|
|
pr = ProxyLogger(connector)
|
|
pr.debug(u'some message')
|
|
assert len(ResourceLog.objects.all()) == 0
|
|
|
|
def test_proxy_logger_ignore_when_down(db, connector):
|
|
with HTTMock(down_mock): # set connector as down
|
|
connector.availability()
|
|
assert connector.down() is True
|
|
ResourceLog.objects.all().delete()
|
|
pr = ProxyLogger(connector)
|
|
pr.debug(u'some message')
|
|
assert len(ResourceLog.objects.all()) == 0
|
|
|
|
def test_log_on_connector_availability_change(db, connector):
|
|
connector.title = u'éléphant'
|
|
with HTTMock(up_mock): # set connector as up
|
|
connector.availability()
|
|
ResourceLog.objects.all().delete()
|
|
with HTTMock(down_mock): # set connector as down
|
|
connector.availability()
|
|
assert len(ResourceLog.objects.all()) == 2
|
|
assert ResourceLog.objects.all()[0].message == 'GET http://example.net/ (=> 404)'
|
|
assert ResourceLog.objects.all()[1].level == 'error'
|
|
assert ResourceLog.objects.all()[1].message == u'connector "éléphant" (Feed) is now down'
|
|
|
|
with HTTMock(up_mock): # set connector as up
|
|
connector.availability()
|
|
assert len(ResourceLog.objects.all()) == 3
|
|
assert ResourceLog.objects.all()[2].level == 'info'
|
|
assert ResourceLog.objects.all()[2].message == u'connector "éléphant" (Feed) is back up'
|