Skip to content

Commit

Permalink
Add tests for tracing extensions
Browse files Browse the repository at this point in the history
  • Loading branch information
rafalp committed Aug 7, 2019
1 parent 658de1d commit 4619f54
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 0 deletions.
6 changes: 6 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ def type_defs():
status: Boolean
testContext: String
testRoot: String
error: Boolean
}
type Mutation {
Expand Down Expand Up @@ -51,13 +52,18 @@ def resolve_test_root(root, *_):
return root.get("test")


def resolve_error(*_):
raise Exception("This resolver always errors!")


@pytest.fixture
def resolvers():
query = QueryType()
query.set_field("hello", resolve_hello)
query.set_field("status", resolve_status)
query.set_field("testContext", resolve_test_context)
query.set_field("testRoot", resolve_test_root)
query.set_field("error", resolve_error)
return query


Expand Down
60 changes: 60 additions & 0 deletions tests/tracing/test_apollotracing.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import pytest

from ariadne import graphql
from ariadne.contrib.tracing.apollo import ApolloTracingExtension


@pytest.mark.asyncio
async def test_apollotracing_extension_causes_no_errors_in_query_execution(schema):
_, result = await graphql(
schema, {"query": "{ status }"}, extensions=[ApolloTracingExtension]
)
assert result["data"] == {"status": True}


@pytest.mark.asyncio
async def test_apollotracing_extension_adds_tracing_data_to_result_extensions(schema):
_, result = await graphql(
schema, {"query": "{ status }"}, extensions=[ApolloTracingExtension]
)
assert result["extensions"]["tracing"]["version"] == 1
assert result["extensions"]["tracing"]["startTime"]
assert result["extensions"]["tracing"]["endTime"]
assert result["extensions"]["tracing"]["duration"]
assert result["extensions"]["tracing"]["execution"]


@pytest.mark.asyncio
async def test_apollotracing_extension_adds_resolvers_timing_in_result_extensions(
schema
):
_, result = await graphql(
schema, {"query": "{ status }"}, extensions=[ApolloTracingExtension]
)

resolvers = result["extensions"]["tracing"]["execution"]["resolvers"]

assert len(resolvers) == 1
assert resolvers[0]["path"] == ["status"]
assert resolvers[0]["parentType"] == "Query"
assert resolvers[0]["fieldName"] == "status"
assert resolvers[0]["returnType"] == "Boolean"
assert resolvers[0]["startOffset"]
assert resolvers[0]["duration"]


@pytest.mark.asyncio
async def test_apollotracing_extension_handles_exceptions_in_resolvers(schema):
_, result = await graphql(
schema, {"query": "{ error status }"}, extensions=[ApolloTracingExtension]
)

resolvers = result["extensions"]["tracing"]["execution"]["resolvers"]

assert len(resolvers) == 2
assert resolvers[0]["path"] == ["error"]
assert resolvers[0]["parentType"] == "Query"
assert resolvers[0]["fieldName"] == "error"
assert resolvers[0]["returnType"] == "Boolean"
assert resolvers[0]["startOffset"]
assert resolvers[0]["duration"]
8 changes: 8 additions & 0 deletions tests/tracing/test_opentracing.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,11 @@ async def test_opentracing_extension_sets_filtered_args_on_span(
call("graphql.param.name", "[filtered]"),
]
)


@pytest.mark.asyncio
async def test_opentracing_extension_handles_errors_in_resolvers(schema):
_, result = await graphql(
schema, {"query": "{ error status }"}, extensions=[OpenTracingExtension]
)
assert result["data"] == {"error": None, "status": True}

0 comments on commit 4619f54

Please sign in to comment.