def setUpClass(cls): cls.project_id = "PROJECT" cls.attributes_variety_pack = { "str_key": "str_value", "bool_key": False, "double_key": 1.421, "int_key": 123, } cls.extracted_attributes_variety_pack = ProtoSpan.Attributes( attribute_map={ "str_key": AttributeValue(string_value=TruncatableString( value="str_value", truncated_byte_count=0)), "bool_key": AttributeValue(bool_value=False), "double_key": AttributeValue(string_value=TruncatableString( value="1.4210", truncated_byte_count=0)), "int_key": AttributeValue(int_value=123), }) cls.agent_code = _format_attribute_value( "opentelemetry-python {}; google-cloud-trace-exporter {}".format( _strip_characters( pkg_resources.get_distribution( "opentelemetry-sdk").version), _strip_characters(google_ext_version), )) cls.example_trace_id = "6e0c63257de34c92bf9efcd03927272e" cls.example_span_id = "95bb5edabd45950f" cls.example_time_in_ns = 1589919268850900051 cls.example_time_stamp = _get_time_from_ns(cls.example_time_in_ns) cls.str_300 = "a" * 300 cls.str_256 = "a" * 256 cls.str_128 = "a" * 128
def test_export(self): trace_id = "6e0c63257de34c92bf9efcd03927272e" span_id = "95bb5edabd45950f" resource_info = Resource( { "cloud.account.id": 123, "host.id": "host", "cloud.zone": "US", "cloud.provider": "gcp", "gcp.resource_type": "gce_instance", } ) span_datas = [ Span( name="span_name", context=SpanContext( trace_id=int(trace_id, 16), span_id=int(span_id, 16), is_remote=False, ), parent=None, kind=SpanKind.INTERNAL, resource=resource_info, attributes={"attr_key": "attr_value"}, ) ] cloud_trace_spans = { "name": "projects/{}/traces/{}/spans/{}".format( self.project_id, trace_id, span_id ), "span_id": span_id, "parent_span_id": None, "display_name": TruncatableString( value="span_name", truncated_byte_count=0 ), "attributes": ProtoSpan.Attributes( attribute_map={ "g.co/r/gce_instance/zone": _format_attribute_value("US"), "g.co/r/gce_instance/instance_id": _format_attribute_value( "host" ), "g.co/r/gce_instance/project_id": _format_attribute_value( "123" ), "g.co/agent": _format_attribute_value( "opentelemetry-python {}; google-cloud-trace-exporter {}".format( _strip_characters( pkg_resources.get_distribution( "opentelemetry-sdk" ).version ), _strip_characters(cloud_trace_version), ) ), "attr_key": _format_attribute_value("attr_value"), } ), "links": None, "status": None, "time_events": None, "start_time": None, "end_time": None, } client = mock.Mock() exporter = CloudTraceSpanExporter(self.project_id, client=client) exporter.export(span_datas) self.assertTrue(client.batch_write_spans.called) client.batch_write_spans.assert_called_with( "projects/{}".format(self.project_id), [cloud_trace_spans] )
def test_strip_characters(self): self.assertEqual("0.10.0", _strip_characters("0.10.0b")) self.assertEqual("1.20.5", _strip_characters("1.20.5")) self.assertEqual("3.1.0", _strip_characters("3.1.0beta")) self.assertEqual("4.2.0", _strip_characters("4b.2rc.0a")) self.assertEqual("6.20.15", _strip_characters("b6.20.15"))