Merge branch 'core-instrumentation-aiohttp-client-v0.15b0'

This commit is contained in:
Nathaniel Ruiz Nowell
2020-11-02 11:22:45 -08:00
4 changed files with 20 additions and 39 deletions

View File

@ -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

View File

@ -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)

View File

@ -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"

View File

@ -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",