Skip to content

Commit

Permalink
feat: implement /detectResource e2e scenario
Browse files Browse the repository at this point in the history
  • Loading branch information
aabmass committed Dec 14, 2022
1 parent 88be17e commit e02a272
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 3 deletions.
1 change: 1 addition & 0 deletions e2e-test-server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
},
"dependencies": {
"@google-cloud/opentelemetry-cloud-trace-exporter": "^1.2.0",
"@google-cloud/opentelemetry-resource-util": "^1.2.0",
"@google-cloud/pubsub": "^3.0.0",
"@grpc/grpc-js": "^1.3.2",
"@opentelemetry/api": "^1.0.0",
Expand Down
31 changes: 28 additions & 3 deletions e2e-test-server/src/scenarios.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ import {
Tracer,
BasicTracerProvider,
BatchSpanProcessor,
TracerConfig,
} from '@opentelemetry/sdk-trace-base';
import {AlwaysOnSampler} from '@opentelemetry/core';
import {Resource} from '@opentelemetry/resources';
import {AlwaysOnSampler} from '@opentelemetry/sdk-trace-base';
import {Resource, envDetector, detectResources} from '@opentelemetry/resources';
import {TraceExporter} from '@google-cloud/opentelemetry-cloud-trace-exporter';
import {GcpDetector} from '@google-cloud/opentelemetry-resource-util';
import * as constants from './constants';
import {context, SpanKind} from '@opentelemetry/api';
import {AsyncHooksContextManager} from '@opentelemetry/context-async-hooks';
Expand All @@ -39,10 +41,14 @@ export interface Response {

context.setGlobalContextManager(new AsyncHooksContextManager());

async function withTracer<R>(f: (tracer: Tracer) => R): Promise<R> {
async function withTracer<R>(
f: (tracer: Tracer) => R,
tracerConfig?: TracerConfig
): Promise<R> {
const tracerProvider = new BasicTracerProvider({
sampler: new AlwaysOnSampler(),
resource: Resource.EMPTY,
...tracerConfig,
});
tracerProvider.addSpanProcessor(
new BatchSpanProcessor(new TraceExporter({projectId: constants.PROJECT_ID}))
Expand Down Expand Up @@ -99,6 +105,24 @@ async function complexTrace(request: Request): Promise<Response> {
});
}

async function detectResource(request: Request): Promise<Response> {
return await withTracer(
async (tracer: Tracer): Promise<Response> => {
const span = tracer.startSpan('resourceDetectionTrace', {
attributes: {[constants.TEST_ID]: request.testId},
});
const traceId = span.spanContext().traceId;
span.end();
return {statusCode: Status.OK, headers: {[constants.TRACE_ID]: traceId}};
},
{
resource: await detectResources({
detectors: [new GcpDetector(), envDetector],
}),
}
);
}

async function notImplementedHandler(): Promise<Response> {
return {statusCode: Status.UNIMPLEMENTED};
}
Expand All @@ -109,6 +133,7 @@ const SCENARIO_TO_HANDLER: {[scenario: string]: ScenarioHandler} = {
'/health': health,
'/basicTrace': basicTrace,
'/complexTrace': complexTrace,
'/detectResource': detectResource,
} as const;

export function getScenarioHandler(scenario: string): ScenarioHandler {
Expand Down

0 comments on commit e02a272

Please sign in to comment.