def test_opentracing_extension_uses_global_tracer(schema, global_tracer_mock): graphql( schema, {"query": '{ status hello(name: "Bob") }'}, extensions=[OpenTracingExtension], ) global_tracer_mock.assert_called_once()
def test_opentracing_extension_calls_custom_arg_filter(schema, mocker): arg_filter = mocker.Mock(return_value={}) graphql( schema, {"query": '{ hello(name: "Bob") }'}, extensions=[opentracing_extension(arg_filter=arg_filter)], ) arg_filter.assert_called_once_with({"name": "Bob"}, ANY)
def test_opentracing_extension_sets_graphql_component_tag_on_root_span( schema, active_span_mock): graphql( schema, {"query": '{ status hello(name: "Bob") }'}, extensions=[OpenTracingExtension], ) active_span_mock.span.set_tag.assert_called_once_with( tags.COMPONENT, "graphql")
def test_opentracing_extension_sets_filtered_args_on_span( schema, active_span_mock, mocker): arg_filter = mocker.Mock(return_value={"name": "[filtered]"}) graphql( schema, {"query": '{ hello(name: "Bob") }'}, extensions=[opentracing_extension(arg_filter=arg_filter)], ) span_mock = active_span_mock.__enter__.return_value.span span_mock.set_tag.assert_has_calls([ call("component", "graphql"), call("graphql.parentType", "Query"), call("graphql.path", "hello"), call("graphql.param.name", "[filtered]"), ])
def test_opentracing_extension_causes_no_errors_in_query_execution(schema): _, result = graphql( schema, {"query": '{ status hello(name: "Bob") }'}, extensions=[OpenTracingExtension], ) assert result == {"data": {"hello": "Hello, Bob!", "status": True}}
async def test_apollotracing_extension_handles_exceptions_in_resolvers( schema, freeze_microtime, snapshot # pylint: disable=unused-argument ): _, result = graphql(schema, {"query": "{ testError }"}, extensions=[ApolloTracingExtension]) snapshot.assert_match(result["data"])
async def test_apollotracing_extension_adds_tracing_data_to_result_extensions( schema, freeze_microtime, snapshot # pylint: disable=unused-argument ): _, result = graphql(schema, {"query": "{ status }"}, extensions=[ApolloTracingExtension]) snapshot.assert_match(result)
def run(): logging.basicConfig(level=logging.DEBUG) q = {"query": "{ hello { message } }"} atask = graphql(schema, q, debug=True, context_value={"request": { "HTTP_USER_AGENT": "World" }}) print(asyncio.run(atask, debug=True))
def test_opentracing_extension_handles_errors_in_resolvers(schema): _, result = graphql(schema, {"query": "{ testError status }"}, extensions=[OpenTracingExtension]) assert result["data"] == {"testError": None, "status": True}
def test_opentracing_extension_creates_span_for_field(schema, global_tracer_mock): graphql(schema, {"query": "{ status }"}, extensions=[OpenTracingExtension]) global_tracer_mock.return_value.start_active_span.assert_any_call("status")
def test_opentracing_extension_doesnt_break_introspection(schema): introspection_query = get_introspection_query(descriptions=True) _, result = graphql(schema, {"query": introspection_query}, extensions=[OpenTracingExtension]) assert "errors" not in result
def execute(schema, query, *args, **kwargs): from ariadne import graphql return graphql(schema, {"query": query}, *args, **kwargs)
async def test_apollotracing_extension_causes_no_errors_in_query_execution( schema): _, result = graphql(schema, {"query": "{ status }"}, extensions=[ApolloTracingExtension]) assert result["data"] == {"status": True}
# Ariadne uses dedicated objects query = ObjectType("Query") # Map resolvers to fields in Query type using decorator syntax... @query.field("hello") def resolve_hello(_, info): request = info.context["request"] user_agent = request.get("HTTP_USER_AGENT", "guest") return "Hello, %s!" % user_agent type_defs = gql(""" type Query { hello: String! } """) logging.basicConfig(level=logging.DEBUG) schema = make_executable_schema(type_defs, query) query = {"query": "{ hello }"} atask = graphql(schema, query, debug=True, context_value={"request": { "HTTP_USER_AGENT": "World" }}) print(asyncio.run(atask, debug=True))