예제 #1
0
 def __init__(self):
     super(GunicornInstrumentor, self).__init__(
         {
             'gunicorn.arbiter.Arbiter.manage_workers': function_wrapper_factory(_manage_workers, enable_if=None),
             'gunicorn.workers.base.Worker.notify': function_wrapper_factory(_worker_notify, enable_if=None),
         }
     )
예제 #2
0
 def __init__(self):
     super(CherryPyInstrumentor, self).__init__(
         {
             'cherrypy._cptree.Application.__call__': function_wrapper_factory(_cherrypy_wsgi_call, enable_if=None,
                                                                               state='web'),
             'cherrypy._cprequest.Request.run': function_wrapper_factory(_cherrypy_respond_wrapper, enable_if=None,
                                                                         state='wsgi'),
         }
     )
예제 #3
0
 def __init__(self):
     super(FlaskInstrumentor, self).__init__(
         {
             'flask.app.Flask.__init__': function_wrapper_factory(_flask_app, enable_if=None),
             'flask.app.Flask.dispatch_request': function_wrapper_factory(_flask_dispatch, enable_if=None,
                                                                          state='web'),
             'flask.app.Flask.__call__': function_wrapper_factory(_flask_wsgi_call, enable_if=None, state='wsgi'),
         }
     )
예제 #4
0
 def __init__(self):
     super(CherryPyInstrumentor, self).__init__({
         'cherrypy._cptree.Application.__call__':
         function_wrapper_factory(_cherrypy_wsgi_call,
                                  enable_if=None,
                                  state='web'),
         'cherrypy._cprequest.Request.run':
         function_wrapper_factory(_cherrypy_respond_wrapper,
                                  enable_if=None,
                                  state='wsgi'),
     })
예제 #5
0
 def __init__(self):
     super(FlaskInstrumentor, self).__init__({
         'flask.app.Flask.__init__':
         function_wrapper_factory(_flask_app, enable_if=None),
         'flask.app.Flask.dispatch_request':
         function_wrapper_factory(_flask_dispatch,
                                  enable_if=None,
                                  state='web'),
         'flask.app.Flask.__call__':
         function_wrapper_factory(_flask_wsgi_call,
                                  enable_if=None,
                                  state='wsgi'),
     })
예제 #6
0
 def __init__(self):
     super(Urllib2Instrumentor, self).__init__(
         {
             'urllib2.OpenerDirector.open': function_wrapper_factory(_urllib2_open, disable_if='model')
         }
     )
     self.major_versions = [2]
예제 #7
0
    def test_function_wrapper(self):
        state = {
            'foo': 1
        }

        def function_wrapper(f):
            def decorator(*args, **kwargs):
                state['before'] = True
                decorator_ret = f(*args, **kwargs)
                state['after'] = True
                return decorator_ret

            return decorator

        wrapper = instrument.function_wrapper_factory(function_wrapper, enable_if=None)

        def wrapped_function(v):
            state['wrapped'] = v

        wrapped = wrapper(wrapped_function)
        wrapped_value = 1234567
        wrapped(wrapped_value)
        self.assertTrue(state.get('before'))
        self.assertTrue(state.get('after'))
        self.assertEqual(wrapped_value, state.get('wrapped'))
예제 #8
0
 def __init__(self):
     super(RequestsInstrumentor, self).__init__(
         {
             # External calls are not recorded when in the context of a model operation
             'requests.api.request': function_wrapper_factory(requests_request_time, state='external',
                                                              disable_if='model')
         }
     )
예제 #9
0
 def __init__(self):
     super(RequestsInstrumentor, self).__init__({
         # External calls are not recorded when in the context of a model operation
         'requests.sessions.Session.send':
         function_wrapper_factory(requests_request_time,
                                  state='external',
                                  disable_if='model')
     })
예제 #10
0
class DjangoCoreInstrumentor(BaseInstrumentor):
    modules = {'django.core.handlers.wsgi': ['WSGIHandler']}
    _wrapped = {
        'django.core.handlers.wsgi.WSGIHandler.__call__':
            function_wrapper_factory(_django_wsgi_call, state='wsgi', enable_if=None),
    }

    def __init__(self):
        super(DjangoCoreInstrumentor, self).__init__()

    def run(self):
        try:
            instrument_methods(self._wrapped)
            logger.debug('django core instrumentation complete')
        except:
            logger.exception('problem with django core instrumentation')
            raise
예제 #11
0
    def test_function_wrapper(self):
        state = {'foo': 1}

        def function_wrapper(f):
            def decorator(*args, **kwargs):
                state['before'] = True
                decorator_ret = f(*args, **kwargs)
                state['after'] = True
                return decorator_ret

            return decorator

        wrapper = instrument.function_wrapper_factory(function_wrapper,
                                                      enable_if=None)

        def wrapped_function(v):
            state['wrapped'] = v

        wrapped = wrapper(wrapped_function)
        wrapped_value = 1234567
        wrapped(wrapped_value)
        self.assertTrue(state.get('before'))
        self.assertTrue(state.get('after'))
        self.assertEqual(wrapped_value, state.get('wrapped'))
예제 #12
0
 def __init__(self):
     super(Urllib2Instrumentor, self).__init__({
         'urllib2.OpenerDirector.open':
         function_wrapper_factory(_urllib2_open, disable_if='model')
     })
     self.major_versions = [2]