diff --git a/plugins/node/opentelemetry-instrumentation-graphql/test/graphql-adaptor.ts b/plugins/node/opentelemetry-instrumentation-graphql/test/graphql-adaptor.ts new file mode 100644 index 0000000000..203d0902ad --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-graphql/test/graphql-adaptor.ts @@ -0,0 +1,37 @@ +import type { + GraphQLFieldResolver, + GraphQLSchema, + GraphQLTypeResolver, + Source, +} from "graphql"; +import { graphql as origGraphql, version } from "graphql"; +import { Maybe } from "graphql/jsutils/Maybe"; + +const variantGraphql = origGraphql as Function; + +interface GraphQLArgs { + schema: GraphQLSchema; + source: string | Source; + rootValue?: unknown; + contextValue?: unknown; + variableValues?: Maybe<{ + readonly [variable: string]: unknown; + }>; + operationName?: Maybe; + fieldResolver?: Maybe>; + typeResolver?: Maybe>; +} + +export const graphql = (args: GraphQLArgs) => + version.startsWith("14.") || version.startsWith("15.") + ? variantGraphql( + args.schema, + args.source, + args.rootValue, + args.contextValue, + args.variableValues, + args.operationName, + args.fieldResolver, + args.typeResolver + ) + : variantGraphql(args); diff --git a/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts b/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts index 2829792f14..f4efb44bdc 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts +++ b/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts @@ -40,7 +40,7 @@ graphQLInstrumentation.disable(); // now graphql can be required import { buildSchema } from './schema'; -import { graphql } from 'graphql'; +import { graphql } from './graphql-adaptor'; // Construct a schema, using GraphQL schema language const schema = buildSchema(); @@ -107,7 +107,7 @@ describe('graphql', () => { let spans: ReadableSpan[]; beforeEach(async () => { create({}); - await graphql(schema, sourceList1); + await graphql({schema, source: sourceList1}); spans = exporter.getFinishedSpans(); }); @@ -234,7 +234,7 @@ describe('graphql', () => { beforeEach(async () => { create({}); - await graphql(schema, sourceBookById); + await graphql({schema, source: sourceBookById}); spans = exporter.getFinishedSpans(); }); @@ -322,9 +322,9 @@ describe('graphql', () => { beforeEach(async () => { create({}); - await graphql(schema, sourceFindUsingVariable, null, null, { + await graphql({schema, source: sourceFindUsingVariable, variableValues: { id: 2, - }); + }}); spans = exporter.getFinishedSpans(); }); @@ -420,7 +420,7 @@ describe('graphql', () => { create({ depth: 0, }); - await graphql(schema, sourceList1); + await graphql({schema, source: sourceList1}); spans = exporter.getFinishedSpans(); }); @@ -488,7 +488,7 @@ describe('graphql', () => { create({ mergeItems: true, }); - await graphql(schema, sourceList1); + await graphql({schema, source: sourceList1}); spans = exporter.getFinishedSpans(); }); @@ -555,7 +555,7 @@ describe('graphql', () => { mergeItems: true, depth: 0, }); - await graphql(schema, sourceList1); + await graphql({schema, source: sourceList1}); spans = exporter.getFinishedSpans(); }); @@ -579,7 +579,7 @@ describe('graphql', () => { create({ allowValues: true, }); - await graphql(schema, sourceBookById); + await graphql({schema, source: sourceBookById}); spans = exporter.getFinishedSpans(); }); @@ -669,7 +669,7 @@ describe('graphql', () => { create({ allowValues: true, }); - await graphql(schema, sourceAddBook); + await graphql({schema, source: sourceAddBook}); spans = exporter.getFinishedSpans(); }); @@ -763,9 +763,9 @@ describe('graphql', () => { create({ allowValues: true, }); - await graphql(schema, sourceFindUsingVariable, null, null, { + await graphql({schema, source: sourceFindUsingVariable, variableValues: { id: 2, - }); + }}); spans = exporter.getFinishedSpans(); }); @@ -861,7 +861,7 @@ describe('graphql', () => { create({ // allowValues: true }); - await graphql(schema, sourceAddBook); + await graphql({schema, source: sourceAddBook}); spans = exporter.getFinishedSpans(); }); @@ -954,7 +954,7 @@ describe('graphql', () => { beforeEach(async () => { create({}); - await graphql(schema, badQuery); + await graphql({schema, source: badQuery}); spans = exporter.getFinishedSpans(); }); @@ -989,7 +989,7 @@ describe('graphql', () => { beforeEach(async () => { create({}); - await graphql(schema, queryInvalid); + await graphql({schema, source: queryInvalid}); spans = exporter.getFinishedSpans(); }); @@ -1051,7 +1051,7 @@ describe('graphql', () => { span.setAttribute(dataAttributeName, JSON.stringify(data)); }, }); - graphqlResult = await graphql(schema, sourceList1); + graphqlResult = await graphql({schema, source: sourceList1}); spans = exporter.getFinishedSpans(); }); @@ -1074,7 +1074,7 @@ describe('graphql', () => { throw 'some kind of failure!'; }, }); - graphqlResult = await graphql(schema, sourceList1); + graphqlResult = await graphql({schema, source: sourceList1}); spans = exporter.getFinishedSpans(); }); @@ -1091,7 +1091,7 @@ describe('graphql', () => { responseHook: invalidTypeHook as GraphQLInstrumentationExecutionResponseHook, }); - graphqlResult = await graphql(schema, sourceList1); + graphqlResult = await graphql({schema, source: sourceList1}); spans = exporter.getFinishedSpans(); });