Co-authored-by: Daniel Dyla <dyladan@users.noreply.github.com>
This commit is contained in:
parent
f731c65201
commit
aac3f56fb5
|
|
@ -14,13 +14,17 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks';
|
import {
|
||||||
|
AsyncHooksContextManager,
|
||||||
|
AsyncLocalStorageContextManager,
|
||||||
|
} from '@opentelemetry/context-async-hooks';
|
||||||
import {
|
import {
|
||||||
BasicTracerProvider,
|
BasicTracerProvider,
|
||||||
SDKRegistrationConfig,
|
SDKRegistrationConfig,
|
||||||
} from '@opentelemetry/tracing';
|
} from '@opentelemetry/tracing';
|
||||||
import { DEFAULT_INSTRUMENTATION_PLUGINS, NodeTracerConfig } from './config';
|
import { DEFAULT_INSTRUMENTATION_PLUGINS, NodeTracerConfig } from './config';
|
||||||
import { PluginLoader, Plugins } from './instrumentation/PluginLoader';
|
import { PluginLoader, Plugins } from './instrumentation/PluginLoader';
|
||||||
|
import * as semver from 'semver';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register this TracerProvider for use with the OpenTelemetry API.
|
* Register this TracerProvider for use with the OpenTelemetry API.
|
||||||
|
|
@ -53,7 +57,10 @@ export class NodeTracerProvider extends BasicTracerProvider {
|
||||||
|
|
||||||
register(config: SDKRegistrationConfig = {}) {
|
register(config: SDKRegistrationConfig = {}) {
|
||||||
if (config.contextManager === undefined) {
|
if (config.contextManager === undefined) {
|
||||||
config.contextManager = new AsyncHooksContextManager();
|
const ContextManager = semver.gte(process.version, '14.8.0')
|
||||||
|
? AsyncLocalStorageContextManager
|
||||||
|
: AsyncHooksContextManager;
|
||||||
|
config.contextManager = new ContextManager();
|
||||||
config.contextManager.enable();
|
config.contextManager.enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,11 +21,19 @@ import {
|
||||||
trace,
|
trace,
|
||||||
ProxyTracerProvider,
|
ProxyTracerProvider,
|
||||||
} from '@opentelemetry/api';
|
} from '@opentelemetry/api';
|
||||||
import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks';
|
import {
|
||||||
|
AsyncHooksContextManager,
|
||||||
|
AsyncLocalStorageContextManager,
|
||||||
|
} from '@opentelemetry/context-async-hooks';
|
||||||
import { NoopContextManager } from '@opentelemetry/context-base';
|
import { NoopContextManager } from '@opentelemetry/context-base';
|
||||||
import { CompositePropagator } from '@opentelemetry/core';
|
import { CompositePropagator } from '@opentelemetry/core';
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import { NodeTracerProvider } from '../src';
|
import { NodeTracerProvider } from '../src';
|
||||||
|
import * as semver from 'semver';
|
||||||
|
|
||||||
|
const DefaultContextManager = semver.gte(process.version, '14.8.0')
|
||||||
|
? AsyncLocalStorageContextManager
|
||||||
|
: AsyncHooksContextManager;
|
||||||
|
|
||||||
describe('API registration', () => {
|
describe('API registration', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
|
@ -38,9 +46,7 @@ describe('API registration', () => {
|
||||||
const tracerProvider = new NodeTracerProvider();
|
const tracerProvider = new NodeTracerProvider();
|
||||||
tracerProvider.register();
|
tracerProvider.register();
|
||||||
|
|
||||||
assert.ok(
|
assert.ok(context['_getContextManager']() instanceof DefaultContextManager);
|
||||||
context['_getContextManager']() instanceof AsyncHooksContextManager
|
|
||||||
);
|
|
||||||
assert.ok(
|
assert.ok(
|
||||||
propagation['_getGlobalPropagator']() instanceof CompositePropagator
|
propagation['_getGlobalPropagator']() instanceof CompositePropagator
|
||||||
);
|
);
|
||||||
|
|
@ -96,9 +102,7 @@ describe('API registration', () => {
|
||||||
propagation['_getGlobalPropagator']() instanceof NoopTextMapPropagator
|
propagation['_getGlobalPropagator']() instanceof NoopTextMapPropagator
|
||||||
);
|
);
|
||||||
|
|
||||||
assert.ok(
|
assert.ok(context['_getContextManager']() instanceof DefaultContextManager);
|
||||||
context['_getContextManager']() instanceof AsyncHooksContextManager
|
|
||||||
);
|
|
||||||
|
|
||||||
const apiTracerProvider = trace.getTracerProvider();
|
const apiTracerProvider = trace.getTracerProvider();
|
||||||
assert.ok(apiTracerProvider instanceof ProxyTracerProvider);
|
assert.ok(apiTracerProvider instanceof ProxyTracerProvider);
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,10 @@ import {
|
||||||
trace,
|
trace,
|
||||||
ProxyTracerProvider,
|
ProxyTracerProvider,
|
||||||
} from '@opentelemetry/api';
|
} from '@opentelemetry/api';
|
||||||
import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks';
|
import {
|
||||||
|
AsyncHooksContextManager,
|
||||||
|
AsyncLocalStorageContextManager,
|
||||||
|
} from '@opentelemetry/context-async-hooks';
|
||||||
import { NoopContextManager } from '@opentelemetry/context-base';
|
import { NoopContextManager } from '@opentelemetry/context-base';
|
||||||
import { CompositePropagator } from '@opentelemetry/core';
|
import { CompositePropagator } from '@opentelemetry/core';
|
||||||
import { ConsoleMetricExporter, MeterProvider } from '@opentelemetry/metrics';
|
import { ConsoleMetricExporter, MeterProvider } from '@opentelemetry/metrics';
|
||||||
|
|
@ -81,6 +84,10 @@ const mockedIdentityResponse = {
|
||||||
};
|
};
|
||||||
const mockedHostResponse = 'my-hostname';
|
const mockedHostResponse = 'my-hostname';
|
||||||
|
|
||||||
|
const DefaultContextManager = semver.gte(process.version, '14.8.0')
|
||||||
|
? AsyncLocalStorageContextManager
|
||||||
|
: AsyncHooksContextManager;
|
||||||
|
|
||||||
describe('Node SDK', () => {
|
describe('Node SDK', () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
// Disable attempted load of default plugins
|
// Disable attempted load of default plugins
|
||||||
|
|
@ -127,7 +134,7 @@ describe('Node SDK', () => {
|
||||||
assert.ok(metrics.getMeterProvider() instanceof NoopMeterProvider);
|
assert.ok(metrics.getMeterProvider() instanceof NoopMeterProvider);
|
||||||
|
|
||||||
assert.ok(
|
assert.ok(
|
||||||
context['_getContextManager']() instanceof AsyncHooksContextManager
|
context['_getContextManager']() instanceof DefaultContextManager
|
||||||
);
|
);
|
||||||
assert.ok(
|
assert.ok(
|
||||||
propagation['_getGlobalPropagator']() instanceof CompositePropagator
|
propagation['_getGlobalPropagator']() instanceof CompositePropagator
|
||||||
|
|
@ -151,7 +158,7 @@ describe('Node SDK', () => {
|
||||||
assert.ok(metrics.getMeterProvider() instanceof NoopMeterProvider);
|
assert.ok(metrics.getMeterProvider() instanceof NoopMeterProvider);
|
||||||
|
|
||||||
assert.ok(
|
assert.ok(
|
||||||
context['_getContextManager']() instanceof AsyncHooksContextManager
|
context['_getContextManager']() instanceof DefaultContextManager
|
||||||
);
|
);
|
||||||
assert.ok(
|
assert.ok(
|
||||||
propagation['_getGlobalPropagator']() instanceof CompositePropagator
|
propagation['_getGlobalPropagator']() instanceof CompositePropagator
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue