From 44fbabfe83b34af048cd9447626257c3d57db80f Mon Sep 17 00:00:00 2001 From: Hector Hernandez Guzman Date: Thu, 12 Nov 2020 12:13:40 -0800 Subject: [PATCH 1/3] Updating to latest version of OpenTelemetry --- .../azuremonitor/export/trace/__init__.py | 14 +-- .../setup.py | 4 +- .../tests/trace/test_trace.py | 94 +++++++++---------- 3 files changed, 56 insertions(+), 56 deletions(-) diff --git a/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/microsoft/opentelemetry/exporter/azuremonitor/export/trace/__init__.py b/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/microsoft/opentelemetry/exporter/azuremonitor/export/trace/__init__.py index c1aad0f248a3..05969d3d99ee 100644 --- a/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/microsoft/opentelemetry/exporter/azuremonitor/export/trace/__init__.py +++ b/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/microsoft/opentelemetry/exporter/azuremonitor/export/trace/__init__.py @@ -8,7 +8,7 @@ from opentelemetry.sdk.trace.export import SpanExporter, SpanExportResult from opentelemetry.sdk.util import ns_to_iso_str from opentelemetry.trace import Span, SpanKind -from opentelemetry.trace.status import StatusCanonicalCode +from opentelemetry.trace.status import StatusCode from microsoft.opentelemetry.exporter.azuremonitor import utils from microsoft.opentelemetry.exporter.azuremonitor._generated.models import ( @@ -80,9 +80,9 @@ def convert_span_to_envelope(span: Span) -> TelemetryItem: data = RequestData( id="{:016x}".format(span.context.span_id), duration=utils.ns_to_duration(span.end_time - span.start_time), - response_code=str(span.status.canonical_code.value), - success=span.status.canonical_code - == StatusCanonicalCode.OK, # Modify based off attributes or Status + response_code=str(span.status.status_code.value), + success=span.status.status_code + == StatusCode.OK, # Modify based off attributes or Status properties={}, ) envelope.data = MonitorBase(base_data=data, base_type="RequestData") @@ -108,10 +108,10 @@ def convert_span_to_envelope(span: Span) -> TelemetryItem: data = RemoteDependencyData( name=span.name, id="{:016x}".format(span.context.span_id), - result_code=str(span.status.canonical_code.value), + result_code=str(span.status.status_code.value), duration=utils.ns_to_duration(span.end_time - span.start_time), - success=span.status.canonical_code - == StatusCanonicalCode.OK, # Modify based off attributes or Status + success=span.status.status_code + == StatusCode.OK, # Modify based off attributes or Status properties={}, ) envelope.data = MonitorBase( diff --git a/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/setup.py b/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/setup.py index c6f58c4d5d02..de3dee6031ef 100644 --- a/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/setup.py +++ b/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/setup.py @@ -75,7 +75,7 @@ install_requires=[ "azure-core<2.0.0,>=1.6.0", "msrest>=0.6.10", - "opentelemetry-api == 0.13b0", - "opentelemetry-sdk == 0.13b0" + "opentelemetry-api == 0.15b0", + "opentelemetry-sdk == 0.15b0" ], ) diff --git a/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py b/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py index cd504813b18f..682a2cae629b 100644 --- a/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py +++ b/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py @@ -9,10 +9,10 @@ from unittest import mock # pylint: disable=import-error -from opentelemetry.sdk.trace import Span +from opentelemetry.sdk import trace from opentelemetry.sdk.trace.export import SpanExportResult from opentelemetry.trace import Link, SpanContext, SpanKind -from opentelemetry.trace.status import Status, StatusCanonicalCode +from opentelemetry.trace.status import Status, StatusCode from microsoft.opentelemetry.exporter.azuremonitor.export import ExportResult from microsoft.opentelemetry.exporter.azuremonitor.export.trace import ( @@ -100,7 +100,7 @@ def test_export_failure(self): with mock.patch( "microsoft.opentelemetry.exporter.azuremonitor.export.trace.AzureMonitorSpanExporter._transmit" ) as transmit: # noqa: E501 - test_span = Span( + test_span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -117,7 +117,7 @@ def test_export_failure(self): def test_export_success(self): exporter = self._exporter - test_span = Span( + test_span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -140,7 +140,7 @@ def test_export_success(self): @mock.patch("microsoft.opentelemetry.exporter.azuremonitor.export.trace.logger") def test_export_exception(self, logger_mock): - test_span = Span( + test_span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -161,7 +161,7 @@ def test_export_exception(self, logger_mock): def test_export_not_retryable(self): exporter = self._exporter - test_span = Span( + test_span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -219,7 +219,7 @@ def test_span_to_envelope(self): end_time = start_time + 1001000000 # SpanKind.CLIENT HTTP - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -242,7 +242,7 @@ def test_span_to_envelope(self): ) span.start(start_time=start_time) span.end(end_time=end_time) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) envelope = exporter._span_to_envelope(span) self.assertEqual(envelope.instrumentation_key, "12345678-1234-5678-abcd-12345678abcd") @@ -270,7 +270,7 @@ def test_span_to_envelope(self): self.assertEqual(envelope.data.base_type, "RemoteDependencyData") # SpanKind.CLIENT unknown type - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -286,7 +286,7 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.CLIENT, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) @@ -310,7 +310,7 @@ def test_span_to_envelope(self): self.assertEqual(envelope.data.base_type, "RemoteDependencyData") # SpanKind.CLIENT missing method - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -330,7 +330,7 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.CLIENT, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) @@ -360,7 +360,7 @@ def test_span_to_envelope(self): self.assertEqual(envelope.data.base_type, "RemoteDependencyData") # SpanKind.SERVER HTTP - 200 request - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -383,7 +383,7 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.SERVER, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) @@ -415,7 +415,7 @@ def test_span_to_envelope(self): self.assertEqual(envelope.data.base_type, "RequestData") # SpanKind.SERVER HTTP - Failed request - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -438,7 +438,7 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.SERVER, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) @@ -470,7 +470,7 @@ def test_span_to_envelope(self): self.assertEqual(envelope.data.base_type, "RequestData") # SpanKind.SERVER unknown type - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -493,7 +493,7 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.SERVER, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) @@ -515,7 +515,7 @@ def test_span_to_envelope(self): self.assertEqual(envelope.data.base_type, "RequestData") # SpanKind.INTERNAL - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -531,7 +531,7 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.INTERNAL, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) @@ -555,7 +555,7 @@ def test_span_to_envelope(self): self.assertEqual(envelope.data.base_type, "RemoteDependencyData") # Attributes - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -577,7 +577,7 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.CLIENT, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) @@ -598,7 +598,7 @@ def test_span_to_envelope(self): ) ) ) - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -619,7 +619,7 @@ def test_span_to_envelope(self): links=links, kind=SpanKind.CLIENT, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) @@ -630,7 +630,7 @@ def test_span_to_envelope(self): self.assertEqual(json_dict["id"], "a6f5d48acb4d31da") # Status - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -651,14 +651,14 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.SERVER, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) self.assertEqual(envelope.data.base_data.response_code, "500") self.assertFalse(envelope.data.base_data.success) - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -679,14 +679,14 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.CLIENT, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) self.assertEqual(envelope.data.base_data.result_code, "500") self.assertFalse(envelope.data.base_data.success) - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -706,14 +706,14 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.SERVER, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) self.assertEqual(envelope.data.base_data.response_code, "0") self.assertTrue(envelope.data.base_data.success) - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -733,14 +733,14 @@ def test_span_to_envelope(self): links=[], kind=SpanKind.CLIENT, ) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) span.start(start_time=start_time) span.end(end_time=end_time) envelope = exporter._span_to_envelope(span) self.assertEqual(envelope.data.base_data.result_code, "0") self.assertTrue(envelope.data.base_data.success) - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -762,12 +762,12 @@ def test_span_to_envelope(self): ) span.start(start_time=start_time) span.end(end_time=end_time) - span.status = Status(canonical_code=StatusCanonicalCode.UNKNOWN) + span.status = Status(status_code=StatusCode.UNSET) envelope = exporter._span_to_envelope(span) - self.assertEqual(envelope.data.base_data.response_code, "2") + self.assertEqual(envelope.data.base_data.response_code, "1") self.assertFalse(envelope.data.base_data.success) - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -789,13 +789,13 @@ def test_span_to_envelope(self): ) span.start(start_time=start_time) span.end(end_time=end_time) - span.status = Status(canonical_code=StatusCanonicalCode.UNKNOWN) + span.status = Status(status_code=StatusCode.UNSET) envelope = exporter._span_to_envelope(span) self.assertEqual(envelope.data.base_data.result_code, "2") self.assertFalse(envelope.data.base_data.success) # Server route attribute - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -820,7 +820,7 @@ def test_span_to_envelope(self): ) span.start(start_time=start_time) span.end(end_time=end_time) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) envelope = exporter._span_to_envelope(span) self.assertEqual( envelope.data.base_data.properties["request.name"], @@ -832,7 +832,7 @@ def test_span_to_envelope(self): ) # Server method attribute missing - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -855,12 +855,12 @@ def test_span_to_envelope(self): ) span.start(start_time=start_time) span.end(end_time=end_time) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) envelope = exporter._span_to_envelope(span) self.assertIsNone(envelope.data.base_data.name) # Server route attribute missing - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -884,7 +884,7 @@ def test_span_to_envelope(self): ) span.start(start_time=start_time) span.end(end_time=end_time) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) envelope = exporter._span_to_envelope(span) self.assertEqual(envelope.data.base_data.name, "GET") self.assertEqual( @@ -897,7 +897,7 @@ def test_span_to_envelope(self): ) # Server route and path attribute missing - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -920,7 +920,7 @@ def test_span_to_envelope(self): ) span.start(start_time=start_time) span.end(end_time=end_time) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) envelope = exporter._span_to_envelope(span) self.assertIsNone( envelope.data.base_data.properties.get("request.name") @@ -931,7 +931,7 @@ def test_span_to_envelope(self): ) # Server http.url missing - span = Span( + span = trace._Span( name="test", context=SpanContext( trace_id=36873507687745823477771305566750195431, @@ -955,7 +955,7 @@ def test_span_to_envelope(self): ) span.start(start_time=start_time) span.end(end_time=end_time) - span.status = Status(canonical_code=StatusCanonicalCode.OK) + span.status = Status(status_code=StatusCode.OK) envelope = exporter._span_to_envelope(span) self.assertIsNone(envelope.data.base_data.url) self.assertIsNone( From 2c2a5f855df923241430918b107a1b1dbf5b8127 Mon Sep 17 00:00:00 2001 From: Hector Hernandez Guzman Date: Thu, 12 Nov 2020 12:39:15 -0800 Subject: [PATCH 2/3] Fix broken test --- .../tests/trace/test_trace.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py b/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py index 682a2cae629b..eae5e6825da5 100644 --- a/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py +++ b/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py @@ -791,7 +791,7 @@ def test_span_to_envelope(self): span.end(end_time=end_time) span.status = Status(status_code=StatusCode.UNSET) envelope = exporter._span_to_envelope(span) - self.assertEqual(envelope.data.base_data.result_code, "2") + self.assertEqual(envelope.data.base_data.result_code, "1") self.assertFalse(envelope.data.base_data.success) # Server route attribute From 44041a58b1bca35d90a1a8bea7e5a51186e708f5 Mon Sep 17 00:00:00 2001 From: Hector Hernandez Guzman Date: Thu, 12 Nov 2020 13:28:58 -0800 Subject: [PATCH 3/3] Adding try/catch for os.listdir --- .../tests/trace/test_trace.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py b/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py index eae5e6825da5..8605299089b3 100644 --- a/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py +++ b/sdk/monitor/microsoft-opentelemetry-exporter-azuremonitor/tests/trace/test_trace.py @@ -136,7 +136,10 @@ def test_export_success(self): exporter.export([test_span]) self.assertEqual(len(exporter._telemetry_processors), 1) self.assertEqual(storage_mock.call_count, 1) - self.assertEqual(len(os.listdir(exporter.storage.path)), 0) + try: + self.assertEqual(len(os.listdir(exporter.storage.path)), 0) + except FileNotFoundError as ex: + pass @mock.patch("microsoft.opentelemetry.exporter.azuremonitor.export.trace.logger") def test_export_exception(self, logger_mock):