Exemplo n.º 1
0
    def test_modify_payload(self):
        def _add_test_key(payload, **kw):
            payload['test'] = 333
            return payload

        events.add_payload_handler(_add_test_key)

        self.assertEqual(events.on_payload({'hello': 'world'}), {'hello': 'world', 'test': 333})
Exemplo n.º 2
0
    def test_filter_by_level(self):
        self.assertFalse(events.on_exception_info((None, 123, None), level='ignored'))
        self.assertIsNot(events.on_exception_info((None, 123, None), level='error'), False)

        self.assertFalse(events.on_message('hello world', level='ignored'))
        self.assertIsNot(events.on_message('hello world', level='error'), False)

        self.assertFalse(events.on_payload({}, level='ignored'))
        self.assertIsNot(events.on_message({}, level='error'), False)
Exemplo n.º 3
0
def send_payload(payload, access_token):
    """
    Sends a payload object, (the result of calling _build_payload() + _serialize_payload()).
    Uses the configured handler from SETTINGS['handler']

    Available handlers:
    - 'blocking': calls _send_payload() (which makes an HTTP request) immediately, blocks on it
    - 'thread': starts a single-use thread that will call _send_payload(). returns immediately.
    - 'agent': writes to a log file to be processed by rollbar-agent
    - 'tornado': calls _send_payload_tornado() (which makes an async HTTP request using tornado's AsyncHTTPClient)
    - 'gae': calls _send_payload_appengine() (which makes a blocking call to Google App Engine)
    - 'twisted': calls _send_payload_twisted() (which makes an async HTTP request using Twisted and Treq)
    """
    payload = events.on_payload(payload)
    if payload is False:
        return

    handler = SETTINGS.get('handler')
    if handler == 'twisted':
        payload['data']['framework'] = 'twisted'

    payload_str = _serialize_payload(payload)
    if handler == 'blocking':
        _send_payload(payload_str, access_token)
    elif handler == 'agent':
        agent_log.error(payload_str)
    elif handler == 'tornado':
        if TornadoAsyncHTTPClient is None:
            log.error('Unable to find tornado')
            return
        _send_payload_tornado(payload_str, access_token)
    elif handler == 'gae':
        if AppEngineFetch is None:
            log.error('Unable to find AppEngine URLFetch module')
            return
        _send_payload_appengine(payload_str, access_token)
    elif handler == 'twisted':
        if treq is None:
            log.error('Unable to find Treq')
            return
        _send_payload_twisted(payload_str, access_token)
    else:
        # default to 'thread'
        thread = threading.Thread(target=_send_payload, args=(payload_str, access_token))
        _threads.put(thread)
        thread.start()
Exemplo n.º 4
0
def send_payload(payload, access_token):
    """
    Sends a payload object, (the result of calling _build_payload() + _serialize_payload()).
    Uses the configured handler from SETTINGS['handler']

    Available handlers:
    - 'blocking': calls _send_payload() (which makes an HTTP request) immediately, blocks on it
    - 'thread': starts a single-use thread that will call _send_payload(). returns immediately.
    - 'agent': writes to a log file to be processed by rollbar-agent
    - 'tornado': calls _send_payload_tornado() (which makes an async HTTP request using tornado's AsyncHTTPClient)
    - 'gae': calls _send_payload_appengine() (which makes a blocking call to Google App Engine)
    - 'twisted': calls _send_payload_twisted() (which makes an async HTTP reqeust using Twisted and Treq)
    """
    payload = events.on_payload(payload)
    if payload is False:
        return

    payload_str = _serialize_payload(payload)

    handler = SETTINGS.get('handler')
    if handler == 'blocking':
        _send_payload(payload_str, access_token)
    elif handler == 'agent':
        agent_log.error(payload_str)
    elif handler == 'tornado':
        if TornadoAsyncHTTPClient is None:
            log.error('Unable to find tornado')
            return
        _send_payload_tornado(payload_str, access_token)
    elif handler == 'gae':
        if AppEngineFetch is None:
            log.error('Unable to find AppEngine URLFetch module')
            return
        _send_payload_appengine(payload_str, access_token)
    elif handler == 'twisted':
        if treq is None:
            log.error('Unable to find Treq')
            return
        _send_payload_twisted(payload_str, access_token)
    else:
        # default to 'thread'
        thread = threading.Thread(target=_send_payload, args=(payload_str, access_token))
        _threads.put(thread)
        thread.start()