mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 05:32:30 +08:00
Merge pull request #93 from NathanielRN/move-instrumentation-aiohttp-client
Move instrumentation aiohttp client
This commit is contained in:
@ -39,8 +39,8 @@ package_dir=
|
||||
=src
|
||||
packages=find_namespace:
|
||||
install_requires =
|
||||
opentelemetry-api == 0.15.dev0
|
||||
opentelemetry-instrumentation == 0.15.dev0
|
||||
opentelemetry-api == 0.15b0
|
||||
opentelemetry-instrumentation == 0.15b0
|
||||
aiohttp ~= 3.0
|
||||
wrapt >= 1.0.0, < 2.0.0
|
||||
|
||||
|
@ -74,11 +74,11 @@ from opentelemetry import propagators, trace
|
||||
from opentelemetry.instrumentation.aiohttp_client.version import __version__
|
||||
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
||||
from opentelemetry.instrumentation.utils import (
|
||||
http_status_to_canonical_code,
|
||||
http_status_to_status_code,
|
||||
unwrap,
|
||||
)
|
||||
from opentelemetry.trace import SpanKind, TracerProvider, get_tracer
|
||||
from opentelemetry.trace.status import Status, StatusCanonicalCode
|
||||
from opentelemetry.trace.status import Status, StatusCode
|
||||
|
||||
_UrlFilterT = typing.Optional[typing.Callable[[str], str]]
|
||||
_SpanNameT = typing.Optional[
|
||||
@ -194,9 +194,7 @@ def create_trace_config(
|
||||
|
||||
if trace_config_ctx.span.is_recording():
|
||||
trace_config_ctx.span.set_status(
|
||||
Status(
|
||||
http_status_to_canonical_code(int(params.response.status))
|
||||
)
|
||||
Status(http_status_to_status_code(int(params.response.status)))
|
||||
)
|
||||
trace_config_ctx.span.set_attribute(
|
||||
"http.status_code", params.response.status
|
||||
@ -214,22 +212,8 @@ def create_trace_config(
|
||||
if trace_config_ctx.span is None:
|
||||
return
|
||||
|
||||
if trace_config_ctx.span.is_recording():
|
||||
if isinstance(
|
||||
params.exception,
|
||||
(aiohttp.ServerTimeoutError, aiohttp.TooManyRedirects),
|
||||
):
|
||||
status = StatusCanonicalCode.DEADLINE_EXCEEDED
|
||||
# Assume any getaddrinfo error is a DNS failure.
|
||||
elif isinstance(
|
||||
params.exception, aiohttp.ClientConnectorError
|
||||
) and isinstance(params.exception.os_error, socket.gaierror):
|
||||
# DNS resolution failed
|
||||
status = StatusCanonicalCode.UNKNOWN
|
||||
else:
|
||||
status = StatusCanonicalCode.UNAVAILABLE
|
||||
|
||||
trace_config_ctx.span.set_status(Status(status))
|
||||
if trace_config_ctx.span.is_recording() and params.exception:
|
||||
trace_config_ctx.span.set_status(Status(StatusCode.ERROR))
|
||||
trace_config_ctx.span.record_exception(params.exception)
|
||||
_end_trace(trace_config_ctx)
|
||||
|
||||
|
@ -12,4 +12,4 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
__version__ = "0.15.dev0"
|
||||
__version__ = "0.15b0"
|
||||
|
@ -31,7 +31,7 @@ from opentelemetry.instrumentation.aiohttp_client import (
|
||||
AioHttpClientInstrumentor,
|
||||
)
|
||||
from opentelemetry.test.test_base import TestBase
|
||||
from opentelemetry.trace.status import StatusCanonicalCode
|
||||
from opentelemetry.trace.status import StatusCode
|
||||
|
||||
|
||||
def run_with_test_server(
|
||||
@ -61,7 +61,7 @@ class TestAioHttpIntegration(TestBase):
|
||||
[
|
||||
(
|
||||
span.name,
|
||||
(span.status.canonical_code, span.status.description),
|
||||
(span.status.status_code, span.status.description),
|
||||
dict(span.attributes),
|
||||
)
|
||||
for span in self.memory_exporter.get_finished_spans()
|
||||
@ -111,13 +111,10 @@ class TestAioHttpIntegration(TestBase):
|
||||
|
||||
def test_status_codes(self):
|
||||
for status_code, span_status in (
|
||||
(HTTPStatus.OK, StatusCanonicalCode.OK),
|
||||
(HTTPStatus.TEMPORARY_REDIRECT, StatusCanonicalCode.OK),
|
||||
(HTTPStatus.SERVICE_UNAVAILABLE, StatusCanonicalCode.UNAVAILABLE),
|
||||
(
|
||||
HTTPStatus.GATEWAY_TIMEOUT,
|
||||
StatusCanonicalCode.DEADLINE_EXCEEDED,
|
||||
),
|
||||
(HTTPStatus.OK, StatusCode.UNSET),
|
||||
(HTTPStatus.TEMPORARY_REDIRECT, StatusCode.UNSET),
|
||||
(HTTPStatus.SERVICE_UNAVAILABLE, StatusCode.ERROR),
|
||||
(HTTPStatus.GATEWAY_TIMEOUT, StatusCode.ERROR,),
|
||||
):
|
||||
with self.subTest(status_code=status_code):
|
||||
host, port = self._http_request(
|
||||
@ -188,7 +185,7 @@ class TestAioHttpIntegration(TestBase):
|
||||
[
|
||||
(
|
||||
expected,
|
||||
(StatusCanonicalCode.OK, None),
|
||||
(StatusCode.UNSET, None),
|
||||
{
|
||||
"component": "http",
|
||||
"http.method": method,
|
||||
@ -220,7 +217,7 @@ class TestAioHttpIntegration(TestBase):
|
||||
[
|
||||
(
|
||||
"HTTP GET",
|
||||
(StatusCanonicalCode.OK, None),
|
||||
(StatusCode.UNSET, None),
|
||||
{
|
||||
"component": "http",
|
||||
"http.method": "GET",
|
||||
@ -238,8 +235,8 @@ class TestAioHttpIntegration(TestBase):
|
||||
trace_configs = [aiohttp_client.create_trace_config()]
|
||||
|
||||
for url, expected_status in (
|
||||
("http://this-is-unknown.local/", StatusCanonicalCode.UNKNOWN),
|
||||
("http://127.0.0.1:1/", StatusCanonicalCode.UNAVAILABLE),
|
||||
("http://this-is-unknown.local/", StatusCode.ERROR),
|
||||
("http://127.0.0.1:1/", StatusCode.ERROR),
|
||||
):
|
||||
with self.subTest(expected_status=expected_status):
|
||||
|
||||
@ -286,7 +283,7 @@ class TestAioHttpIntegration(TestBase):
|
||||
[
|
||||
(
|
||||
"HTTP GET",
|
||||
(StatusCanonicalCode.DEADLINE_EXCEEDED, None),
|
||||
(StatusCode.ERROR, None),
|
||||
{
|
||||
"component": "http",
|
||||
"http.method": "GET",
|
||||
@ -316,7 +313,7 @@ class TestAioHttpIntegration(TestBase):
|
||||
[
|
||||
(
|
||||
"HTTP GET",
|
||||
(StatusCanonicalCode.DEADLINE_EXCEEDED, None),
|
||||
(StatusCode.ERROR, None),
|
||||
{
|
||||
"component": "http",
|
||||
"http.method": "GET",
|
||||
|
Reference in New Issue
Block a user