def test_https_logging_handler_connection_error(connection_error_adapter, dummy_log_record): handler = HTTPSHandler(host='127.0.0.1', enabled_flag=True, message_type='logstash', lvl='INFO', enabled_loggers=['awx', 'activity_stream', 'job_events', 'system_tracking']) handler.setFormatter(LogstashFormatter()) handler.session.mount('http://', connection_error_adapter) buff = cStringIO.StringIO() logging.getLogger('awx.main.utils.handlers').addHandler( logging.StreamHandler(buff) ) async_futures = handler.emit(dummy_log_record) with pytest.raises(requests.exceptions.ConnectionError): [future.result() for future in async_futures] assert 'failed to emit log to external aggregator\nTraceback' in buff.getvalue() # we should only log failures *periodically*, so causing *another* # immediate failure shouldn't report a second ConnectionError buff.truncate(0) async_futures = handler.emit(dummy_log_record) with pytest.raises(requests.exceptions.ConnectionError): [future.result() for future in async_futures] assert buff.getvalue() == ''
def test_https_logging_handler_emit_without_cred(http_adapter, dummy_log_record, message_type): handler = HTTPSHandler(host='127.0.0.1', enabled_flag=True, message_type=message_type, lvl='INFO', enabled_loggers=[ 'awx', 'activity_stream', 'job_events', 'system_tracking' ]) handler.setFormatter(LogstashFormatter()) handler.session.mount('http://', http_adapter) async_futures = handler.emit(dummy_log_record) [future.result() for future in async_futures] assert len(http_adapter.requests) == 1 request = http_adapter.requests[0] assert request.url == 'http://127.0.0.1/' assert request.method == 'POST' if message_type == 'logstash': # A username + password weren't used, so this header should be missing assert 'Authorization' not in request.headers if message_type == 'splunk': assert request.headers['Authorization'] == 'Splunk None'
def test_https_logging_handler_emit_splunk_with_creds(http_adapter, dummy_log_record): handler = HTTPSHandler(host='127.0.0.1', enabled_flag=True, password='******', message_type='splunk', lvl='INFO', enabled_loggers=['awx', 'activity_stream', 'job_events', 'system_tracking']) handler.setFormatter(LogstashFormatter()) handler.session.mount('http://', http_adapter) async_futures = handler.emit(dummy_log_record) [future.result() for future in async_futures] assert len(http_adapter.requests) == 1 request = http_adapter.requests[0] assert request.headers['Authorization'] == 'Splunk pass'
def test_https_logging_handler_emit_splunk_with_creds(http_adapter, dummy_log_record): handler = HTTPSHandler(host='127.0.0.1', password='******', message_type='splunk') handler.setFormatter(LogstashFormatter()) handler.session.mount('http://', http_adapter) async_futures = handler.emit(dummy_log_record) [future.result() for future in async_futures] assert len(http_adapter.requests) == 1 request = http_adapter.requests[0] assert request.headers['Authorization'] == 'Splunk pass'
def test_https_logging_handler_emit_logstash_with_creds( http_adapter, dummy_log_record): handler = HTTPSHandler(host='127.0.0.1', username='******', password='******', message_type='logstash') handler.setFormatter(LogstashFormatter()) handler.session.mount('http://', http_adapter) async_futures = handler.emit(dummy_log_record) [future.result() for future in async_futures] assert len(http_adapter.requests) == 1 request = http_adapter.requests[0] assert request.headers['Authorization'] == 'Basic %s' % base64.b64encode( "user:pass")
def test_https_logging_handler_emit_without_cred(https_adapter, dummy_log_record, message_type): handler = HTTPSHandler(host='127.0.0.1', message_type=message_type) handler.setFormatter(LogstashFormatter()) handler.session.mount('https://', https_adapter) async_futures = handler.emit(dummy_log_record) [future.result() for future in async_futures] assert len(https_adapter.requests) == 1 request = https_adapter.requests[0] assert request.url == 'https://127.0.0.1/' assert request.method == 'POST' if message_type == 'logstash': # A username + password weren't used, so this header should be missing assert 'Authorization' not in request.headers if message_type == 'splunk': assert request.headers['Authorization'] == 'Splunk None'