def test_client_makes_client_span(client_cls, method, http_server): baseplate = Baseplate({ "myclient.filter.ip_allowlist": "127.0.0.0/8", "myclient.filter.port_denylist": "0" }) baseplate.configure_context({"myclient": client_cls()}) observer = TestBaseplateObserver() baseplate.register(observer) with baseplate.server_context("test") as context: fn = getattr(context.myclient, method.lower()) response = fn(http_server.url) assert response.status_code == 204 server_span_observer = observer.children[0] assert len(server_span_observer.children) == 1 client_span_observer = server_span_observer.children[0] assert client_span_observer.span.name == "myclient.request" assert client_span_observer.on_start_called assert client_span_observer.on_finish_called assert client_span_observer.on_finish_exc_info is None assert client_span_observer.tags["http.url"] == http_server.url assert client_span_observer.tags["http.method"] == method assert client_span_observer.tags["http.status_code"] == 204
def test_connection_error(client_cls): baseplate = Baseplate({ "myclient.filter.ip_allowlist": "127.0.0.0/8", "myclient.filter.port_denylist": "0" }) baseplate.configure_context({"myclient": client_cls()}) observer = TestBaseplateObserver() baseplate.register(observer) bogus_url = "http://localhost:1/" with pytest.raises(requests.exceptions.ConnectionError): with baseplate.server_context("test") as context: context.myclient.get(bogus_url) server_span_observer = observer.children[0] assert len(server_span_observer.children) == 1 client_span_observer = server_span_observer.children[0] assert client_span_observer.span.name == "myclient.request" assert client_span_observer.on_start_called assert client_span_observer.on_finish_called assert client_span_observer.on_finish_exc_info is not None assert client_span_observer.tags["http.url"] == bogus_url assert client_span_observer.tags["http.method"] == "GET" assert "http.status_code" not in client_span_observer.tags
def test_with_server_context(self): baseplate = Baseplate() observer = mock.Mock(spec=BaseplateObserver) baseplate.register(observer) observer.on_server_span_created.assert_not_called() with baseplate.server_context("example") as context: observer.on_server_span_created.assert_called_once() self.assertIsInstance(context, RequestContext)
def test_internal_client_sends_headers(http_server): baseplate = Baseplate() baseplate.configure_context({"internal": InternalRequestsClient()}) with baseplate.server_context("test") as context: setattr(context, "raw_edge_context", b"test payload") response = context.internal.get(http_server.url) assert response.status_code == 204 assert response.text == "" assert http_server.requests[0].method == "GET" assert http_server.requests[0].span.trace_id == context.span.trace_id assert http_server.requests[0].span.parent_id == context.span.id assert http_server.requests[0].span.id != context.span.id assert http_server.requests[0].raw_edge_context == b"test payload"
def test_internal_client_sends_headers(http_server): baseplate = Baseplate() baseplate.configure_context({"internal": InternalRequestsClient()}) with baseplate.server_context("test") as context: setattr(context, "raw_request_context", SERIALIZED_EDGECONTEXT_WITH_NO_AUTH) response = context.internal.get(http_server.url) assert response.status_code == 204 assert response.text == "" assert http_server.requests[0].method == "GET" assert http_server.requests[0].trace.trace_id == context.trace.trace_id assert http_server.requests[0].trace.parent_id == context.trace.id assert http_server.requests[0].trace.id != context.trace.id assert http_server.requests[ 0].raw_request_context == SERIALIZED_EDGECONTEXT_WITH_NO_AUTH
def test_external_client_doesnt_send_headers(http_server): baseplate = Baseplate({ "external.filter.ip_allowlist": "127.0.0.0/8", "external.filter.port_denylist": "0" }) baseplate.configure_context({"external": ExternalRequestsClient()}) with baseplate.server_context("test") as context: setattr(context, "raw_edge_context", b"test payload") response = context.external.get(http_server.url) assert response.status_code == 204 assert response.text == "" assert http_server.requests[0].method == "GET" assert "X-Trace" not in http_server.requests[0].headers assert "X-Parent" not in http_server.requests[0].headers assert "X-Span" not in http_server.requests[0].headers assert "X-Edge-Request" not in http_server.requests[0].headers