mirror of
https://chromium.googlesource.com/chromium/tools/depot_tools.git
synced 2026-01-11 18:51:29 +00:00
Logging was missing from __init__.py which broke under mac. This adds that back in and remove unused imports from other files. The os check is also moved up to be the first thing we look for since is_google_host does not work with mac at the moment. Bug:326277821 Change-Id: I3f28838d367eb9583332fd33ad35d71c0851fe4b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/6604498 Commit-Queue: Struan Shrimpton <sshrimp@google.com> Reviewed-by: Ben Pastene <bpastene@chromium.org>
77 lines
2.4 KiB
Python
77 lines
2.4 KiB
Python
# Copyright 2024 The Chromium Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
"""Test the trace implementation."""
|
|
|
|
import contextlib
|
|
from typing import Sequence
|
|
|
|
from opentelemetry import trace as trace_api
|
|
from opentelemetry.sdk import trace as trace_sdk
|
|
from opentelemetry.sdk.trace import export as export_sdk
|
|
|
|
from . import trace as trace
|
|
|
|
|
|
class SpanExporterStub(export_sdk.SpanExporter):
|
|
"""Stub for SpanExporter."""
|
|
|
|
def __init__(self) -> None:
|
|
self._spans = []
|
|
|
|
@property
|
|
def spans(self):
|
|
return self._spans
|
|
|
|
def export(
|
|
self, spans: Sequence[trace_sdk.ReadableSpan]
|
|
) -> export_sdk.SpanExportResult:
|
|
self._spans.extend(spans)
|
|
|
|
return export_sdk.SpanExportResult.SUCCESS
|
|
|
|
|
|
def test_span_to_capture_keyboard_interrupt_as_decorator() -> None:
|
|
"""Test span can capture KeyboardInterrupt as decorator."""
|
|
exporter = SpanExporterStub()
|
|
provider = trace.TracerProvider(trace_sdk.TracerProvider())
|
|
provider.add_span_processor(
|
|
export_sdk.BatchSpanProcessor(span_exporter=exporter))
|
|
tracer = provider.get_tracer(__name__)
|
|
|
|
@tracer.start_as_current_span("test-span")
|
|
def test_function() -> None:
|
|
raise KeyboardInterrupt()
|
|
|
|
with contextlib.suppress(KeyboardInterrupt):
|
|
test_function()
|
|
|
|
provider.shutdown()
|
|
|
|
assert len(exporter.spans) == 1
|
|
assert exporter.spans[0].events[0].name == "exception"
|
|
assert (exporter.spans[0].events[0].attributes["exception.type"] ==
|
|
"KeyboardInterrupt")
|
|
assert exporter.spans[0].status.status_code == trace_api.StatusCode.OK
|
|
|
|
|
|
def test_span_to_capture_keyboard_interrupt_in_context() -> None:
|
|
"""Test span can capture KeyboardInterrupt in context."""
|
|
exporter = SpanExporterStub()
|
|
provider = trace.TracerProvider(trace_sdk.TracerProvider())
|
|
provider.add_span_processor(
|
|
export_sdk.BatchSpanProcessor(span_exporter=exporter))
|
|
tracer = provider.get_tracer(__name__)
|
|
|
|
with contextlib.suppress(KeyboardInterrupt):
|
|
with tracer.start_as_current_span("test-span"):
|
|
raise KeyboardInterrupt()
|
|
|
|
provider.shutdown()
|
|
|
|
assert len(exporter.spans) == 1
|
|
assert exporter.spans[0].events[0].name == "exception"
|
|
assert (exporter.spans[0].events[0].attributes["exception.type"] ==
|
|
"KeyboardInterrupt")
|
|
assert exporter.spans[0].status.status_code == trace_api.StatusCode.OK
|