From 5af9743417e5f93cd040ad389fca317b440777db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Rodr=C3=ADguez?= Date: Thu, 3 Oct 2019 23:49:11 +0200 Subject: [PATCH 1/2] Add new method to set span status. --- opencensus/trace/span.py | 14 ++++++++++++++ tests/unit/trace/test_span.py | 25 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/opencensus/trace/span.py b/opencensus/trace/span.py index cb8e42dae..37d745bbe 100644 --- a/opencensus/trace/span.py +++ b/opencensus/trace/span.py @@ -362,6 +362,20 @@ def set_status(self, status): raise TypeError("Type Error: received {}, but requires Status.". format(type(status).__name__)) + def set_status_fields(self, code, message=None, details=None): + """Set span status. + + :type code: int + :param code: An enum value of :class: `~google.rpc.Code`. + + :type message: str + :param message: A developer-facing error message, should be in English. + + :type details: list + :param details: A list of messages that carry the error details. + """ + self.set_status(status_module.Status(code, message, details)) + def start(self): """Set the start time for a span.""" self.start_time = utils.to_iso_str() diff --git a/tests/unit/trace/test_span.py b/tests/unit/trace/test_span.py index f7ddf5d7b..19a6c32d1 100644 --- a/tests/unit/trace/test_span.py +++ b/tests/unit/trace/test_span.py @@ -201,6 +201,31 @@ def test_set_status(self): self.assertEqual(span.status.description, message) self.assertEqual(span.status.details, details) + def test_set_status_fields(self): + span_name = 'test_span_name' + span = self._make_one(span_name) + + code = 1 + message = 'ok' + details = {'object': 'ok'} + span.set_status_fields(code, message, details) + + self.assertEqual(span.status.canonical_code, code) + self.assertEqual(span.status.description, message) + self.assertEqual(span.status.details, details) + + def test_set_status_fields_without_details(self): + span_name = 'test_span_name' + span = self._make_one(span_name) + + code = 1 + message = 'ok' + span.set_status_fields(code, message) + + self.assertEqual(span.status.canonical_code, code) + self.assertEqual(span.status.description, message) + self.assertEqual(span.status.details, None) + def test_start(self): span_name = 'root_span' span = self._make_one(span_name) From 3f33baebb79b87fc7ac4d00e4a86c469a47ca996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Rodr=C3=ADguez?= Date: Sat, 5 Oct 2019 20:01:56 +0200 Subject: [PATCH 2/2] Fix lint errors --- opencensus/trace/span.py | 4 ++-- tests/unit/trace/test_span.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/opencensus/trace/span.py b/opencensus/trace/span.py index 37d745bbe..796e56000 100644 --- a/opencensus/trace/span.py +++ b/opencensus/trace/span.py @@ -364,10 +364,10 @@ def set_status(self, status): def set_status_fields(self, code, message=None, details=None): """Set span status. - + :type code: int :param code: An enum value of :class: `~google.rpc.Code`. - + :type message: str :param message: A developer-facing error message, should be in English. diff --git a/tests/unit/trace/test_span.py b/tests/unit/trace/test_span.py index 19a6c32d1..958c28e66 100644 --- a/tests/unit/trace/test_span.py +++ b/tests/unit/trace/test_span.py @@ -204,7 +204,7 @@ def test_set_status(self): def test_set_status_fields(self): span_name = 'test_span_name' span = self._make_one(span_name) - + code = 1 message = 'ok' details = {'object': 'ok'} @@ -217,7 +217,7 @@ def test_set_status_fields(self): def test_set_status_fields_without_details(self): span_name = 'test_span_name' span = self._make_one(span_name) - + code = 1 message = 'ok' span.set_status_fields(code, message)