Adding initial aiohttp client.
This module is only supported on Python3.5, which is the oldest supported by
aiohttp.
Co-authored-by: Yusuke Tsutsumi <yusuke@tsutsumi.io>
Adding initial aiohttp client.
This module is only supported on Python3.5, which is the oldest supported by
aiohttp.
Co-authored-by: Yusuke Tsutsumi <yusuke@tsutsumi.io>
The requests integration is named http-requests because at the time it was created there were some problems with pylint.
other integrations are using opentelemetry.ext.integration without problems, tests are passing without issue, even renamed.
The requests integration is named http-requests because at the time it was created there were some problems with pylint.
other integrations are using opentelemetry.ext.integration without problems, tests are passing without issue, even renamed.
Currently builds take roughly 15 minutes, as the longest job (pypy3) isn't
kicked off until one of the other jobs is finished running (max 5 concurrent
jobs). Prioritizing the longer jobs first should reduce the build time by about
5 minutes.
The current Pymongo integration uses the monitoring.register() [1] to hook
the different internal calls of Pymongo. This integration doesn't allow to
unregister a monitor. This commit workaround that limitation by adding an
enable flag to the CommandTracer class and adds a logic to disable the
integration. This solution is not perfect becasue there will be some overhead
even when the instrumentation is disabled, but that's what we can do with
the current approach.
[1] https://api.mongodb.com/python/current/api/pymongo/monitoring.html#pymongo.monitoring.register
Co-authored-by: Alex Boten <aboten@lightstep.com>
Implement the BaseInstrumentor interface to make this library compatible with the opentelemetry-auto-instr command.
There is an issue about getting the span when the global tracer provider hasn't been configured, this should be changed in the future once we extend the opentelemetry-auto-instr command to also configure the SDK.
Porting the existing redis instrumentation from the contrib repo to using the OpenTelemetry API and the OpenTelemetry Auto-instrumentation Instrumentor interface.
Similiar to the sqlalchemy PR, the main thing that will need updating is to remove the patch/unpatch methods once the instrumentor interface changes have been merged.
This is replacing open-telemetry/opentelemetry-python-contrib#21
Co-authored-by: Mauricio Vásquez <mauricio@kinvolk.io>
Co-authored-by: Leighton Chen <lechen@microsoft.com>
Co-authored-by: Diego Hurtado <ocelotl@users.noreply.github.com>
Co-authored-by: Chris Kleinknecht <libc@google.com>
Fixes#613
some packages depend on the newest dev version of dbapi, which isn't published yet
when a package in a virtualenv is installed, it will attempt to install those dependencies, which searches on pypi
Installing the local package ensures that 0.7 is installed, so pip sees that and skips trying to resolve against pypi (when it won't find the version).
Integration for PyMySQL.
Fixes some documentation as well for other db integrations. Leverages dbapi.
Co-authored-by: Mauricio Vásquez <mauricio@kinvolk.io>
Update tests to use TestBase as described on #303.
Co-authored-by: Yusuke Tsutsumi <yusuke@tsutsumi.io>
Co-authored-by: Chris Kleinknecht <libc@google.com>
Adding a TestBase class which wraps a tracer provider that is configured with a memory span
exporter. This class inherits from unitest.TestCase, hence other test classes
can inherit from it to get access to the underlying memory span exporter and
tracer provider.
Adding a mock propagator that could be used for testing propagation in different packages.
It was implemented in the opentracing-shim and this commit moves it to a generic
place.
Adding disable_session(), which can be used to disable the instrumentation on a single
requests' session object.
opentelemetry-ext-testutil is a package with shared test classes used by ext packages (right now only opentelemetry-ext-flask). We don't release this package, just import it in other tests.
Right now, on each release, we build everything in ext/. This means whoever does the release has to remember to exclude this package when they push the others to PyPI.
This moves the files and package:
Move files ext/opentelemetry-ext-testutil -> tests/util
Move package opentelemetry.ext.testutil -> opentelemetry.test
This makes maintainers' lives easier, but it does mean that other packages that use testutils will have to install install the opentelemetry.test package from source. But this is already the case since we don't publish opentelemetry-ext-testutil.
we move shared test code back into the main repo until we move a package that depends on it into a separate repo, at which point we'll have to put this code in its own top-level package.
Adding some instructions on how to port from the reference directory. More updates will be needed as tests are added.
Co-Authored-By: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Co-authored-by: Mauricio Vásquez <mauricio@kinvolk.io>
Co-authored-by: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Move tox and other configuration files to root folder. Add eachdist to make it
easier to handle operations with different packages.
The eachdist is taken from opentelemetry but slighty modified to avoid ignoring
a given path.
This is a port of grpcio-opentracing, and borrows from opencensus-ext-grpc. It
adds client and server interceptors that wrap each request in a span and use
the new context API to inject/extract the traceparent header to/from gRPC
metadata.
Co-authored-by: alrex <alrex.boten@gmail.com>
Co-authored-by: Mauricio Vásquez <mauricio@kinvolk.io>
Co-authored-by: Mario Jonke <mario.jonke@dynatrace.com>
Co-authored-by: Daniel González <danielgonzalezlopes@gmail.com>
Co-authored-by: Alex Boten <aboten@lightstep.com>
Co-authored-by: Yusuke Tsutsumi <yusuke@tsutsumi.io>
Adding an autoinstrumentation mechanism and a Flask instrumentor (an instrumentor is a class that implements the _instrument and _uninstrument methods).
It works like this:
A console command is defined. This makes it possible to run a command named opentelemetry-auto-instrumentation that will execute this function.
When the opentelemetry-auto-instrumentation command is executed, then the instrument method of the different instrumentors is called, which are made available via an entry-point.
2.In the case of the Flask instrumentor, the original flask.Flask gets replaced with _InstrumentedFlask (in this case, the Flask instrumentor uses monkey patching to perform the instrumentation, nevertheless, monkey patching is not always the method used to do this, so the name instrumentor is preferred over patcher).
Once all instrumentation is enabled, the app is executed.
Co-Authored-By: Mauricio Vásquez <mauricio@kinvolk.io>
Co-authored-by: Chris Kleinknecht <libc@google.com>
Add a test to ensure readmes render properly
Also adds README.rst for testutil package to pass new test.
Co-authored-by: Christian Neumüller <christian+github@neumueller.me>
Add a test to ensure readmes render properly
Also adds README.rst for testutil package to pass new test.
Co-authored-by: Christian Neumüller <christian+github@neumueller.me>
This commit moves the text on the readmes of the external packages to their
source code as a docstring. This improves the generated documentation and helps
to consolidate the documentation in a single place.
Also unify the readmes present on each package to include a 1 line description, installation instructions and a link to the online documentation. This small readme will be the one shown on Github and on PyPI.
Also change the examples structure to have the following examples:
- basic meter & tracer
- http integration
- jaeger, prometheus, otcollector{tracer, metrics}
- opentracing shim
Co-authored-by: alrex <alrex.boten@gmail.com>
Co-authored-by: Diego Hurtado <ocelotl@users.noreply.github.com>
OpenTelemetry doesn't support Python 2.7. Removing it from the tests and removing contrib packages that don't support Python 3. In this change:
- removing pylons contrib
- removing mysqldb contrib
- updating minimum versions of flask (>=1.0), gevent (>=1.1)
Signed-off-by: Alex Boten <aboten@lightstep.com>
- Creates a tree structure for documentation, it allows to organize it better
from a developer point of view and also the rendered documentation should be
easier to navigate.
- Moves partially the main readme to be included in the online docs, the main
readme will be updated to have a link to avoid duplicated content)
- Moves the examples folder to the docs, so they can be accessed through the
online documentation. Creates a new pair of "macros" to create links to
specific versions, scm_web & scm_raw_web.
Co-authored-by: Chris Kleinknecht <libc@google.com>
- Creates a tree structure for documentation, it allows to organize it better
from a developer point of view and also the rendered documentation should be
easier to navigate.
- Moves partially the main readme to be included in the online docs, the main
readme will be updated to have a link to avoid duplicated content)
- Moves the examples folder to the docs, so they can be accessed through the
online documentation. Creates a new pair of "macros" to create links to
specific versions, scm_web & scm_raw_web.
Co-authored-by: Chris Kleinknecht <libc@google.com>
This change implements the Context API portion of OTEP #66. The
CorrelationContext API and Propagation API changes will come in future PRs.
We're leveraging entrypoints to support other implementations of the Context
API if/when necessary. For backwards compatibility, this change uses
aiocontextvars for Python versions older than 3.7.
Co-authored-by: Diego Hurtado <ocelotl@users.noreply.github.com>
Co-authored-by: Mauricio Vásquez <mauricio@kinvolk.io>