예제 #1
0
 def __init__(self):
     super(MysqlInstrumentor, self).__init__()
     self.set_wrapped(
         {
             'MySQLdb.cursors.Cursor.execute':
                 default_context_wrapper_factory('data.mysql.execute.', mapping={'resource': 1},
                                                 state='data.mysql', disable_if='model'),
             'MySQLdb.cursors.Cursor.callproc':
                 default_context_wrapper_factory('data.mysql.callproc.', mapping={'resource': 1},
                                                 state='data.mysql', disable_if='model'),
         }
     )
예제 #2
0
 def __init__(self):
     super(MysqlInstrumentor, self).__init__()
     self.set_wrapped(
         {
             'MySQLdb.cursors.Cursor.execute':
                 default_context_wrapper_factory('data.mysql.execute.', mapping={'resource': 1},
                                                 state='data.mysql', disable_if='model'),
             'MySQLdb.cursors.Cursor.callproc':
                 default_context_wrapper_factory('data.mysql.callproc.', mapping={'resource': 1},
                                                 state='data.mysql', disable_if='model'),
         }
     )
예제 #3
0
 def __init__(self):
     super(PykafkaInstrumentor, self).__init__()
     self.set_wrapped(
         {
             # Kafka (pykafka)
             'pykafka.simpleconsumer.SimpleConsumer.consume':
                 default_context_wrapper_factory('messaging.kafka.consume.',
                                                 mapping={'resource': 'self._topic._name'},
                                                 state='messaging.kafka', disable_if='model'),
             'pykafka.Producer.produce':
                 default_context_wrapper_factory('messaging.kafka.produce.',
                                                 mapping={'resource': 'self._topic._name'},
                                                 state='messaging.kafka', disable_if='model'),
         }
     )
예제 #4
0
 def __init__(self):
     super(PykafkaInstrumentor, self).__init__()
     self.set_wrapped({
         # Kafka (pykafka)
         'pykafka.simpleconsumer.SimpleConsumer.consume':
         default_context_wrapper_factory(
             'messaging.kafka.consume.',
             mapping={'resource': 'self._topic._name'},
             state='messaging.kafka',
             disable_if='model'),
         'pykafka.Producer.produce':
         default_context_wrapper_factory(
             'messaging.kafka.produce.',
             mapping={'resource': 'self._topic._name'},
             state='messaging.kafka',
             disable_if='model'),
     })
예제 #5
0
 def __init__(self):
     super(ElasticsearchInstrumentor, self).__init__()
     self.set_wrapped(
         {
             'elasticsearch.client.Elasticsearch.create':
                 default_context_wrapper_factory('data.es.create.', mapping={'resource': '2|doc_type'},
                                                 state='data.elasticsearch', disable_if='model'),
             'elasticsearch.client.Elasticsearch.get':
                 default_context_wrapper_factory('data.es.get.', mapping={'resource': '2|doc_type'},
                                                 state='data.elasticsearch', disable_if='model'),
             'elasticsearch.client.Elasticsearch.index':
                 default_context_wrapper_factory('data.es.index.', mapping={'resource': '2|doc_type'},
                                                 state='data.elasticsearch', disable_if='model'),
             'elasticsearch.client.Elasticsearch.search':
                 default_context_wrapper_factory('data.es.search.', mapping={'resource': '2|doc_type'},
                                                 state='data.elasticsearch', disable_if='model'),
             'elasticsearch.client.Elasticsearch.delete':
                 default_context_wrapper_factory('data.es.delete.', mapping={'resource': '2|doc_type'},
                                                 state='data.elasticsearch', disable_if='model'),
         }
     )
예제 #6
0
    def run(self):
        self.set_overridden(
            {
                'psycopg2': {
                    'connect': {
                        'returns': 'psycopg2.extensions.connection'
                    }
                },
                'psycopg2.extensions.connection': {
                    'cursor': {
                        'returns': 'psycopg2.extensions.cursor'
                    }
                },
            }
        )

        cursor_path = 'psycopg2.extensions.cursor.%s'

        def func_name(e):
            return e.split('(')[0]

        def func_args(e):
            return re.findall('[^(,)]+', e)[1:]

        wrapped = {
            cursor_path % func_name(m):
                default_context_wrapper_factory('data.psycopg2.%s.' % func_name(m),
                                                mapping={a: 1 for a in func_args(m)},
                                                state='data.postgres', disable_if='model')
            for m in 'callproc(resource),execute(resource),executemany(resource),fetchone,fetchmany,fetchall,'
                     'nextset'.split(',')
            }

        wrapped['psycopg2.extensions.connection.cursor'] = wrap_returned_instance_decorator(
            'psycopg2.extensions.cursor', wrapped
        )

        self.set_wrapped(
            wrapped
        )

        super(Psycopg2Instrumentor, self).run()
예제 #7
0
    def run(self):
        self.set_overridden(
            {
                'sqlite3': {
                    'connect': {
                        'returns': 'sqlite3.Connection'
                    }
                },
                'sqlite3.Connection': {
                    'cursor': {
                        'returns': 'sqlite3.Cursor'
                    }
                }
            }
        )

        cursor_path = 'sqlite3.Cursor.%s'

        def func_name(e):
            return e.split('(')[0]

        def func_args(e):
            return re.findall('[^(,)]+', e)[1:]

        wrapped = {cursor_path % func_name(m): default_context_wrapper_factory('data.sqlite.%s.' % func_name(m),
                                                                               mapping={a: 1 for a in func_args(m)},
                                                                               state='data.sqlite',
                                                                               disable_if='model') for m in
                   'execute(resource),executemany(resource),fetchone,fetchmany,fetchall'.split(',')}

        wrapped['sqlite3.Connection.cursor'] = wrap_returned_instance_decorator(
            'sqlite3.Cursor', wrapped
        )

        self.set_wrapped(
            wrapped
        )

        super(SqliteInstrumentor, self).run()
예제 #8
0
 def __init__(self):
     super(DjangoDbInstrumentor, self).__init__()
     for method in [m.strip() for m in self._query_set_methods.split(',')]:
         self._wrapped['django.db.models.query.QuerySet.%s' % method] = default_context_wrapper_factory(
             'model.%s.' % method,
             state='model')
예제 #9
0
 def __init__(self):
     super(DjangoInstrumentor, self).__init__()
     for method in [m.strip() for m in self._query_set_methods.split(",")]:
         self._wrapped["django.db.models.query.QuerySet.%s" % method] = default_context_wrapper_factory(
             "model.%s." % method, state="model"
         )